使用 AWS KMS 密钥来加密 EventBridge 事件总线 - Amazon EventBridge

使用 AWS KMS 密钥来加密 EventBridge 事件总线

您可以指定 EventBridge 使用 AWS KMS 对存储在事件总线上的数据进行加密,而不是使用默认的 AWS 拥有的密钥。您可以在创建或更新事件总线时指定客户自主管理型密钥。您也可以更新默认事件总线,以便使用客户自主管理型密钥进行加密。有关更多信息,请参阅 KMS 密钥选项

当您为事件总线指定客户自主管理型密钥时,EventBridge 会使用该密钥对以下内容进行加密:

如果您为事件总线指定客户自主管理型密钥,则可以选择为该事件总线指定死信队列(DLQ)。然后,EventBridge 会将任何生成加密或解密错误的自定义事件或合作伙伴事件传送到该 DLQ。有关更多信息,请参阅 使用 DLQ 捕获加密事件

注意

我们强烈建议为事件总线指定 DLQ,以确保在发生加密或解密错误时保留事件。

您还可以指定使用客户自主管理型密钥来加密事件总线归档。有关更多信息,请参阅 加密归档

注意

使用客户自主管理型密钥进行加密的事件总线不支持架构发现。要在事件总线上启用架构发现,请选择使用 AWS 拥有的密钥。有关更多信息,请参阅 KMS 密钥选项

事件总线加密上下文

加密上下文 是一组包含任意非机密数据的键值对。在请求中包含加密上下文以加密数据时,AWS KMS 以加密方式将加密上下文绑定到加密的数据。要解密数据,您必须传入相同的加密上下文。

您还可以将加密上下文用作在策略和授权中进行授权的条件。

如果您使用客户自主管理型密钥来保护 EventBridge 资源,则可使用加密上下文在审计记录和日志中标识 KMS key的使用。它也以明文形式显示在日志中,例如 AWS CloudTrailAmazon CloudWatch Logs

对于事件总线,EventBridge 在所有 AWS KMS 加密操作中均使用相同的加密上下文。该上下文包括单个键值对,其中包含事件总线 ARN。

"encryptionContext": { "kms:EncryptionContext:aws:events:event-bus:arn": "event-bus-arn" }

适用于事件总线的 AWS KMS 密钥策略

以下示例密钥策略提供事件总线所需的权限:

  • kms:DescribeKey

  • kms:GenerateDataKey

  • kms:Decrypt

作为最佳安全实践,建议您在密钥策略中包含条件键,以帮助确保 EventBridge 仅将 KMS 密钥用于指定的资源或账户。有关更多信息,请参阅 安全性注意事项

JSON
{ "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" } } } ] }

事件总线操作的 AWS KMS 密钥权限

要创建或更新使用客户自主管理型密钥加密的事件总线,您必须对指定的客户自主管理型密钥拥有以下权限:

  • kms:GenerateDataKeyWithoutPlaintext

  • kms:Decrypt

  • kms:Encrypt

  • kms:ReEncryptFrom

  • kms:ReEncryptTo

  • kms:DescribeKey

此外,要在使用客户自主管理型密钥加密的事件总线上执行某些事件总线操作,您必须对指定的客户自主管理型密钥拥有 kms:Decrypt 权限。这些操作包括: