日志服务支持通过密钥管理服务KMS(Key Management Service)对数据进行加密存储,提供数据静态保护能力。本文主要介绍日志服务的数据加密机制以及使用KMS进行数据加密的操作步骤。
前提条件
已开通密钥管理服务。更多信息,请参见购买专属KMS实例。
数据加密机制
日志服务支持如下两种加密类型机制。
通过日志服务自带的服务密钥加密
特点:
-
简便性:用户无需额外操作,加密和密钥管理完全由日志服务负责,可以减轻用户的管理负担。
-
密钥独立性:为每个LogStore生成独立的数据加密密钥,从而增强了数据安全性。
-
持久性:这种数据加密密钥永不过期,确保了数据加密的稳定性和持久性。
-
支持的数据加密算法:AES算法(默认)、国密算法SM4。
使用场景:
-
当用户希望快速部署数据加密而无需自行管理密钥时。
-
用户对密钥管理没有特定要求,更倾向于让服务提供商管理密钥。
-
需要确保数据加密密钥的长期有效性和稳定性。
适用群体:
小型企业或个人用户,不希望处理复杂的密钥管理任务,只希望使用安全、简单的日志加密方式。
通过用户自带密钥(BYOK)加密
特点:
-
控制性:用户完全控制密钥的生命周期,包括创建、轮转和删除等。
-
灵活性:用户可以根据需要轻松更新或更换密钥,增强了安全性和灵活性。
-
主动性:用户需要主动管理密钥,包括在KMS控制台上创建和授权主密钥(CMK)使用权限。
使用场景:
-
当组织有严格的安全合规要求,需要自主控制加密密钥时。
-
用户希望能主动管理和轮转加密密钥,以满足更高安全标准的场景。
-
用户希望在密钥被泄露或有其他安全风险时,可以迅速更换或删除密钥,以保护数据安全。
适用群体:
大型企业或金融机构,对数据保护和合规性有严格要求,需要使用自己的密钥管理策略,并且有专门的团队来管理相关密钥。
当您的主密钥被删除或禁用后,BYOK密钥失效。
由KMS BYOK生成的主密钥失效后,LogStore上的所有读写请求都会失败。
使用限制
配置数据加密时,您第一次选定加密机制后,后续您无法修改数据加密机制。也不支持修改加密算法和加密类型,您只能通过enable参数开启或者关闭加密功能,且后续更新LogStore时,需每次携带完整encrypt_conf参数。
例如,您第一次选择的是通过日志服务自带的服务密钥加密机制,后续您无法修改为通过用户自带密钥(BYOK)加密方式。
通过日志服务自带的服务密钥加密
在调用CreateLogStore API创建LogStore或UpdateLogStore API修改LogStore时,添加如下encrypt_conf(配置数据加密字段)参数完成加密设置。
encrypt_conf字段的数据结构如下表所示。其中,user_cmk_info字段不填。
|
名称 |
类型 |
描述 |
示例值 |
|---|---|---|---|
|
object |
加密配置数据结构。 |
||
| enable |
boolean |
是否启用数据加密。
|
true |
| encrypt_type |
string |
加密算法类型,支持 default、m4、sm4_ecb、sm4_cbc、sm4_gcm、aes_ecb、aes_cbc、aes_cfb、aes_ofb、aes_gcm。当 enable 为 true 时,此项必选。 |
default |
| user_cmk_info | EncryptUserCmkConf |
可选字段。如果设置该字段,则表示使用自带密钥(BYOK),否则使用日志服务的服务密钥。 |
{ "cmk_key_id" : "f5136b95-2420-ab31-xxxxxxxxx" "arn" : "acs:ram::13234:role/logsource" "region_id" : "cn-hangzhou" } |
通过密钥管理的用户自带密钥(BYOK)加密
前提条件
已开通密钥管理服务。更多信息,请参见购买专属KMS实例。
步骤一:BYOK授权
如果使用BYOK加密,则需先完成RAM授权。
-
登录RAM控制台。
-
创建可信实体为阿里云服务的RAM角色,按如下说明配置。
角色类型选择普通服务角色,角色名称填写
KMS-TEST,选择受信服务为日志服务。 -
为RAM角色授权AliyunKMSReadOnlyAccess、AliyunKMSCryptoUserAccess权限。更多信息,请参见为RAM角色授权。
-
授予PassRole权限。当使用主账号操作BYOK加密配置时,可省略相关步骤。若使用RAM用户操作BYOK加密配置,则需创建自定义权限策略,并管理RAM用户的权限。
下述策略中的Resource值,需要替换为步骤二创建的RAM角色的ARN。关于如何查看角色ARN,请参见如何查看RAM角色的ARN?。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram::<account-id>:role/<role-name>" } ] }
步骤二:配置数据加密
配置后,不支持修改加密算法和加密类型,您只能通过enable参数开启或者关闭加密功能,且后续UpdateLogStore时,需每次携带完整encrypt_conf参数。
对于已创建的LogStore,您需要调用UpdateLogStore进行数据加密,添加encrypt_conf(配置数据加密字段)参数完成加密设置。
调用UpdateLogStore前需要先使用GetLogStore获取LogStore的原配置,在此基础上修改后,作为参数传入到UpdateLogStore中。
encrypt_conf字段的数据结构如下表所示。其中,user_cmk_info字段必须填写。
|
名称 |
类型 |
描述 |
示例值 |
|---|---|---|---|
|
object |
加密配置数据结构。 |
||
| enable |
boolean |
是否启用数据加密。
|
true |
| encrypt_type |
string |
加密算法类型,支持 default、m4、sm4_ecb、sm4_cbc、sm4_gcm、aes_ecb、aes_cbc、aes_cfb、aes_ofb、aes_gcm。当 enable 为 true 时,此项必选。 |
default |
| user_cmk_info | EncryptUserCmkConf |
可选字段。如果设置该字段,则表示使用自带密钥(BYOK),否则使用日志服务的服务密钥。 |
{ "cmk_key_id" : "f5136b95-2420-ab31-xxxxxxxxx" "arn" : "acs:ram::13234:role/logsource" "region_id" : "cn-hangzhou" } |
EncryptUserCmkConf数据结构
|
名称 |
类型 |
描述 |
示例值 |
|
object |
用户加密配置数据结构。 |
||
|
cmk_key_id |
string |
BYOK 的主密钥 ID。 |
f5136b95-2420-ab31-xxxxxxxxx |
|
arn |
string |
步骤一创建RAM角色的ARN。 |
acs:ram::13234:role/logsource |
|
region_id |
string |
主密钥所在的地域 ID。 |
cn-hangzhou |
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。
"region_id" : "" # 主密钥所在的地域ID。
}
}
相关文档
涉及日志服务的API如下: