

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

# 使用密钥加密 EventBridge 连接授权 Amazon KMS
<a name="encryption-connections"></a>

创建或更新连接时，可以为该连接指定授权参数。 EventBridge 然后将这些参数安全地存储在中的密钥中 Amazon Secrets Manager。默认情况下， EventBridge 使用 Amazon 拥有的密钥 来加密和解密此机密。您可以指定改 EventBridge 用客户托管密钥。

## Amazon KMS 连接的密钥策略
<a name="encryption-connections-key-policy"></a>

 Amazon KMS 密钥策略必须代表您授予 EventBridge 以下权限：
+ `kms:DescribeKey`
+ `kms:GenerateDataKey`
+ `kms:Decrypt`

以下策略示例授予所有 Amazon KMS 权限。

------
#### [ JSON ]

****  

```
{
  "Id": "key-policy-example",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::012345678901:root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}
```

------

 EventBridge 要使用客户托管密钥，您必须在密钥中添加一个资源标签，密钥为`EventBridgeApiDestinations`，值为`true`。有关资源标签的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的 [Add tags to a KMS key](https://docs.amazonaws.cn/kms/latest/developerguide/add-tags.html)。

作为安全最佳实践，我们建议您在密钥策略中包含条件密钥，以帮助确保仅对指定的资源或账户 EventBridge 使用 KMS 密钥。有关更多信息，请参阅 [安全注意事项](eb-encryption-key-policy.md#eb-encryption-event-bus-confused-deputy)。

```
"Condition": {
  "StringLike": {
    "kms:ViaService": "secretsmanager.*.amazonaws.com",
    "kms:EncryptionContext:SecretARN": [
      "arn:aws:secretsmanager:*:*:secret:events!connection/*"
    ]
  },
  "StringEquals": {
    "kms:ResourceTag/EventBridgeApiDestinations": "true"
  }
}
```

## 连接加密上下文
<a name="encryption-connections-context"></a>

[加密上下文](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#encrypt_context) 是一组包含任意非机密数据的键值对。在请求中包含加密上下文以加密数据时， Amazon KMS 以加密方式将加密上下文绑定到加密的数据。要解密数据，您必须传入相同的加密上下文。

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

如果您使用客户托管密钥来保护您的 EventBridge 资源，则可以使用加密上下文来识别审计记录和日志 KMS key 中的使用情况。它也以明文形式显示在日志中，例如 [Amazon CloudTrail](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 和 [Amazon CloudWatch Logs](https://docs.amazonaws.cn/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)。

对于连接，在所有加密操作中 EventBridge 使用相同的 Amazon KMS 加密上下文。该上下文包括单个键值对，其中包含密钥 ARN。

```
"encryptionContext": {
    "kms:EncryptionContext:SecretARN": "secret-arn"
}
```

## 使用跨账户或跨区域的客户自主管理型密钥进行连接
<a name="encryption-connections-cross"></a>

您可以允许其他 Amazon 账户中的用户或角色在您的账户中使用 KMS 密钥。跨账户访问需要在 KMS 密钥的密钥策略和外部用户账户的 IAM policy 中拥有权限。

要使用其他账户的客户自主管理型密钥，拥有该钥的账户必须包含以下策略：

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::account:role/AmazonEventBridgeApiDestinationsInternalServiceRolePolicy"
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
```

有关更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的 [Allowing users in other accounts to use a KMS key](https://docs.amazonaws.cn/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

## 撤销客户自主管理型密钥对连接的访问权限
<a name="encryption-connections-revoke"></a>

请注意，当您撤销客户托管的密钥时（禁用、删除或轮换密钥，或者更新密钥策略）EventBridge 可能已经缓存了密钥值，因此该密钥仍可能在短时间内保留对连接密钥的访问权限。

要立即撤销客户自主管理型密钥对连接的密钥的访问权限，请取消对连接的授权或将其删除。有关更多信息，请参阅[取消对连接的授权](eb-target-connection-deauthorize.md)和[删除连接](eb-target-connection-delete.md)。

## 由于客户自主管理型密钥错误而导致连接被取消授权
<a name="encryption-connections-deauth"></a>

EventBridge 如果连接在尝试加密或解密连接的密钥时遇到以下错误，则取消对连接的授权：
+ 客户自主管理型密钥已删除。
+ 客户自主管理型密钥已被禁用。
+ 该连接没有访问客户自主管理型密钥所需的权限。

有关更多信息，请参阅 [取消对连接的授权](eb-target-connection-deauthorize.md)。