

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

# 使用 AWS Config 跟踪 X-Ray 加密配置更改
<a name="xray-api-config"></a>

AWS X-Ray 与 AWS Config 集成来记录对您的 X-Ray 加密资源所做的配置更改。您可以使用 AWS Config 来清点 X-Ray 加密资源、审核 X-Ray 配置历史记录并基于资源更改发送通知。

AWS Config 支持将以下 X-Ray 加密资源更改记录为事件：
+ **配置更改** - 更改或添加一个加密密钥，或恢复为默认 X-Ray 加密设置。

通过以下说明了解如何在 X-Ray 和 AWS Config 之间建立基本连接。

## 创建 Lambda 函数触发器
<a name="LambdaFunctionTrigger"></a>

您必须拥有自定义 AWS Lambda 函数的 ARN 才能生成自定义 AWS Config 规则。按照以下说明，通过 Node.js 创建一个基本函数，该函数基于 AWS Config 资源的状态将合规或不合规值返回给 `XrayEncryptionConfig`。

**使用 AWS::XrayEncryptionConfig 更改触发器创建 Lambda 函数**

1. 打开 [Lambda 控制台](https://console.aws.amazon.com/lambda/home)。选择**创建函数**。

1. 选择**蓝图**，然后筛选蓝图库以得到 **config-rule-change-triggered** 蓝图。单击蓝图名称中的链接，或选择**配置**以继续。

1. 定义以下字段来配置蓝图：
   + 对于**名称**，键入名称。
   + 对于**角色**，请选择**从模板创建新角色**。
   + 对于 **Role name**，请输入名称。
   + 对于**策略模板**，选择 **AWS Config 规则权限**。

1. 选择**创建函数** 以在 AWS Lambda 控制台中创建和显示函数。

1. 编辑您的函数代码，将 `AWS::EC2::Instance` 替换为 `AWS::XrayEncryptionConfig`。您还可以更新描述字段来反映此更改。

   **默认代码**

   ```
       if (configurationItem.resourceType !== 'AWS::EC2::Instance') {
           return 'NOT_APPLICABLE';
       } else if (ruleParameters.desiredInstanceType === configurationItem.configuration.instanceType) {
           return 'COMPLIANT';
       }
           return 'NON_COMPLIANT';
   ```

   **更新的代码**

   ```
       if (configurationItem.resourceType !== 'AWS::XRay::EncryptionConfig') {
           return 'NOT_APPLICABLE';
       } else if (ruleParameters.desiredInstanceType === configurationItem.configuration.instanceType) {
           return 'COMPLIANT';
       }
           return 'NON_COMPLIANT';
   ```

1. 将以下内容添加到您的 IAM 的执行角色中以能够访问 X-Ray。这些权限允许对您的 X-Ray 资源进行只读访问。无法提供访问适当资源的权限会导致以下结果：当 AWS Config 评估与规则关联的 Lambda 函数时，出现来自前者的超出范围的消息。

   ```
       {
           "Sid": "Stmt1529350291539",
           "Action": [
               "xray:GetEncryptionConfig"
           ],
           "Effect": "Allow",
           "Resource": "*"
        }
   ```

## 为 X-Ray 创建自定义 AWS Config 规则
<a name="ConfigRule"></a>

在创建 Lambda 函数时，记下该函数的 ARN，然后转到 AWS Config 控制台来创建自定义规则。

**为 X-Ray 创建 AWS Config 规则**

1. 打开 [AWS Config 控制台的**规则**页面](https://console.aws.amazon.com/config/home#/rules/view)。

1. 选择**添加规则**，然后选择**添加自定义规则**。

1. 在 Function ARN（**AWS Lambda 函数 ARN**)中，插入您要使用的与 Lambda 函数关联的 ARN。

1. 选择要设置的触发器类型：
   + **配置更改** - 当与规则范围匹配的任何资源的配置更改时，AWS Config 将触发评估。在 AWS Config 发送配置项更改通知后，评估便会运行。
   + **定期** - AWS Config 按照您选择的频率运行评测（例如，每 24 小时）。

1. 在**资源类型**处，选择 X-Ray 一节中的 **EncryptionConfig**。

1. 选择****保存****。

AWS Config 控制台将立即开始评估规则的合规性。完成评估可能需要几分钟时间。

由于此规则合规，因此 AWS Config 可以开始编译审核历史记录。AWS Config 以时间线的形式记录资源变化。对于事件时间轴中的每次变化，AWS Config 都会用“从/更改为”格式生成一个表，以显示加密密钥的 JSON 表示有哪些变化。与 EncryptionConfig 关联的两个字段变化是 `Configuration.type` 和 `Configuration.keyID`。

## 示例结果
<a name="Examples"></a>

以下 AWS Config 时间轴示例显示了在特定日期和时间所做的更改。

![\[AWS Config 时间线。\]](http://docs.aws.amazon.com/zh_cn/xray/latest/devguide/images/ConfigTimeline.png)


以下是一个 AWS Config 更改条目示例。“从/更改为”格式阐明了有什么变化。此示例显示默认 X-Ray 加密设置改为定义的加密密钥。

![\[X-Ray 加密配置更改条目。\]](http://docs.aws.amazon.com/zh_cn/xray/latest/devguide/images/ConfigChanges.png)


## Amazon SNS 通知
<a name="SNSNotifs"></a>

要在配置发生更改时得到通知，请将 AWS Config 设置为发布 Amazon SNS 通知。有关更多信息，请参阅[通过电子邮件监控 AWS Config 资源更改](https://docs.aws.amazon.com/config/latest/developerguide/monitoring-resource-changes-by-email.html)。