Amazon EMR 托管式策略 - Amazon EMR

Amazon EMR 托管式策略

授予对所需 Amazon EMR 操作的完全访问权限或只读访问权限的最简单方式是使用适用于 Amazon EMR 的 IAM 托管式策略。托管式策略提供了在权限要求发生更改时自动更新的好处。如果您使用内联策略,则可能出现导致权限错误的服务更改。

Amazon EMR 将弃用现有托管式策略(v1 策略)以支持新的托管策略(v2 策略)。新的托管式策略已缩小范围,以与AWS最佳实践保持一致。弃用现有 v1 托管式策略之后,您将无法将这些策略附加到任何新的 IAM 角色或用户。现有角色和使用弃用策略的用户可以继续使用它们。v2 托管式策略使用标签限制访问。它们仅允许指定的 Amazon EMR 操作,并需要使用 EMR 特定密钥标记的集群资源。我们建议您在使用新的 v2 策略之前仔细阅读文档。

在 IAM 控制台的策略列表中,v1 策略将被标记为已弃用,并在其旁边显示一个警告图标。已弃用的策略具有以下特征:

  • 该策略继续为所有当前附加的用户、组和角色工作。什么都不会中断。

  • 该策略不能附加到任何新的用户、组或角色。该策略若与当前实体分离,则不能重新附加。

  • 从所有当前实体分离 v1 策略后,该策略将不再可见且无法再使用。

下表总结了当前策略 (v1) 与 v2 策略之间的更改。

EMR 托管式策略更改
策略类型 策略名称 策略目的 对 v2 策略的更改

IAM 托管式策略,适用于通过附加的用户、角色或组完全访问 EMR

V1 策略(将被弃用):AmazonElasticMapReduceFullAccess

V2(范围)策略名称:AmazonEMRFullAccessPolicy_v2

允许用户执行 EMR 操作的完全权限。包括资源的 iam:PassRole 权限。

策略添加了一个先决条件,即用户必须将用户标记添加到资源,然后才能使用此策略。请参阅标记资源以使用托管式策略

iam:PassRole 操作需要将 iam:PassedToService 条件设置为指定的服务。默认情况下,不允许访问 Amazon EC2、Amazon S3 和其它服务。请参阅用于完全访问的 IAM 托管式策略(v2 托管默认策略)

IAM 托管式策略,用于通过附加的用户、角色或组只读访问 EMR

V1 策略(将被弃用):AmazonElasticMapReduceReadOnlyAccess

V2(范围)策略名称:AmazonEMRReadOnlyAccessPolicy_v2

允许用户执行 Amazon EMR 操作的只读权限。

权限只允许指定的 elasticmapreduce 只读操作。默认情况下,不允许访问 Amazon S3。请参阅用于只读访问的 IAM 托管式策略(v2 托管默认策略)

默认 EMR 服务角色和附加的托管式策略

角色名称:EMR_DefaultRole

V1 策略(将被弃用):AmazonElasticMapReduceRole(EMR 服务角色)

v2(缩小范围)策略名称:AmazonEMRServicePolicy_v2

允许 Amazon EMR 在配置资源和执行服务级别操作时代表您调用其它AWS服务。所有集群都需要该角色。

v2 服务角色和 v2 默认策略将替换已弃用的角色和策略。策略添加了一个先决条件,即用户必须将用户标记添加到资源,然后才能使用此策略。请参阅标记资源以使用托管式策略。请参阅 Amazon EMR 的服务角色(EMR 角色)

集群 EC2 实例(EC2 实例配置文件)的服务角色

V1 策略(将被弃用):EMR_EC2_DefaultRole(实例配置文件)

已弃用的策略名称:AmazonElasticMapReduceforEC2Role

允许在 EMR 集群上运行的应用程序访问其它AWS资源,例如 Amazon S3。如果您运行处理来自 Amazon S3 的数据的 Apache Spark 任务,则策略需要允许访问此类资源。

默认角色和默认策略都将逐渐被弃用。没有替代AWS默认托管角色或策略。您需要提供基于资源或基于身份的策略。这意味着,默认情况下,在 EMR 集群上运行的应用程序无权访问 Amazon S3 或其它资源,除非您手动将其添加到策略中。请参阅默认角色和托管式策略

其它 EC2 服务角色策略

当前策略名称:AmazonElasticMapReduceforAutoScalingRole、AmazonElasticMapReduceEditorsRole、AmazonEMRCleanupPolicy

如果使用 Auto Scaling、Notebooks 或清理 EC2 资源,则需提供 EMR 访问其它AWS资源和执行操作所需的权限。

对 v2 没有更改。

保护 iam:PassRole

Amazon EMR 完全权限默认托管策略包含 iam:PassRole 安全配置,包括以下内容:

  • iam:PassRole 权限仅适用于特定默认 Amazon EMR 角色。

  • iam:PassedToService 条件允许您仅将策略用于指定的AWS服务,例如 elasticmapreduce.amazonaws.comec2.amazonaws.com

您可以在 IAM 控制台中查看 AmazonEMRFullAccessPolicy_v2AmazonEMRServicePolicy_v2 策略的 JSON 版本。建议您使用 v2 托管式策略创建新的集群。

要创建自定义策略,建议您从托管式策略开始,然后根据您的需求编辑这些策略。

有关如何将策略附加到用户(主体)的信息,请参阅《IAM 用户指南》中的通过 AWS Management Console 使用托管式策略

标记资源以使用托管式策略

AmazonEMRServicePolicy_v2 和 AAmazonEMRFullAccessPolicy_v2 取决于对 Amazon EMR 预置或使用的资源的范围缩小访问权限。缩小范围是通过限制对那些具有预定义用户标签关联的资源的访问权限来实现的。当您使用这两个策略中的任何一个时,您必须在配置集群时传递预定义的用户标签 for-use-with-amazon-emr-managed-policies = true。然后,Amazon EMR 将自动传播该标签。此外,您必须将用户标签添加到以下部分中列出的资源。如果您使用 Amazon EMR 控制台启动集群,请参阅 使用 Amazon EMR 控制台启动具有 v2 托管式策略的集群的注意事项

若要使用托管策略,在使用 CLI、SDK 或其他方法配置集群时传递用户标签 for-use-with-amazon-emr-managed-policies = true

当您传递标签时,Amazon EMR 会将标签传播到它创建的私有子网 ENI、EC2 实例和 EBS 卷。Amazon EMR 还会自动为其创建的安全组添加标签。但是,如果您希望 Amazon EMR 与特定安全组一起启动,则必须对其进行标记。对于非 Amazon EMR 创建的资源,您必须向这些资源添加标签。例如,您必须标记 Amazon EC2 子网、EC2 安全组(如果不是由 Amazon EMR 创建)和 VPC(如果您希望 Amazon EMR 创建安全组)。要在 VPC 中启动具有 v2 托管式策略的集群,必须使用预定义的用户标签标记这些 VPC。请参阅使用 Amazon EMR 控制台启动具有 v2 托管式策略的集群的注意事项

传播用户指定的标记

Amazon EMR 使用您在创建集群时指定的 Amazon EMR 标签来标记其创建的资源。Amazon EMR 将标签应用于它在集群生命周期内创建的资源。

Amazon EMR 传播以下资源的用户标签:

  • 私有子网 ENI(服务访问弹性网络接口)

  • EC2 实例

  • EBS 卷

  • EC2 启动模板

自动标记的安全组

Amazon EMR 使用 Amazon EMR 的 v2 托管式策略所需的标签 for-use-with-amazon-emr-managed-policies 标记它创建的 EC2 安全组,而无论您在创建集群命令中指定哪些标签。对于在引入 v2 托管式策略之前创建的安全组,Amazon EMR 不会自动标记。如果要对账户中已存在的默认安全组使用 v2 托管式策略,则需要使用 for-use-with-amazon-emr-managed-policies = true 手动标记安全组。

手动标记的集群资源

您必须手动标记一些集群资源,以便 Amazon EMR 默认角色可以访问。

  • 您必须使用 Amazon EMR 托管式策略标签 for-use-with-amazon-emr-managed-policies 手动标记 EC2 安全组和 EC2 子网。

  • 如果您希望 Amazon EMR 创建默认安全组,则必须手动标记 VPC。如果默认安全组不存在,EMR 将尝试使用特定标记创建安全组。

Amazon EMR 会自动为以下资源添加标签:

  • EMR 创建的 EC2 安全组

您必须手动为以下资源添加标签:

  • EC2 子网

  • EC2 安全组

(可选)您可以手动为以下资源添加标签:

  • VPC – 仅当您希望 Amazon EMR 创建安全组时

使用 Amazon EMR 控制台启动具有 v2 托管式策略的集群的注意事项

您可以使用 Amazon EMR 控制台预置具有 v2 托管式策略的集群。以下是您使用控制台启动 Amazon EMR 集群时的一些注意事项。

注意

我们重新设计了 Amazon EMR 控制台。自动标记功能在新控制台中尚不可用,新控制台也不会向您显示哪些资源(VPC/子网)需要标记。请参阅 控制台中的新增功能,以了解有关新旧控制台体验差异的更多信息。

  • 您不需要传递预定义标签。Amazon EMR 会自动添加标签并将其传播到恰当组件。

  • 对于需要手动标记的组件,如果您具有标记资源所需的权限,Amazon EMR 旧控制台会尝试自动标记这些组件。如果您没有标记资源的权限或如果您想使用新控制台,请让管理员标记这些资源。

  • 除非满足所有先决条件,否则无法启动具有 v2 托管式策略的集群。

  • Amazon EMR 旧控制台向您显示哪些资源(VPC/子网)需要标记。

Amazon EMR 的AWS托管式策略

要向用户、组和角色添加权限,与自己编写策略相比,使用 AWS 托管策略更简单。创建仅为团队提供所需权限的 IAM 客户托管策略需要时间和专业知识。要快速入门,您可以使用我们的 AWS 托管策略。这些策略涵盖常见使用案例,可在您的 AWS 账户中使用。有关 AWS 托管策略的更多信息,请参阅 IAM 用户指南中的 AWS 托管策略

AWS 服务负责维护和更新 AWS 托管策略。您无法更改 AWS 托管策略中的权限。服务偶尔会向 AWS 托管式策略添加额外权限以支持新特征。此类更新会影响附加策略的所有身份(用户、组和角色)。当启动新特征或新操作可用时,服务最有可能会更新 AWS 托管式策略。服务不会从 AWS 托管式策略中删除权限,因此策略更新不会破坏您的现有权限。

此外,AWS 还支持跨多种服务的工作职能的托管策略。例如,ReadOnlyAccess AWS 托管策略提供对所有 AWS 服务和资源的只读访问权限。当服务启动新特征时,AWS 会为新操作和资源添加只读权限。有关工作职能策略的列表和说明,请参阅 IAM 用户指南中的适用于工作职能的 AWS 托管策略

AWS托管式策略的 Amazon EMR 更新

查看有关 Amazon EMR(自从其开始跟踪更新更改以来)的AWS托管式策略的更新的详细信息。有关此页面更改的提示,请订阅 Amazon EMR 文档历史记录页面上的 RSS 源。

更改 说明 日期
AmazonEMRFullAccessPolicy_v2AmazonEMRReadOnlyAccessPolicy_v2 – 对现有策略的更新 增加了 elasticmapreduce:ListSupportedInstanceTypes 2023 年 7 月 13 日
AmazonEMRFullAccessPolicy_v2AmazonEMRReadOnlyAccessPolicy_v2 – 对现有策略的更新 添加了elasticmapreduce:DescribeReleaseLabelelasticmapreduce:GetAutoTerminationPolicy 2022 年 4 月 21 日
AmazonEMRFullAccessPolicy_v2 – 对现有策略的更新 使用自定义 AMI 添加了 ec2:DescribeImages 2022 年 2 月 15 日

Amazon EMR 托管式策略

更新以明确预定义用户标签的使用情况。

使用AWS控制台添加的部分启动具有 v2 托管式策略的集群。

2021 年 9 月 29 日

AmazonEMRFullAccessPolicy_v2 – 对现有策略的更新

更改了 PassRoleForAutoScalingPassRoleForEC2 操作,以使用 StringLike 条件运算符分别匹配 "iam:PassedToService":"application-autoscaling.amazonaws.com*""iam:PassedToService":"ec2.amazonaws.com*" 2021 年 5 月 20 日

AmazonEMRFullAccessPolicy_v2 – 对现有策略的更新

删除了无效操作 s3:ListBuckets,并将其替换为 s3:ListAllMyBuckets 操作。

更新了服务相关角色(SLR)创建方面的内容,以明确将范围缩小到 Amazon EMR 具有的唯一拥有明确服务委托人的 SLR。可以创建的 SLR 与此更改之前完全相同。

2021 年 3 月 23 日

AmazonEMRFullAccessPolicy_v2 – 新策略

Amazon EMR 添加了新权限来确定对资源的访问范围,并添加了一个先决条件,即用户必须先将预定义的用户标签添加到资源中,然后才能使用 Amazon EMR 托管式策略。

iam:PassRole 操作需要将 iam:PassedToService 条件设置为指定服务。默认情况下,不允许访问 Amazon EC2、Amazon S3 和其它服务。

2021 年 3 月 11 日
AmazonEMRServicePolicy_v2 – 新策略

添加了一个先决条件,即用户必须将用户标记添加到资源,然后才能使用此策略。

2021 年 3 月 11 日
AmazonEMRReadOnlyAccessPolicy_v2 – 新策略

权限只允许指定的 elasticmapreduce 只读操作。默认情况下,不允许访问 Amazon S3。

2021 年 3 月 11 日

Amazon EMR 开始跟踪更改

Amazon EMR 开始跟踪其AWS托管式策略的更改。

2021 年 3 月 11 日