使用 Amazon KMS 对异常检测器及其结果进行加密
异常检测器数据在 CloudWatch Logs 中始终是加密的。默认情况下,CloudWatch Logs 对静态数据使用服务器端加密。此外,您也可以使用 Amazon Key Management Service 进行这一加密。如果这样做,则使用 Amazon KMS 密钥进行加密。通过将 KMS 密钥与异常检测器关联,可以在异常检测器级别启用使用 Amazon KMS 进行加密。
重要
CloudWatch Logs 仅支持对称 KMS 密钥。请勿使用非对称密钥对日志组中的数据进行加密。有关更多信息,请参阅使用对称和非对称密钥。
限制
-
要执行下列步骤,您必须具有以下权限:
kms:CreateKey、kms:GetKeyPolicy和kms:PutKeyPolicy。 -
将密钥与异常检测器关联或取消关联后,该操作最多可能需要五分钟才能生效。
-
如果撤消 CloudWatch Logs 对关联密钥的访问权限或删除关联的 KMS 密钥,您将无法再检索 CloudWatch Logs 中的加密数据。
步骤 1:创建 Amazon KMS 密钥
要创建 KMS 密钥,请使用以下 create-key 命令:
aws kms create-key
输出包含密钥的密钥 ID 和 Amazon 资源名称(ARN)。下面是示例输出:
{
"KeyMetadata": {
"Origin": "AWS_KMS",
"KeyId": "key-default-1",
"Description": "",
"KeyManager": "CUSTOMER",
"Enabled": true,
"CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
"KeyUsage": "ENCRYPT_DECRYPT",
"KeyState": "Enabled",
"CreationDate": 1478910250.94,
"Arn": "arn:aws:kms:us-west-2:123456789012:key/key-default-1",
"AWSAccountId": "123456789012",
"EncryptionAlgorithms": [
"SYMMETRIC_DEFAULT"
]
}
}
步骤 2:设置 KMS 密钥的权限
默认情况下,所有 Amazon KMS 密钥都是私有的。只有资源所有者可以使用它来加密和解密数据。但是,资源拥有者可以将 KMS 密钥的访问权限授予其他用户和资源。在此步骤中,您将授予 CloudWatch Logs 服务主体权限以使用该密钥。此服务主体必须位于存储 KMS 密钥的相同 Amazon 区域内。
作为最佳实践,我们建议您将 KMS 密钥的使用限制为您指定的 Amazon 账户或异常检测器。
首先,使用以下 policy.jsonget-key-policy 命令将您的 KMS 密钥默认策略保存为 :
aws kms get-key-policy --key-idkey-id--policy-name default --output text > ./policy.json
在文本编辑器中打开 policy.json 文件,然后从以下语句之一中添加粗体的部分。使用逗号将现有语句与新语句分隔。这些语句使用 Condition 部分来增强 Amazon KMS 密钥的安全性。有关更多信息,请参阅 Amazon KMS 密钥和加密上下文。
此示例中的 Condition 部分将 Amazon KMS 密钥的使用限制于指定账户,但它可用于任何异常检测器。
最后,使用以下 put-key-policy 命令添加更新后的策略:
aws kms put-key-policy --key-idkey-id--policy-name default --policy file://policy.json
步骤 3:将 KMS 密钥与异常检测器关联
当在控制台中或者使用 Amazon CLI 或 API 创建 KMS 密钥时,您可以将 KMS 密钥与异常检测器关联。
步骤 4:取消密钥与异常检测器的关联
当密钥与异常检测器关联后,您无法更新该密钥。移除密钥的唯一方法是删除异常检测器,然后重新创建它。