EMR Serverless 的用户访问策略示例 - Amazon EMR

EMR Serverless 的用户访问策略示例

您可以根据您希望每个用户在与 EMR Serverless 应用程序交互时执行的操作,为用户设置精细的策略。以下策略示例有助于为用户设置正确的权限。本节仅重点介绍 EMR Serverless 策略。有关 EMR Studio 用户策略的示例,请参阅配置 EMR Studio 用户权限。有关如何将策略附加到 IAM 用户(主体)的信息,请参阅《IAM 用户指南》中的管理 IAM 策略

高级用户策略

要向 EMR Serverless 授予所有必需的操作,请创建 AmazonEMRServerlessFullAccess 策略并将其附加到所需的 IAM 用户、角色或组。

以下是一个示例策略,该策略允许高级用户创建和修改 EMR Serverless 应用程序,并执行提交和调试作业等其他操作。示例显示了 EMR Serverless 需要对其他服务执行的所有操作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessActions", "Effect": "Allow", "Action": [ "emr-serverless:CreateApplication", "emr-serverless:UpdateApplication", "emr-serverless:DeleteApplication", "emr-serverless:ListApplications", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:StartJobRun", "emr-serverless:CancelJobRun", "emr-serverless:ListJobRuns", "emr-serverless:GetJobRun" ], "Resource": "*" } ] }

当您启用到 VPC 的网络连接时,EMR Serverless 应用程序会创建 Amazon EC2 弹性网络接口(ENI),与 VPC 资源通信。以下策略可确保只在 EMR Serverless 应用程序的上下文中创建新的 EC2 ENI。

注意

我们强烈建议设置此策略,以确保用户无法创建 EC2 ENI,除非是在启动 EMR Serverless 应用程序的情况下。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEC2ENICreationWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "aws:CalledViaLast": "ops.emr-serverless.amazonaws.com" } } } }

如果要限制 EMR Serverless 对某些子网的访问,可使用标签条件来标记每个子网。此 IAM 策略可确保 EMR Serverless 应用程序只能在允许的子网内创建 EC2 ENI。

{ "Sid": "AllowEC2ENICreationInSubnetAndSecurityGroupWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/KEY": "VALUE" } } }
重要

如果您是创建第一个应用程序的管理员或高级用户,则必须配置权限策略,以允许您创建 EMR Serverless 服务相关角色。要了解更多信息,请参阅 使用 EMR Serverless 的服务相关角色

以下 IAM 策略允许您为账户创建 EMR Serverless 服务相关角色。

{ "Sid":"AllowEMRServerlessServiceLinkedRoleCreation", "Effect":"Allow", "Action":"iam:CreateServiceLinkedRole", "Resource":"arn:aws:iam::account-id:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless" }

数据工程师策略

以下是一个示例策略,该策略允许用户对 EMR Serverless 应用程序具有只读权限,并能提交和调试作业。请记住,由于此策略不会明确拒绝操作,因此仍可使用其它策略声明来授予对指定操作的访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessActions", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:StartJobRun", "emr-serverless:CancelJobRun", "emr-serverless:ListJobRuns", "emr-serverless:GetJobRun" ], "Resource": "*" } ] }

使用标签进行访问控制

您可以使用标签条件进行精细访问控制。例如,您可以限制一个团队的用户,使他们只能向标记有团队名称的 EMR Serverless 应用程序提交作业。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessActions", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:StartJobRun", "emr-serverless:CancelJobRun", "emr-serverless:ListJobRuns", "emr-serverless:GetJobRun" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "team-name" } } } ] }