本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
由 Susanne Kangnoh (AWS) 创建
摘要
此模式提供了一种安全控制,可在启动时监控 Amazon EMR 集群,并在未启用传输中加密时发送警报。
Amazon EMR 是一项 Web 服务,可让您轻松运行大数据框架(如 Apache Hadoop)来处理和分析数据。Amazon EMR 通过并行运行映射和减少步骤,使您能够以经济高效的方式处理大量数据。
数据加密可防止未经授权的用户访问或读取静态数据或传输中数据。静态数据是指存储在介质中的数据,例如每个节点上的本地文件系统、Hadoop Distributed File System (HDFS) 或通过 Amazon Simple Storage Service (Amazon S3) 的 EMR 文件系统 (EMRFS)。传输中数据是指在网络中传输并在作业之间传输的数据。传输加密支持 Apache Spark、Apache TEZ、Apache Hadoop、Apache 和 Presto 的开源加密功能。 HBase您可以通过 AWS 命令行界面 (AWS CLI) Line Interface、控制台或 AW SDKs S 创建安全配置并指定数据加密设置来启用加密。您可以通过以下两种方式为传输中加密提供加密构件:
通过将证书的压缩文件上传到 Amazon S3。
通过引用提供加密构件的自定义 Java 类。
此模式中包含的安全控制会监控 API 调用,并针对该RunJobFlow操作生成 Amazon Events CloudWatch 事件。该事件调用运行 Python 脚本的 AWS Lambda 函数。该函数从事件 JSON 输入中获取 EMR 集群 ID,并执行以下检查以确定是否存在安全违规:
检查 EMR 集群是否具有特定于 Amazon EMR 的安全配置。
如果集群确实具有安全配置,请检查是否启用了传输中加密。
如果集群没有安全配置,则使用 Amazon Simple Notification Service(Amazon SNS)向您提供的电子邮件地址发送警报。该通知指定 EMR 集群名称、违规详细信息、AWS 区域和账户信息,以及通知来源的 AWS Lambda ARN(Amazon 资源名称)。
先决条件和限制
先决条件
一个有效的 Amazon Web Services account。
一个 S3 存储桶,用于上传随此模式提供的 Lambda 代码。
您希望接收违规通知的电子邮件地址。
已启用 Amazon EMR 日志记录,用于访问所有 API 日志。
限制
此检测控制是区域性的,必须部署在要监控的每个 AWS 区域中。
产品版本
Amazon EMR 发行版 4.8.0 或更高版本。
架构
工作流程架构

自动化和扩缩
如果您使用的是 AWS Organizations,则可以使用 AWS Cloudformation 将模板部署 StackSets到要监控的多个账户中。
工具
Amazon Web Services
Amazon EMR – Amazon EMR 是一个托管集群平台,可简化在 AWS 上运行大数据框架(如 Apache Hadoop
和 Apache Spark )以处理和分析海量数据的操作。通过使用这些框架和相关的开源项目,您可以处理用于分析目的的数据和业务情报工作负载。此外,您还可以使用 Amazon EMR 转换大量数据并移出/移入到其他 AWS 数据存储和数据库中,例如 Amazon S3 和 Amazon DynamoDB。 AWS Cloudformation — AWS 可 CloudFormation 帮助您建模和设置 AWS 资源,快速一致地配置这些资源,并在资源的整个生命周期中对其进行管理。您可以使用模板来描述资源及其依赖关系,然后将它们作为堆栈一起启动和配置,而不必单独管理资源。您可以跨多个 Amazon Web Services account 和 AWS 区域管理和预置堆栈。
AWS Cloudwatch Ev CloudWatch ents — Amazon Events 提供近乎实时的系统事件流,这些事件描述了 AWS 资源的变化。 CloudWatch 通过发送消息以响应环境、激活功能、进行更改和捕获状态信息,事件会在操作变化发生时意识到这些变化,并在必要时采取纠正措施。
AWS Lambda
– AWS Lambda 是一项计算服务,支持无需预置或管理服务器即可运行代码。只有在需要时 Lambda 才运行您的代码,并且能自动扩缩,从每天几个请求扩展到每秒数千个请求。您只需为消耗的计算时间付费 - 代码未运行时不产生费用。 AWS SNS – Amazon Simple Notification Service(Amazon SNS)协调和管理发布者和客户端(包括 Web 服务器和电子邮件地址)之间的消息发送。订阅用户接收所有发布至他们所订阅主题的消息,并且一个主题的所有订阅用户收到的消息都相同。
代码
此模式包括一个包含两个文件的附件:
EMRInTransitEncryption.zip
是一个包含安全控制区域(Lambda 代码)的压缩文件。EMRInTransitEncryption.yml
是部署安全控制的 CloudFormation 模板。
有关如何使用这些文件的信息,请参阅操作说明部分。
操作说明
Task | 描述 | 所需技能 |
---|---|---|
将代码上传到 S3 存储桶。 | 创建新的 S3 存储桶或使用现有 S3 存储桶上传附加的 | 云架构师 |
部署 CloudFormation 模板。 | 在与 S3 存储桶相同的 AWS 区域中打开 Cloudformation 控制台,然后部署附件中提供的 | 云架构师, |
Task | 描述 | 所需技能 |
---|---|---|
提供 S3 存储桶名称。 | 输入您在第一篇操作说明中创建或选择的 S3 存储桶的名称。此 S3 存储桶包含 Lambda 代码的.zip 文件,并且必须与模板和要评估 CloudFormation 的资源位于相同的 AWS 区域。 | 云架构师 |
提供 S3 密钥。 | 指定 Lambda 代码 .zip 文件在 S3 存储桶中的位置,不带前导斜杠(例如, | 云架构师 |
提供电子邮箱地址。 | 指定要接收违规通知的活动电子邮件地址。 | 云架构师 |
指定日志记录级别。 | 指定 Lambda 日志的日志记录级别和详细程度。 | 云架构师 |
Task | 描述 | 所需技能 |
---|---|---|
确认电子邮件订阅。 | 成功部署 CloudFormation 模板后,它会向您提供的电子邮件地址发送一封订阅电子邮件。要接收通知,您必须确认此电子邮件订阅。 | 云架构师 |
相关资源
在 AWS CloudFormation 控制台上创建堆栈(AWS CloudFormation 文档)
加密选项(Amazon EMR 文档)
附件
要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip