

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

# 使用密钥加密 Pi AWS KMS p EventBridge es 数据
<a name="eb-encryption-pipes-cmkey"></a>

您可以指定 EventBridge 使用客户托管密钥对静态存储的管道数据进行加密，而不是使用 as AWS 拥有的密钥 作为默认值。您可以在创建或更新管道时指定客户自主管理型密钥。有关密钥类型的更多信息，请参阅 [KMS 密钥选项](eb-encryption-at-rest-key-options.md)。

静 EventBridge 态加密的管道数据包括：
+ [事件模式](eb-event-patterns.md)
+ [输入转换器](eb-pipes-input-transformation.md)

流经管道的事件从不会静态存储。

## EventBridge 管道加密上下文
<a name="eb-encryption-at-rest-context-pipes"></a>

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

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

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

对于 Pip EventBridge es，在所有加密操作中 EventBridge 使用相同的 AWS KMS 加密上下文。该上下文包括单个键值对，其中包含管道 ARN。

```
"encryptionContext": {
    "kms:EncryptionContext:aws:pipes:arn": "pipe-arn"
}
```

对于已售日志， EventBridge 使用以下加密上下文。

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

## AWS KMS Pip EventBridge es 的关键政策
<a name="eb-encryption-key-policy-pipe"></a>

以下示例密钥策略提供管道所需的权限：
+ `kms:DescribeKey`
+ `kms:GenerateDataKey`
+ `kms:Decrypt`

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

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

****  

```
{
  "Id": "CMKKeyPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
      "AWS": "arn:aws:iam::123456789012:role/pipe-execution-role"
      },
      "Action": [
        "kms:DescribeKey"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Principal": {
      "AWS": "arn:aws:iam::123456789012:role/pipe-execution-rolee"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
        "kms:EncryptionContext:aws:pipe:arn": "arn:aws:pipes:us-east-1:123456789012:pipe/pipe-name"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": [
            "aws:pipe:arn"
          ]
        }
      }
    }
  ]
}
```

------

### 管道日志（包含执行数据）的权限
<a name="eb-encryption-key-policy-pipe-logs"></a>

如果您已将管道日志记录配置为包含执行数据，则密钥策略必须包括日志服务的以下权限：
+ `kms:Decrypt`
+ `kms:GenerateDataKey`

有关更多信息，请参阅 [在 Pip EventBridge es 日志中包含执行数据](eb-pipes-logs.md#eb-pipes-logs-execution-data)。

以下示例密钥策略提供管道日志记录所需的权限：

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

此外，还需要管道执行角色拥有 `kms:GenerateDataKey` 权限。

```
{
  "Sid": "Enable log service encryption",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::account:role/pipe-execution-role"
  },
  "Action": [
    "kms:GenerateDataKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:EncryptionContext:SourceArn": "arn:partition:logs:region:account:*"
    }
  }
}
```

管道执行角色还应包括：

```
"Action": [
    "kms:GenerateDataKey"
  ],
  "Resource": "key-arn",
  "Condition": {
    "StringLike": {
      "kms:EncryptionContext:SourceArn": "arn:partition:logs:region:account:*"
    }
  }
```

# 在 Pip EventBridge es 中配置加密
<a name="eb-encryption-pipe-cmkey-configure"></a>

您可以指定创建或更新管道时 EventBridge 要使用的 KMS 密钥。

## 指定创建管道时用于加密的密 AWS KMS 钥
<a name="eb-encryption-pipe-cmkey-create"></a>

选择用于加密的 AWS KMS 密钥是一个创建管道的选项。默认为使用 AWS 拥有的密钥 提供的 EventBridge。

**创建管道时指定用于加密的客户自主管理型密钥（控制台）**
+ 按照以下说明进行操作：

  [创建管道](eb-pipes-create.md).

**创建管道时指定用于加密的客户自主管理型密钥（CLI）**
+ 呼叫时`[create-pipe](https://docs.aws.amazon.com/cli/latest/reference/pipes/create-pipe.html)`，使用`kms-key-identifier`选项指定要在事件总线上进行 EventBridge 加密的客户托管密钥。

## 更新用于在 Pip EventBridge es 上加密的密 AWS KMS 钥
<a name="eb-encryption-pipe-cmkey-update"></a>

您可以更新现有管道上用于静态加密的密 AWS KMS 钥。这包括：
+ 从默认密钥更改 AWS 拥有的密钥 为客户管理的密钥。
+ 从客户管理的密钥更改为默认密钥 AWS 拥有的密钥。
+ 从一个客户自主管理型密钥更改为另一个客户自主管理型密钥。

更新管道以使用其他密 AWS KMS 钥时，会 EventBridge解密存储在管道上的任何数据，然后使用新密钥对其进行加密。

**更新在管道上用于加密的 KMS 密钥（控制台）**

1. 打开 Amazon EventBridge 控制台，网址为[https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)。

1. 在导航窗格中，选择**管道**。

1. 选择要更新的管道。

1. 在管道详细信息页面上，选择**加密**选项卡。

1. 选择加密存储在管道上的数据时 EventBridge 要使用的 KMS 密钥：
   + 选择 “** AWS 拥有的密钥使用**” EventBridge 以使用加密数据 AWS 拥有的密钥。

      AWS 拥有的密钥 这是一个 KMS 密钥， EventBridge 拥有并管理，可在多个 AWS 账户中使用。通常，除非要求您审核或控制保护资源的加密密钥， AWS 拥有的密钥 否则不妨选择。

     这是默认值。
   + 选择 “**使用客户托管密钥**” EventBridge ，使用您指定或创建的客户托管密钥对数据进行加密。

     客户托管密钥是您在 AWS 账户中创建、拥有和管理的 KMS 密钥。您对此类 KMS 密钥拥有完全控制权。

     1. 指定现有的客户自主管理型密钥，或选择**创建新的 KMS 密钥**。

       EventBridge 显示密钥状态以及与指定客户托管密钥关联的所有密钥别名。

**更新在管道上用于加密的 KMS 密钥（CLI）**
+ 呼叫时`[update-pipe](https://docs.aws.amazon.com/cli/latest/reference/pipes/update-pipe.html)`，使用`kms-key-identifier`选项指定用于 EventBridge 加密管道数据的客户托管密钥。