本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用密钥加密 EventBridge 事件总线 Amazon KMS
您可以指定 EventBridge 使用 Amazon KMS 来加密存储在事件总线上的数据,而不是使用 as Amazon 拥有的密钥 作为默认值。在创建或更新事件总线时,您可以指定客户管理的密钥。您也可以更新默认事件总线,以使用客户管理的密钥进行加密。有关更多信息,请参阅 KMS 密钥选项。
当您为事件总线指定客户管理的密钥时,会 EventBridge 使用该密钥对以下内容进行加密:
-
来自 Amazon 服务的事件使用进行加密 Amazon 拥有的密钥。
EventBridge 不加密事件元数据。有关事件元数据的更多信息,请参阅《事件参考》中的Amazon 服务事件元数据。
-
对于公交车上的每条规则:
如果启用了事件总线日志记录,则记录日志的
detail和error部分。
如果您为事件总线指定客户托管密钥,则可以选择为事件总线指定死信队列 (DLQ)。 EventBridge 然后向该 DLQ 提供任何生成加密或解密错误的自定义事件或合作伙伴事件。有关更多信息,请参阅 DLQs 用于加密事件。
注意
我们强烈建议为事件总线指定 DLQ,以确保在发生加密或解密错误时保留事件。
您还可以指定使用客户管理的密钥来加密事件总线存档。有关更多信息,请参阅 加密档案。
注意
使用客户托管密钥加密的事件总线不支持架构发现。要在事件总线上启用架构发现,请选择使用 Amazon 拥有的密钥。有关更多信息,请参阅 KMS 密钥选项。
事件总线加密上下文
加密上下文 是一组包含任意非机密数据的键值对。在请求中包含加密上下文以加密数据时, Amazon KMS 以加密方式将加密上下文绑定到加密的数据。要解密数据,您必须传入相同的加密上下文。
您还可以将加密上下文用作在策略和授权中进行授权的条件。
如果您使用客户托管密钥来保护您的 EventBridge 资源,则可以使用加密上下文来识别审计记录和日志 KMS key 中的使用情况。它也以明文形式显示在日志中,例如 Amazon CloudTrail 和 Amazon CloudWatch Logs。
对于事件总线,在所有加密操作中 EventBridge 使用相同的 Amazon KMS 加密上下文。该上下文包括单个键值对,其中包含事件总线 ARN。
"encryptionContext": { "kms:EncryptionContext:aws:events:event-bus:arn": "event-bus-arn" }
Amazon KMS 活动总线的密钥策略
以下示例密钥策略提供事件总线所需的权限:
kms:DescribeKeykms:GenerateDataKeykms:Decrypt
作为安全最佳实践,我们建议您在密钥策略中包含条件密钥,以帮助确保仅对指定的资源或账户 EventBridge 使用 KMS 密钥。有关更多信息,请参阅 安全性注意事项。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEventBridgeToValidateKeyPermission", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "AllowEventBridgeToEncryptEvents", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:events:event-bus:arn": "arn:aws:events:us-east-1:123456789012:event-bus/event-bus-arn", "aws:SourceArn": "arn:aws:events:us-east-1:123456789012:event-bus/event-bus-name" } } } ] }
Amazon KMS 事件总线操作的密钥权限
要创建或更新使用客户托管密钥加密的事件总线,您必须对指定的客户托管密钥具有以下权限:
kms:GenerateDataKeyWithoutPlaintextkms:Decryptkms:Encryptkms:ReEncryptFromkms:ReEncryptTokms:DescribeKey
此外,要对使用客户托管密钥加密的事件总线执行某些事件总线操作,您必须拥有对指定客户托管密钥的kms:Decrypt权限。这些操作包括: