日志服务支持通过密钥管理服务KMS(Key Management Service)对数据进行加密存储,提供数据静态保护能力。本文主要介绍日志服务的数据加密机制以及使用KMS进行数据加密的操作步骤。

前提条件

已开通密钥管理服务,详情请参见开通密钥管理服务

数据加密机制

日志服务通过KMS托管密钥,实现数据加密功能。数据加密机制如下:
  • 日志服务支持的数据加密算法为AES算法和国密算法M4。
  • KMS生成和管理您的主密钥CMK(Customer Master Key),并保障密钥的安全性。
  • 日志服务支持如下两种加密类型:
    • 通过日志服务的服务密钥加密:日志服务为每个Logstore生成独立的数据加密密钥,用于数据加密。该加密密钥永不过期。
    • 通过用户自带密钥(BYOK)加密:您可以在KMS控制台上创建主密钥CMK,并授权日志服务相应的权限。日志服务调用KMS接口时,使用该CMK创建用于数据加密的密钥。当您的主密钥CMK被删除或禁用后,BYOK密钥失效。
注意
  • 仅调用CreateLogstore API创建Logstore时,可设置数据加密,即可配置加密算法和加密类型。配置后,不支持修改。
  • 由KMS BYOK生成的主密钥(CMK)失效后,Logstore上的所有读写请求都会失败。

BYOK授权

如果使用BYOK加密,则需先完成RAM授权。

  1. 登录RAM控制台
  2. 创建RAM角色,操作步骤请参见步骤1:创建用户角色并指定受信云账号
  3. 修改RAM角色的信任策略,操作步骤请参见修改RAM角色的信任策略
    {
        "Statement": [
            {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "log.aliyuncs.com"
                    ]
                }
            }
        ],
        "Version": "1"
    }
  4. 为RAM角色授权AliyunKMSReadOnlyAccess、AliyunKMSCryptoUserAccess权限,操作步骤请参见为RAM角色授权
    授权
  5. 如果是使用RAM用户操作BYOK加密,还需对RAM用户授予PassRole权限,即创建自定义授权策略,并完成授权。操作步骤请参见创建自定义策略为RAM用户授权
    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ram:PassRole",
                "Resource": "acs:ram::*"   #RAM角色的ARN,详情请参见如何获取RAM角色标识。
            }
        ]
    }

配置数据加密

在调用CreateLogstore API创建Logstore时,添加如下encrypt_conf节点完成加密设置。
encrypt_conf = {
      "enable" : True,                 # 是否启用加密。
    "encrypt_type" : "default"         # 加密算法,只支持default和m4。
    "user_cmk_info" :                  # 可选字段。如果设置该字段,则表示使用自带密钥(BYOK),否则使用日志服务的服务密钥。
    {
           "cmk_key_id" : ""           # BYOK的主密钥ID,例如f5136b95-2420-ab31-xxxxxxxxx。
          "arn" :  ""                  # RAM角色的ARN,详情请参见如何获取RAM角色标识。
          "region_id" : ""             # 主密钥所在的地域ID。
    }
}