本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Key Management Service 加密查询结果
默认情况下, CloudWatch Logs 使用默认 CloudWatch 的 Logs 服务器端加密方法对 CloudWatch Logs Insights 查询的存储结果进行加密。您可以选择使用Amazon KMS密钥来加密这些结果。如果您将Amazon KMS密钥与加密结果相关联,则 CloudWatch Logs 将使用该密钥对账户中所有查询的存储结果进行加密。
如果您稍后解除密钥与查询结果的关联,则 CloudWatch 日志会回到默认的加密方法以供日后查询使用。但是,在关联密钥时运行的查询仍使用该密钥进行加密。 CloudWatch 解除关联 KMS 密钥后,日志仍然可以返回这些结果,因为 CloudWatch 日志仍然可以继续引用该密钥。但是,如果密钥稍后被禁用,则 CloudWatch Logs 将无法读取使用该密钥加密的查询结果。
重要
CloudWatch 日志仅支持对称 KMS 密钥。请勿使用非对称密钥来加密查询结果。有关更多信息,请参阅使用对称和非对称密钥。
限制
-
要执行下列步骤,您必须具有以下权限:
kms:CreateKey、kms:GetKeyPolicy和kms:PutKeyPolicy。 -
将密钥与日志组关联或取消关联后,最多可能需要五分钟时间,此操作才能生效。
-
如果您撤消 CloudWatch 日志对关联密钥的访问权限或删除关联的 KMS 密钥,则无法再检索 CloudWatch 日志中的加密数据。
-
您不能使用 CloudWatch 控制台关联密钥,必须使用Amazon CLI或日 CloudWatch 志 API。
步骤 1:创建一个 Amazon KMS key
要创建 KMS,请使用以下 create-key 命令:
aws kms create-key
输出包含密钥的密钥 ID 和 Amazon 资源名称(ARN)。下面是示例输出:
{
"KeyMetadata": {
"Origin": "AWS_KMS",
"KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
"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/6f815f63-e628-448c-8251-e40cb0d29f59",
"AWSAccountId": "123456789012",
"EncryptionAlgorithms": [
"SYMMETRIC_DEFAULT"
]
}
}
步骤 2:设置 KMS 密钥的权限
默认情况下,所有 KMS 密钥都是私有的。只有资源所有者可以使用它来加密和解密数据。但是,资源拥有者可以将密钥的访问权限授予其他用户和资源。通过此步骤,您将授予 CloudWatch 日志服务主体使用密钥的权限。该服务主体必须位于存储密钥的同一Amazon区域。
作为最佳实践,我们建议您将密钥的使用限制在您指定的Amazon账户中。
首先,policy.json使用以下get-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密钥的使用限制为指定账户中的 CloudWatch Logs Insights 查询结果。
最后,使用以下put-key-policy命令添加更新的策略:
aws kms put-key-policy --key-idkey-id--policy-name default --policy file://policy.json
步骤 3:将 KMS 密钥与查询结果关联
将 KMS 密钥与账户中的查询结果相关联
按以下方式使用 disassociate-kms-key 命令:
aws logs associate-kms-key --resource-identifier "arn:aws:logs:region:account-id:query-result:*" --kms-key-id "key-arn"
步骤 4:取消密钥与账户中查询结果的关联
要取消与查询结果关联的 KMS 密钥的关联,请使用以下disassociate-kms-key命令:
aws logs disassociate-kms-key --resource-identifier "arn:aws:logs:region:account-id:query-result:*"