

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

# EMR Serverless 的用户访问策略示例
<a name="security-iam-user-access-policies"></a>

您可以根据您希望每个用户在与 EMR Serverless 应用程序交互时执行的操作，为用户设置精细的策略。以下策略示例可能有助于为用户设置适当的权限。本节仅重点介绍 EMR Serverless 策略。有关 EMR Studio 用户策略的示例，请参阅[配置 EMR Studio 用户权限](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-user-permissions.html#emr-studio-advanced-permissions-policy)。有关如何将策略附加到 IAM 用户（主体）的信息，请参阅《IAM 用户指南》中的[管理 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html)。

## 高级用户策略
<a name="security-iam-user-access-policies-full-access"></a>

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

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

------
#### [ JSON ]

****  

```
{
  "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 资源通信。以下策略确保任何新的 EC2 ENIs 都只能在 EMR 无服务器应用程序的环境中创建。

**注意**  
我们强烈建议您设置此政策，以确保 ENIs除非在启动 EMR Serverless 应用程序的情况下，否则用户无法创建 EC2。

------
#### [ JSON ]

****  

```
{
  "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 无服务器应用程序只能在允许的子网 ENIs 内创建 EC2。

```
{
    "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 的服务相关角色](using-service-linked-roles.md)。

以下 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"
}
```

## 数据工程师策略
<a name="security-iam-user-access-policies-read-only-access"></a>

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

------
#### [ JSON ]

****  

```
{
  "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": [
        "*"
      ]
    }
  ]
}
```

------

## 使用标签进行访问控制
<a name="security-iam-user-access-policies-using-tags"></a>

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

------
#### [ JSON ]

****  

```
{
  "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": [
        "*"
      ]
    }
  ]
}
```

------