

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

# 使用 in 加密事件总线日志 Amazon KMS EventBridge
<a name="encryption-bus-logs"></a>

发送日志时， EventBridge 使用为事件总线指定的 KMS 密钥对每条日志记录的`detail`和`error`部分进行加密。如果您为事件总线指定了客户托管密钥，则在传输过程中 EventBridge 使用该密钥进行加密。记录一经传送，就会被解密，然后使用为日志目标指定的 KMS 密钥重新加密。

## 事件总线日志加密上下文
<a name="encryption-bus-logs-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 加密上下文。

```
"encryptionContext": {
    "kms:EncryptionContext:SourceArn": "arn:partition:logs:region:account:*"
}
```

## Amazon KMS 事件总线日志记录的密钥策略权限
<a name="encryption-bus-logs-permissions"></a>

对于使用客户自主管理型密钥的事件总线，您必须向密钥策略添加以下权限。
+  EventBridge 允许使用客户管理的密钥对日志进行加密。

  ```
  {
    "Sid": "Enable log service encryption",
    "Effect": "Allow",
    "Principal": {
      "Service": "events.amazonaws.com"  
    },
    "Action": [
      "kms:GenerateDataKey"
    ],
    "Resource": "*",
    "Condition": {
      "StringLike": {
        "kms:EncryptionContext:SourceArn": "arn:partition:logs:region:account:*"
      }
    }
  }
  ```
+ 允许日志服务解密发送的日志。 EventBridge

  ```
  {
    "Sid": "Enable log delivery decryption",
    "Effect": "Allow",
    "Principal": {
      "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey"
    ],
    "Resource": "*",
    "Condition": {
      "StringLike": {
        "kms:EncryptionContext:SourceArn": "arn:partition:logs:region:account:*"
      }
    }
  }
  ```