Amazon EMR 托管策略 - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon EMR 托管策略

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

这些策略不仅包括面向 Amazon EMR 的操作,还包括面向 Amazon EC2、Amazon S3 和 Amazon CloudWatch 操作,Amazon EMR 使用这些策略执行启动实例、写入日志文件以及管理 Hadoop 作业和任务等操作。

集群用户需要应用程序的权限才能代表其传递 Amazon EMR 的服务角色。AmazonElasticMapReduceFullAccess 权限策略,它是一个向用户授予对 Amazon EMR 的完全权限的默认托管策略,其中包含一个允许所有资源的 iam:PassRole 权限的语句。此语句允许用户将任何角色传递给其他 AWS 服务,以便 Amazon EMR 可以代表该用户与这些服务进行交互。

要实施更严格的策略,请将内联策略附加到仅对特定于 Amazon EMR 的角色允许 iam:PassRole 的适当用户或组。以下示例演示了一个仅对默认 Amazon EMR 角色(EMR_DefaultRoleEMR_EC2_DefaultRoleEMR_AutoScalingDefaultRole)允许 iam:PassRole 权限的语句。如果您使用自定义角色,请用自定义角色名称替换默认角色名称。

{ "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/EMR_DefaultRole", "arn:aws:iam::*:role/EMR_EC2_DefaultRole", "arn:aws:iam::*:role/EMR_AutoScaling_DefaultRole", "arn:aws:iam::*:role/EMR_Notebooks_DefaultRole" ] }

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

有关如何将策略附加到 IAM 用户(委托人)的信息,请参阅 IAM 用户指南中的通过 AWS 管理控制台使用托管策略

面向完全访问的 IAM 托管策略

要为 Amazon EMR 授予对所有必需操作的权限,可附加 AmazonElasticMapReduceFullAccess 托管策略。下面显示了此策略声明的内容。它显示了 Amazon EMR 需要对其他服务执行的所有操作。

下面显示了此策略的版本 6 的内容。由于 AmazonElasticMapReduceFullAccess 策略将自动更新,因此,此处显示的策略可能已过期。使用 AWS 管理控制台查看当前策略。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:*", "cloudformation:CreateStack", "cloudformation:DescribeStackEvents", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:CancelSpotInstanceRequests", "ec2:CreateRoute", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteRoute", "ec2:DeleteTags", "ec2:DeleteSecurityGroup", "ec2:DescribeAvailabilityZones", "ec2:DescribeAccountAttributes", "ec2:DescribeInstances", "ec2:DescribeKeyPairs", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeSubnets", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcs", "ec2:DescribeRouteTables", "ec2:DescribeNetworkAcls", "ec2:CreateVpcEndpoint", "ec2:ModifyImageAttribute", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RevokeSecurityGroupEgress", "ec2:RunInstances", "ec2:TerminateInstances", "elasticmapreduce:*", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:ListRoles", "iam:PassRole", "kms:List*", "s3:*", "sdb:*", "support:CreateCase", "support:DescribeServices", "support:DescribeSeverityLevels" ], "Effect": "Allow", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com.cn" ] } } } ] }
注意

ec2:TerminateInstances 操作可让 IAM 用户终止与 IAM 账户有关的任何 Amazon EC2 实例,即使它们不属于 EMR 集群的一部分。

面向只读访问的 IAM 托管策略

要向 Amazon EMR 授予只读权限,可附加 AmazonElasticMapReduceReadOnlyAccess 托管策略。下面显示了此策略声明的内容。elasticmapreduce 元素的通配符指定仅允许以指定字符串开头的操作。请记住,由于此策略不会明确拒绝操作,因此仍可使用其他策略声明来授予对指定操作的访问权限。

注意

由于 AmazonElasticMapReduceReadOnlyAccess 策略将自动更新,因此,此处显示的策略可能已过期。使用 AWS 管理控制台查看当前策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:Describe*", "elasticmapreduce:List*", "elasticmapreduce:ViewEventsFromAllClustersInConsole" "s3:GetObject", "s3:ListAllMyBuckets", "s3:ListBucket", "sdb:Select", "cloudwatch:GetMetricStatistics" ], "Resource": "*" } ] }