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 策略之间的更改。

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

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

角色名称:EMR_DefaultRole

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

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

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

策略添加了新的权限 "ec2:DescribeInstanceTypeOfferings"。此 API 操作返回给定可用区列表支持的实例类型列表。

IAM 托管策略,允许附加的用户、角色或组完全访问 Amazon EMR

V2(范围)策略名称:AmazonEMRServicePolicy_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 实例配置文件)的服务角色

角色名称:EMR_EC2_DefaultRole

已弃用的策略名称:AmazonElasticMapReduceforEC2Role

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

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

其它 EC2 服务角色策略

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

如果使用自动扩缩、笔记本或清理 EC2 资源,则需提供 Amazon EMR 访问其他 AWS 资源和执行操作所需的权限。

对 v2 没有更改。

保护 iam:PassRole

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

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

  • iam:PassedToService 条件允许您仅将策略用于指定的AWS服务,例如 elasticmapreduce.amazonaws.com.rproxy.goskope.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 会自动添加标签并将其传播到恰当组件。

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

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

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

Amazon EMR 的AWS托管式策略

AWS 托管式策略是由 AWS 创建和管理的独立策略。AWS 托管式策略旨在为许多常见用例提供权限,以便您可以开始为用户、组和角色分配权限。

请记住,AWS 托管式策略可能不会为您的特定使用场景授予最低权限,因为它们可供所有 AWS 客户使用。我们建议通过定义特定于您的使用场景的客户托管式策略来进一步减少权限。

您无法更改 AWS 托管式策略中定义的权限。如果 AWS 更新在 AWS 托管式策略中定义的权限,则更新会影响该策略所附加到的所有主体身份(用户、组和角色)。当新的 AWS 服务 启动或新的 API 操作可用于现有服务时,AWS 最有可能更新 AWS 托管式策略。

有关更多信息,请参阅《IAM 用户指南》中的 AWS 托管式策略