数据加密
日志服务支持通过密钥管理服务KMS(Key Management Service)对数据进行加密存储,提供数据静态保护能力。本文主要介绍日志服务的数据加密机制以及使用KMS进行数据加密的操作步骤。
前提条件
已开通密钥管理服务。更多信息,请参见开通密钥管理服务。数据加密机制
日志服务支持如下两种加密类型机制:
- 通过日志服务自带的服务密钥加密
日志服务为每个Logstore生成独立的数据加密密钥,用于数据加密。该加密密钥永不过期。
支持的数据加密算法为AES算法(默认)和国密算法SM4。
- 通过用户自带密钥(BYOK)加密
您可以在KMS控制台上创建主密钥CMK,并授权日志服务相应的权限。日志服务调用KMS接口时,使用该CMK创建用于数据加密的密钥。当您的主密钥CMK被删除或禁用后,BYOK密钥失效。
重要 由KMS BYOK生成的主密钥(CMK)失效后,Logstore上的所有读写请求都会失败。
步骤一:BYOK授权
如果使用BYOK加密,则需先完成RAM授权。
- 登录RAM控制台。
- 创建RAM角色。更多信息,请参见步骤一:创建RAM角色。
- 修改RAM角色的信任策略。更多信息,请参见修改RAM角色的信任策略。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
- 为RAM角色授权AliyunKMSReadOnlyAccess、AliyunKMSCryptoUserAccess权限。更多信息,请参见为RAM角色授权。
- 如果是使用RAM用户操作BYOK加密,还需对RAM用户授予PassRole权限,即创建自定义授权策略,并完成授权。更多信息,请参见创建自定义权限策略、为RAM用户授权。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram::*" #RAM角色的ARN。更多信息,请参见如何获取RAM角色标识。 } ] }
步骤二:配置数据加密
在调用CreateLogStore API创建Logstore或UpdateLogStore API修改Logstore时,添加如下encrypt_conf参数完成加密设置。
重要 配置后,不支持修改加密算法和加密类型,您只能通过enbale参数开启或者关闭加密功能,且后续UpdateLogstore时,需每次携带完整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。
}
}