启动时强制标记 Amazon EMR 集群 - AWS Prescriptive Guidance

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

启动时强制标记 Amazon EMR 集群

由 Priyanka Chaudhary (AWS) 编写

环境:生产

技术:分析、安全性、身份、合规性

AWS 服务:亚马逊 EMR;AWS Lambda;亚马逊活动 CloudWatch

Summary

此模式提供了一种安全控制,可确保 Amazon EMR 集群在创建时被标记。 

Amazon EMR 是一项 Amazon Web Services (AWS) 服务,用于处理和分析大量数据。Amazon EMR 提供可扩展、低配置的服务,作为运行内部集群计算的更简单的替代方案。您可以使用标记以不同的方式对 AWS 资源进行分类,例如按用途、所有者或环境。例如,您可通过将自定义元数据分配给各个 Amazon EMR 集群,为 Amazon EMR 集群添加标签。标签由您定义的键和值组成。我们建议您创建一组一致的标签以满足您的组织要求。向 Amazon EMR 集群添加某个标签时,该标签也会传播到与该集群关联的每个活动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。同样,从 Amazon EMR 集群中删除某个标签时,该标签也会从每个关联的活动 EC2 实例中删除。

侦探控件监控 API 调用并启动RunJobFlowAddTagsRemoveTags和 API 的 Amazon Event CreateTagss CloudWatch 事件。该事件调用 AWS Lambda,后者运行 Python 脚本。Python 函数从事件的 JSON 输入中获取 Amazon EMR 集群 ID 并执行以下检查:

  • 检查 Amazon EMR 集群是否配置了您指定的标签名称。

  • 如果没有,请向用户发送包含相关信息的 Amazon Simple Notification Service(Amazon SNS)通知:Amazon EMR 集群名称、违规详细信息、AWS 区域、Amazon Web Services account 以及此通知源自 Lambda 的 Amazon 资源名称(ARN)。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • 用于上传提供的 Lambda 代码的 Amazon Simple Storage Service (Amazon S3)存储桶。或者,您可为此目的创建 S3 存储桶,如操作说明部分所述。

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

  • 您要检查的必填标签列表。

限制

  • 这种安全控制为区域性的。您必须将其部署在要监控的每个 AWS 区域。

产品版本

  • Amazon EMR 发行版 4.8.0 及更高版本。

架构

工作流程架构

集群启动、使用 API 进行监控、事件生成、Lambda 函数调用、发送通知。

自动化和扩缩

工具

Amazon Web Services

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

  • Amazon CloudWatch Events-Amazon CloudWatch Events 提供近乎实时的系统事件流,这些事件描述了 AWS 资源的变化。

  • Amazon EMR — Amazon EMR 是一项 Web 服务,可简化大数据框架的运行并高效处理大量数据。

  • AWS Lambda – AWS Lambda 是一项计算服务,支持无需预置或管理服务器即可运行代码。只有在需要时 Lambda 才运行您的代码,并且能自动扩缩,从每天几个请求扩展到每秒数千个请求。 

  • Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一项对象存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。

  • Amazon SNS — Amazon Simple Notification Service (Amazon SNS) 可协调和管理发布者和客户端之间消息的传送或发送,包括 Web 服务器和电子邮件地址。订阅用户接收所有发布至他们所订阅主题的消息,并且一个主题的所有订阅用户收到的消息都相同。

代码

此模式包括以下附件:

  • EMRTagValidation.zip — 用于安全控制的 Lambda 代码。

  • EMRTagValidation.yml— 用于设置事件和 Lambda 函数的 CloudFormation 模板。

操作说明

任务描述所需技能

定义 S3 存储桶。

Amazon S3 控制台,选择或创建 S3 存储桶来托管 Lambda 代码 .zip 文件。此 S3 存储桶必须与您想要监视的 Amazon EMR 集群位于相同的 AWS 区域中。Amazon S3 存储桶名称是全局唯一的,并且命名空间由所有 Amazon Web Services account 共享。S3 存储桶名称不得包含前导斜杠。

云架构师

上传 Lambda 代码。

附件部分中提供的 Lambda 代码 .zip文件上传至 S3 存储桶。                                             

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

启动 AWS CloudFormation 模板。

在与 S3 存储桶相同的 AWS 区域中打开 AWS CloudFormation 控制台并部署模板。有关部署 AWS CloudFormation 模板的更多信息,请参阅 CloudFormation 文档中的在 AWS CloudFormation 控制台上创建堆栈

云架构师

填写模板中的参数。

启动模板时,系统将会提示输入以下信息:

  • S3 存储桶:指定您在首个操作说明中创建或选择的存储桶。这是您上传所附的 Lambda 代码(文件)的地方。

  • S3 密钥:指定 Lambda .zip 文件在您的 S3 存储桶中的位置(例如,filename.zip 或 controls/filename.zip)。切勿纳入前导斜字符。

  • 通知电子邮件:提供有效的电子邮件地址以接收 Amazon SNS 通知。 

  • 标记键名称:以逗号分隔的列表形式提供要检查的标签(例如、ApplicationIDEnvironmentOwner)。Events CloudWatch 事件会监控集群中是否有这些标签,如果找不到这些标签,则会发送通知。

  • Lambda 日志级别: 指定 Lambda 函数的日志记录级别和频率。使用信息记录有关进度的详细信息消息,使用错误记录仍然允许部署继续的错误事件,使用警告记录潜在的有害情况。                                       

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

确认订阅。

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

云架构师

相关资源

附件

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