

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

# 在 Amazon Data Firehose 资源未使用密钥加密时进行识别并发出警报 AWS KMS
<a name="identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key"></a>

*Ram Kandaswamy，Amazon Web Services*

## Summary
<a name="identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key-summary"></a>

为了合规起见，某些组织必须对数据传输资源（例如 Amazon Data Firehose）启用加密。此模式显示了一种在资源不合规时进行监控、检测和通知方法。

为了满足加密要求，可以使用此模式自动监控和检测未使用 AWS Key Management Service (AWS KMS) 密钥加密的 Amazon Data Firehose 交付资源。 AWS 该解决方案会发送警报通知，并且可对其进行扩展以执行自动修复。此解决方案可以应用于个人账户或多账户环境，例如使用 landing zone 的环境 AWS 或。 AWS Control Tower

## 先决条件和限制
<a name="identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key-prereqs"></a>

**先决条件**
+ Amazon Data Firehose 传输流
+ 足够的权限和熟悉程度 CloudFormation，用于此基础架构自动化

**限制**
+ 该解决方案不是实时的，因为它使用 AWS CloudTrail 事件进行检测，并且在创建未加密的资源和发送通知之间存在延迟。

## 架构
<a name="identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key-architecture"></a>

**目标技术堆栈**

此解决方案使用无服务器技术和以下服务：
+ AWS CloudTrail
+ Amazon CloudWatch
+ AWS Command Line Interface (AWS CLI)
+ AWS Identity and Access Management (IAM)
+ Amazon Data Firehose
+ AWS Lambda
+ Amazon Simple Notiﬁcation Service (Amazon SNS)

**目标架构 **

![\[当 Data Firehose 资源未加密时生成提醒的流程。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/897ba8cf-d1c2-4149-98e7-09d3d90d13d6/images/d694f718-bd0c-4d14-a2e4-e0ea58dc048e.png)


该图阐释了以下步骤：

1. 用户创建或修改 Amazon Data Firehose。

1. 检测并匹配 CloudTrail 事件。

1. 调用了 AWS Lambda。

1. 识别出不合规的资源。

1. 发送邮件通知。

**自动化和扩展**

您可以使用通过单个命令 CloudFormation StackSets 将此解决方案应用于多个 AWS 区域 或帐户。

## 工具
<a name="identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key-tools"></a>
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) AWS 服务 可帮助您实现治理、合规以及运营和风险审计 AWS 账户。用户、角色或执行的操作将作为事件记录 AWS 服务 在中 CloudTrail。事件包括在 AWS 管理控制台、 AWS CLI AWS SDKs、和 API 操作中执行的操作。
+ [Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) Events 提供近乎实时的系统事件流，这些事件描述了 AWS 资源的变化。
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 是一个开源工具，允许您使用命令行 shell 中的命令进行交互。 AWS 服务  
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 是一项 Web 服务，可帮助您安全地控制对 AWS 资源的访问。可以使用 IAM 来控制谁通过了身份验证（准许登录）并获得授权（具有相应权限）来使用资源。 
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) 是一项完全托管式服务，用于将实时流数据直接传送到 S3。在使用 Firehose 时，您不必编写应用程序或管理资源。您可以配置数据生成工具向 Firehose 发送数据，然后 Firehose 会将数据自动传输到您指定的目标。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 是一项计算服务，无需预调配或管理服务器即可运行代码。Lambda 只在需要时运行您的代码，并自动进行扩展，从每天几个请求扩展到每秒数千个请求。您只需按消耗的计算时间付费 - 代码未运行时不产生费用。 
+ [Amazon Simple Notification Service（Amazon SNS）](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)是一项托管服务，提供从发布者向订阅用户（也称为创建者和使用者）的消息传输。

## 操作说明
<a name="identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key-epics"></a>

### 强制加密以实现合规
<a name="enforce-encryption-for-compliance"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 部署 CloudFormation StackSets。 | 在中 AWS CLI，使用`firehose-encryption-checker.yaml`模板（附件）通过运行以下命令来创建堆栈集。 为参数提供有效 Amazon SNS 主题 Amazon 资源名称（ARN）。部署应成功创建 CloudWatch 事件规则、Lambda 函数和具有必要权限的 IAM 角色，如模板中所述。<pre>aws cloudformation create-stack-set    --stack-set-name my-stack-set   --template-body file://firehose-encryption-checker.yaml </pre> | 云架构师、系统管理员 | 
| 创建堆栈实例。 | 可以在您选择 AWS 区域 的账户中创建堆栈，也可以在一个或多个账户中创建堆栈。 要创建堆栈实例，请运行以下命令。将堆栈名称、账号和区域替换为您自己的信息。<pre>aws cloudformation create-stack-instances     --stack-set-name my-stack-set    --accounts 123456789012 223456789012   --regions us-east-1 us-east-2 us-west-1 us-west-2     --operation-preferences FailureToleranceCount=1 </pre> | 云架构师、系统管理员 | 

## 相关资源
<a name="identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key-resources"></a>
+ [与 CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)
+ [什么是 Amazon CloudWatch 活动？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)

## 附件
<a name="attachments-897ba8cf-d1c2-4149-98e7-09d3d90d13d6"></a>

要访问与此文档相关联的其他内容，请解压以下文件：[attachment.zip](samples/p-attach/897ba8cf-d1c2-4149-98e7-09d3d90d13d6/attachments/attachment.zip)