使用对异常检测器及其结果进行加密 AWS KMS - Amazon CloudWatch 日志

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

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

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

重要

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

限制

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

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

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

步骤 1:创建 AWS 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 密钥的权限

默认情况下,所有 AWS KMS 密钥都是私有的。只有资源所有者可以使用它来加密和解密数据。但是,资源拥有者可以将 KMS 密钥的访问权限授予其他用户和资源。通过此步骤,您将授予 CloudWatch 日志服务主体使用密钥的权限。此服务主体必须位于存储 KMS 密钥的同一 AWS 区域。

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

首先,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章节来增强 AWS KMS 密钥的安全性。有关更多信息,请参阅 AWS KMS 密钥和加密上下文

此示例中的 Condition 部分将 AWS 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 密钥与异常检测器关联

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

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

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