使用对异常检测器及其结果进行加密 Amazon KMS - Amazon CloudWatch 日志
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用对异常检测器及其结果进行加密 Amazon KMS

异常检测器数据始终在 CloudWatch 日志中加密。默认情况下, CloudWatch Logs 对静态数据使用服务器端加密。此外,您也可以使用 Amazon Key Management Service 进行这一加密。如果这样做,则使用密 Amazon KMS 钥进行加密。通过将 K Amazon KMS MS 密钥与异常检测器关联,可以在异常检测器级别启用加密。

重要

CloudWatch 日志仅支持对称 KMS 密钥。请勿使用非对称密钥对日志组中的数据进行加密。有关更多信息,请参阅使用对称和非对称密钥

限制

  • 要执行下列步骤,您必须具有以下权限:kms:CreateKeykms:GetKeyPolicykms:PutKeyPolicy

  • 将密钥与异常检测器关联或取消关联后,该操作最多可能需要五分钟才能生效。

  • 如果您撤消 CloudWatch 日志对关联密钥的访问权限或删除关联的 KMS 密钥,则无法再检索 CloudWatch 日志中的加密数据。

步骤 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 日志服务主体使用密钥的权限。此服务主体必须位于存储 KMS 密钥的同一 Amazon 区域。

作为最佳实践,我们建议您将 KMS 密钥的使用仅限于您指定的 Amazon 账户或异常检测器。

首先,policy.json使用以下get-key-policy命令保存 KMS 密钥的默认策略:

aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json

在文本编辑器中打开 policy.json 文件,然后从以下语句之一中添加粗体的部分。使用逗号将现有语句与新语句分隔。这些语句使用Condition章节来增强 Amazon KMS 密钥的安全性。有关更多信息,请参阅 Amazon KMS 密钥和加密上下文

本示例中的Condition部分将 Amazon KMS 密钥的使用限制为指定的账户,但它可以用于任何异常检测器。

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.REGION.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:REGION:Your_account_ID:anomaly-detector:*" } } }, { "Effect": "Allow", "Principal": { "Service": "logs.REGION.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws-crypto-ec:aws:logs:arn": "arn:aws:logs:REGION:Your_account_ID:anomaly-detector:*" } } } ] }

最后,使用以下put-key-policy命令添加更新的策略:

aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

步骤 3:将 KMS 密钥与异常检测器关联

在控制台中或使用 Amazon CLI 或 API 创建 KMS 密钥时,可以将其与异常检测器关联。

步骤 4:取消密钥与异常检测器的关联

将密钥与异常检测器关联后,您将无法更新该密钥。移除密钥的唯一方法是删除异常检测器,然后重新创建它。