

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

# 授予用户访问 Amazon EMR on EKS 的权限
<a name="setting-up-iam"></a>

对于您在 Amazon EMR on EKS 执行的任何操作，您需要对该操作具有相应的 IAM 权限。您必须创建 IAM policy，以便您执行 Amazon EMR on EKS 操作，并将该策略附加到您使用的 IAM 用户或角色。

本主题提供了创建新策略并将其附加到用户的步骤。IAM policy 还涵盖了在 EKS 环境上设置 Amazon EMR 所需的基本权限。我们建议您尽可能根据您的业务需求来优化特定资源的权限。

## 在 IAM 控制台中创建新 IAM policy 并将其附加到用户
<a name="setting-up-iam-console"></a>

**创建新 IAM policy**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择 **Policies (策略)**。

1. 在**策略**页面上，选择 **Create a policy (创建策略)**。

1. 在 **Create Policy (创建策略)** 窗口中，导航到 **Edit JSON (编辑 JSON)** 选项卡。创建包含一个或多个 JSON 语句的策略文档，如该过程以下示例所示。接下来，选择 **Review policy (查看策略)**。

1. 在 **Review Policy (查看策略)** 屏幕上，输入您的 **Policy Name (策略名称)**，例如 `AmazonEMROnEKSPolicy`。输入可选描述，然后选择 **Create policy (创建策略)**。

**将策略附加到用户或角色**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 

1. 在导航窗格中，选择 **Policies（策略）**。

1. 在策略列表中，选中在前一部分中所创建策略旁边的复选框。您可以使用 **Filter** 菜单和搜索框来筛选策略列表。

1. 选择 **Policy actions（策略操作）**，然后选择 **Attach（附加）**。

1. 选择要将此策略附加到的用户或角色。您可以使用 **Filter**（筛选条件）菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户或角色后，选择 **Attach policy (附加策略)**。

## 管理虚拟集群的权限
<a name="permissions-virtual-cluster"></a>

要管理您 AWS 账户中的虚拟集群，请创建具有以下权限的 IAM 策略。这些权限允许您在 AWS 账户中创建、列出、描述和删除虚拟集群。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:CreateServiceLinkedRole"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "emr-containers.amazonaws.com"
        }
      },
      "Sid": "AllowIAMCreateservicelinkedrole"
    },
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:CreateVirtualCluster",
        "emr-containers:ListVirtualClusters",
        "emr-containers:DescribeVirtualCluster",
        "emr-containers:DeleteVirtualCluster"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEMRCONTAINERSCreatevirtualcluster"
    }
  ]
}
```

------

Amazon EMR 已与 Amazon EKS 集群访问管理（CAM）集成，因此您可以自动配置必要的 AuthN 和 AuthZ 策略，以便在 Amazon EKS 集群的命名空间中运行 Amazon EMR Spark 作业。要完成此操作，您必须具有以下权限：

```
{
  "Effect": "Allow",
  "Action": [
    "eks:CreateAccessEntry"
  ],
  "Resource": "arn:<AWS_PARTITION>:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:cluster/<EKS_CLUSTER_NAME>"
}, 
{
  "Effect": "Allow",
  "Action": [
    "eks:DescribeAccessEntry",
    "eks:DeleteAccessEntry",
    "eks:ListAssociatedAccessPolicies",
    "eks:AssociateAccessPolicy",
    "eks:DisassociateAccessPolicy"
  ],
  "Resource": "arn:<AWS_PARTITION>:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:access-entry/<EKS_CLUSTER_NAME>/role/<AWS_ACCOUNT_ID>/AWSServiceRoleForAmazonEMRContainers/*"
}
```

有关更多信息，请参阅[自动启用 Amazon EMR on EKS 集群访问](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-cluster-access.html#setting-up-cluster-access-cam-integration)。

首次从 AWS 账户调用`CreateVirtualCluster`操作时，您还需要拥有在 EKS 上为 Amazon EMR 创建服务相关角色的`CreateServiceLinkedRole`权限。有关更多信息，请参阅 [对 Amazon EMR on EKS 使用服务相关角色](using-service-linked-roles.md)。

## 提交任务的权限
<a name="permissions-submitting-jobs"></a>

要在您 AWS 账户中的虚拟集群上提交任务，请创建具有以下权限的 IAM 策略。这些权限允许您启动、列出、描述和取消账户中所有虚拟集群的任务运行。您应该考虑添加列出或描述虚拟集群的权限，以便在提交任务之前检查虚拟集群的状态。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:StartJobRun",
        "emr-containers:ListJobRuns",
        "emr-containers:DescribeJobRun",
        "emr-containers:CancelJobRun"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEMRCONTAINERSStartjobrun"
    }
  ]
}
```

------

## 用于调试和监控的权限
<a name="permissions-debugging-monitoring"></a>

要访问推送到 Amazon S3 的日志 CloudWatch，或者要在 Amazon EMR 控制台中查看应用程序事件日志，请创建具有以下权限的 IAM 策略。我们建议您尽可能根据您的业务需求来优化特定资源的权限。

**重要**  
如果您尚未创建 Amazon S3 存储桶，您需要添加 `s3:CreateBucket` 权限以访问策略声明。如果您尚未创建日志组，则需要添加 `logs:CreateLogGroup` 到策略声明。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:DescribeJobRun",
        "elasticmapreduce:CreatePersistentAppUI",
        "elasticmapreduce:DescribePersistentAppUI",
        "elasticmapreduce:GetPersistentAppUIPresignedURL"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEMRCONTAINERSDescribejobrun"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowS3Getobject"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:Get*",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowLOGSGet"
    }
  ]
}
```

------

有关如何配置任务运行以将日志推送到 Amazon S3 的更多信息 CloudWatch，请参阅将[任务运行配置为使用 S3 日志](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-s3)和将[任务运行配置为使用 CloudWatch 日志](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-cloudwatch)。