日志加密

如果您希望对云防火墙的日志分析服务进行加密存储,可以通过日志服务自带的服务密钥或者通过用户自带密钥(BYOK)对数据进行加密存储。本文介绍对日志数据进行加密。

数据加密机制

日志服务支持如下两种加密类型机制:

  • 通过日志服务自带的服务密钥加密

    日志服务为每个Logstore生成独立的数据加密密钥,用于数据加密。该加密密钥永不过期。

    支持的数据加密算法为AES算法(默认)和国密算法SM4。

  • 通过用户自带密钥(BYOK)加密

    您可以在KMS控制台上创建主密钥CMK,并授权日志服务相应的权限。日志服务调用KMS接口时,使用该CMK创建用于数据加密的密钥。当您的主密钥CMK被删除或禁用后,BYOK密钥失效。

    重要

    由KMS BYOK生成的主密钥(CMK)失效后,Logstore上的所有读写请求都会失败。

使用限制

配置数据加密时,您第一次选定加密机制后,后续您无法修改数据加密机制。也不支持修改加密算法和加密类型,您只能通过enable参数开启或者关闭加密功能,且后续更新Logstore时,需每次携带完整encrypt_conf参数。

例如,您第一次选择的是通过日志服务自带的服务密钥加密机制,后续您无法修改为通过用户自带密钥(BYOK)加密方式。

通过日志服务自带的服务密钥加密

在调用CreateLogStore API创建Logstore或更新Logstore API修改Logstore时,添加如下encrypt_conf(配置数据加密字段)参数完成加密设置。

encrypt_conf字段的数据结构如下表所示。其中,user_cmk_info字段不填

名称类型描述示例值
object

加密配置数据结构。

enableboolean

是否启用数据加密。

  • true:是
  • false:否
true
encrypt_typestring

加密算法,只支持 default 和 sm4。当 enable 为 true 时,此项必选。

default
user_cmk_infoEncryptUserCmkConf

可选字段。如果设置该字段,则表示使用自带密钥(BYOK),否则使用日志服务的服务密钥。

{ "cmk_key_id" : "f5136b95-2420-ab31-xxxxxxxxx" "arn" : "acs:ram::13234:role/logsource" "region_id" : "cn-hangzhou" }

通过密钥管理的用户自带密钥(BYOK)加密

前提条件

已开通密钥管理服务。更多信息,请参见开通密钥管理服务

步骤一:BYOK授权

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

  1. 登录RAM控制台

  2. 创建RAM角色。更多信息,请参见步骤一:创建RAM角色

  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角色标识。
            }
        ]
    }

步骤二:配置数据加密

您在云防火墙控制台上开通日志服务后,云防火墙将自动创建一个专属Project和一个专属Logstore。您需要调用更新Logstore进行数据加密,添加encrypt_conf(配置数据加密字段)参数完成加密设置。

调用更新Logstore前需要先使用查看Logstore获取Logstore的原配置,在此基础上修改后,作为参数传入到更新Logstore中。

encrypt_conf字段的数据结构如下表所示。其中,user_cmk_info字段必须填写

名称类型描述示例值
object

加密配置数据结构。

enableboolean

是否启用数据加密。

  • true:是
  • false:否
true
encrypt_typestring

加密算法,只支持 default 和 sm4。当 enable 为 true 时,此项必选。

default
user_cmk_infoEncryptUserCmkConf

可选字段。如果设置该字段,则表示使用自带密钥(BYOK),否则使用日志服务的服务密钥。

{ "cmk_key_id" : "f5136b95-2420-ab31-xxxxxxxxx" "arn" : "acs:ram::13234:role/logsource" "region_id" : "cn-hangzhou" }
EncryptUserCmkConf数据结构
名称类型描述示例值
object

用户加密配置数据结构。

cmk_key_idstring

BYOK 的主密钥 ID。

f5136b95-2420-ab31-xxxxxxxxx
arnstring

RAM 角色的 ARN。

acs:ram::13234:role/logsource
region_idstring

主密钥所在的地域 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。更多信息,请参见如何获取RAM角色标识。
          "region_id" : ""           # 主密钥所在的地域ID。
    }
}

相关文档

涉及日志服务的API如下: