在启动时监控 Amazon EMR 集群的传输中加密 - AWS Prescriptive Guidance

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

在启动时监控 Amazon EMR 集群的传输中加密

由 Susanne Kangnoh 创作 () AWS

环境:生产

技术:分析;大数据 CloudNative;安全、身份、合规

工作负载:开源

AWS服务:亚马逊EMR;亚马逊 SNS AWS CloudTrail;亚马逊 CloudWatch

Summary

此模式提供了一种安全控制,可在启动时监控 Amazon EMR 集群,如果尚未启用传输中加密,则会发送警报。 

Amazon EMR 是一项网络服务,可让您轻松运行大数据框架(例如 Apache Hadoop)来处理和分析数据。通过并行运行映射和减少步骤,Amazon EMR 使您能够以经济实惠的方式处理大量数据。

数据加密可防止未经授权的用户访问或读取静态数据或传输中数据。静态数据是指通过 Amazon Simple Storage Service (Amazon S3HDFS) 存储在媒体中的数据,例如每个节点上的本地EMR文件系统、Hadoop 分布式文件系统 (EMRFS) 或文件系统 ()。传输中数据是指在网络中传输并在作业之间传输的数据。传输加密支持 Apache Spark、Apache、Apache Hadoop TEZ、Apache 和 Presto 的开源加密功能。HBase您可以通过AWS命令行界面 (AWSCLI)、控制台或AWSSDKs创建安全配置并指定数据加密设置来启用加密。您可以通过以下两种方式为传输中加密提供加密构件:

  • 通过将证书的压缩文件上传到 Amazon S3。

  • 通过引用提供加密构件的自定义 Java 类。

此模式中包含的安全控制会监控API呼叫,并针对该RunJobFlow操作生成 Amazon Events CloudWatch 事件。该事件调用一个 AWS Lambda 函数,该函数运行一个 Python 脚本。该函数从事件JSON输入中获取EMR集群 ID,并执行以下检查以确定是否存在安全违规:

  • 检查EMR集群是否具有 Amazon EMR 特定的安全配置。

  • 如果集群确实具有安全配置,请检查是否启用了传输中加密。

  • 如果集群没有安全配置,则使用亚马逊简单通知服务 (AmazonSNS) 向您提供的电子邮件地址发送警报。该通知指定了EMR集群名称、违规详情、AWS区域和账户信息以及通知来源的 AWS Lambda(A ARN mazon 资源名称)。

先决条件和限制

先决条件

  • 一个活动的 AWS 账户。

  • 一个 S3 存储桶,用于上传随此模式提供的 Lambda 代码。

  • 您希望接收违规通知的电子邮件地址。

  • Amazon EMR 日志已启用,可以访问所有日API志。

限制

  • 此侦探控制是区域性的,必须部署在您要监控的每个AWS区域。

产品版本

  • 亚马逊EMR发布 4.8.0 或更高版本。

架构

工作流程架构

监控API呼叫并生成 RunJobFlow 操作事件的架构。

自动化和扩缩

工具

AWS服务

  • 亚马逊 EMR — Amazon EMR 是一个托管集群平台,可简化大数据框架(例如 Apache Hadoop 和 A pache Spark)的运行,AWS以处理和分析大量数据。通过使用这些框架和相关的开源项目,您可以处理用于分析目的的数据和业务情报工作负载。此外,您可以使用 Amazon 将大量数据转换EMR到其他数据存储和数据库(例如 Amazon S3 和 Amazon DynamoDB)以及将其移出其他AWS数据存储和数据库。

  • AWSCloudformation — AWS CloudFormation 帮助您对AWS资源进行建模和设置,快速一致地配置资源,并在资源的整个生命周期中对其进行管理。您可以使用模板来描述资源及其依赖关系,然后将它们作为堆栈一起启动和配置,而不必单独管理资源。您可以跨多个AWS账户和AWS地区管理和配置堆栈。

  • AWSCloudwatch Events — Amazon CloudWatch Events 提供近乎实时的系统事件流,这些事件描述了AWS资源的变化。 CloudWatch 通过发送消息以响应环境、激活功能、进行更改和捕获状态信息,事件会在操作变化发生时意识到这些变化,并在必要时采取纠正措施。

  • AWSLambda — Lam AWS bda 是一项计算服务,它支持在不预置或管理服务器的情况下运行代码。只有在需要时 Lambda 才运行您的代码,并且能自动扩缩,从每天几个请求扩展到每秒数千个请求。您只需为消耗的计算时间付费 - 代码未运行时不产生费用。

  • AWSSNS— 亚马逊简单通知服务 (AmazonSNS) 协调和管理发布者与客户之间的消息发送,包括网络服务器和电子邮件地址。订阅用户接收所有发布至他们所订阅主题的消息,并且一个主题的所有订阅用户收到的消息都相同。

代码

此模式包括一个包含两个文件的附件:

  • EMRInTransitEncryption.zip 是一个包含安全控制区域(Lambda 代码)的压缩文件。

  • EMRInTransitEncryption.yml是部署安全控制的 CloudFormation 模板。

有关如何使用这些文件的信息,请参阅操作说明部分。

操作说明

任务描述所需技能

将代码上传到 S3 存储桶。

创建新的 S3 存储桶或使用现有 S3 存储桶上传附加的 EMRInTransitEncryption.zip 文件(Lambda 代码)。此存储桶必须与 CloudFormation 模板和您要评估的资源位于同一个AWS区域。

云架构师

部署 CloudFormation 模板。

在与 S3 存储桶相同的AWS区域中打开 Cloudformation 控制台,然后部署附件中提供的EMRInTransitEncryption.yml文件。在下一个操作说明中,提供模板参数的值。

云架构师,
任务描述所需技能

提供 S3 存储桶名称。

输入您在第一篇操作说明中创建或选择的 S3 存储桶的名称。此 S3 存储桶包含 Lambda 代码的.zip 文件,并且必须与模板和要评估的资源位于AWS同一区域。 CloudFormation

云架构师

提供 S3 密钥。

指定 Lambda 代码 .zip 文件在 S3 存储桶中的位置,不带前导斜杠(例如,EMRInTransitEncryption.zipcontrols/EMRInTransitEncryption.zip)。

云架构师

提供电子邮箱地址。

指定要接收违规通知的活动电子邮件地址。 

云架构师

指定日志记录级别。

指定 Lambda 日志的日志记录级别和详细程度。Info 指定有关应用程序进度的详细信息消息,应仅用于调试。Error 指定仍允许应用程序继续运行的错误事件。Warning 表示潜在的有害情况。

云架构师
任务描述所需技能

确认电子邮件订阅。

成功部署 CloudFormation 模板后,它会向您提供的电子邮件地址发送一封订阅电子邮件。要接收通知,您必须确认此电子邮件订阅。                                                     

云架构师

相关资源

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip