

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 适用于 Amazon EKS 的身份和访问管理
<a name="security-iam"></a>

 AWS Identity and Access Management（IAM）是一项 AWS 服务，可帮助管理员安全地控制对 AWS 资源的访问。IAM 管理员控制谁可以通过*身份验证*（登录）和*授权*（具有权限）使用 Amazon EKS 资源。IAM 是一项可以免费使用的 AWS 服务。

## 受众
<a name="security-iam-audience"></a>

您使用 AWS Identity and Access Management（IAM）的方式有所不同，具体取决于您在 Amazon EKS 中完成的工作。

 **服务用户** – 如果您使用 Amazon EKS 服务来执行任务，则您的管理员会为您提供所需的凭证和权限。随着您使用更多 Amazon EKS 功能来完成工作，您可能需要额外权限。了解如何管理访问权限有助于您向管理员请求适合的权限。如果您无法访问 Amazon EKS 中的功能，请参阅 [IAM 故障排除](security-iam-troubleshoot.md)。

 **服务管理员** – 如果您在公司负责管理 Amazon EKS 资源，您可能对 Amazon EKS 具有完全访问权限。您有责任确定您的服务用户应访问哪些 Amazon EKS 功能和资源。然后，您必须向 IAM 管理员提交请求以更改服务用户的权限。请查看该页面上的信息以了解 IAM 的基本概念。要了解有关您的公司如何将 IAM 与 Amazon EKS 搭配使用的更多信息，请参阅 [Amazon EKS 如何与 IAM 配合使用](security-iam-service-with-iam.md)。

 **IAM 管理员** – 如果您是 IAM 管理员，您可能希望了解如何编写策略以管理对 Amazon EKS 的访问的详细信息。要查看您可在 IAM 中使用的 Amazon EKS 基于身份的策略示例，请参阅 [Amazon EKS 基于身份的策略示例](security-iam-id-based-policy-examples.md)。

## 使用身份进行身份验证
<a name="security-iam-authentication"></a>

身份验证是您使用身份凭证登录 AWS 的方法。您必须作为 AWS 账户根用户、IAM 用户或通过代入 IAM 角色进行*身份验证*（登录到 AWS）。

您可以使用通过身份源提供的凭证以联合身份登录到 AWS。AWSIAM Identity Center（IAM Identity Center）用户、您公司的单点登录身份验证以及您的 Google 或 Facebook 凭证都是联合身份的示例。当您以联合身份登录时，您的管理员以前使用 IAM 角色设置了身份联合验证。当您使用联合身份验证访问 AWS 时，您就是在间接代入角色。

根据您的用户类型，您可以登录 AWS 管理控制台 或 AWS 访问门户。有关登录到 AWS 的更多信息，请参阅《AWS Sign-In 用户指南》**中的[如何登录到您的 AWS 账户](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

如果您以编程方式访问 AWS，则 AWS 将提供软件开发工具包（SDK）和命令行界面（CLI），以便使用您的凭证以加密方式签署您的请求。如果您不使用 AWS 工具，则必须自行对请求签名。有关使用推荐的方法自行签署请求的更多信息，请参阅《IAM 用户指南》**中的[签署 AWS API 请求](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)。

无论使用何种身份验证方法，您可能需要提供其他安全信息。例如，AWS 建议您使用多重身份验证（MFA）来提高账户的安全性。要了解更多信息，请参阅《AWS IAM Identity Center 用户指南》**中的[多重身份验证](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-mfa.html)和《IAM 用户指南》**中的[在 AWS 中使用多重身份验证（MFA）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)。

### AWS 账户根用户
<a name="security-iam-authentication-rootuser"></a>

在创建 AWS 账户时，您首先需要使用一个对账户中所有 AWS 服务和资源拥有完全访问权限的登录身份。此身份称为 AWS 账户*根用户*，使用您创建账户时所用的电子邮件地址和密码登录，即可获得该身份。强烈建议您不要使用根用户执行日常任务。保护好根用户凭证，并使用这些凭证来执行仅根用户可以执行的任务。有关需要您以根用户身份登录的任务的完整列表，请参阅*《IAM 用户指南》*中的[需要根用户凭证的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### IAM 用户和群组
<a name="security-iam-authentication-iamuser"></a>

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是 AWS 账户内对某个人员或应用程序具有特定权限的一个身份。在可能的情况下，我们建议使用临时凭证，而不是创建具有长期凭证（如密码和访问密钥）的 IAM 用户。但是，如果您有一些特定的使用案例需要长期凭证以及 IAM 用户，建议您轮换访问密钥。有关更多信息，请参阅《IAM 用户指南》**中的[对于需要长期凭证的使用案例，应在需要时更新访问密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#rotate-credentials)。

[IAM 组](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)是一个指定一组 IAM 用户的身份。您不能使用组的身份登录。您可以使用组来一次性为多个用户指定权限。如果有大量用户，使用组可以更轻松地管理用户权限。例如，您可能具有一个名为 *IAMAdmins* 的组，并为该组授予权限以管理 IAM 资源。

用户与角色不同。用户唯一地与某个人员或应用程序关联，而角色旨在让需要它的任何人代入。用户具有永久的长期凭证，而角色提供临时凭证。要了解更多信息，请参阅《IAM 用户指南》**中的[何时创建 IAM 用户（而不是角色）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose)。

### IAM 角色
<a name="security-iam-authentication-iamrole"></a>

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是 AWS 账户中具有特定权限的实体。它类似于 IAM 用户，但与特定人员不关联。您可以通过[切换角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)，在 AWS 管理控制台 中暂时代入 IAM 角色。可以通过调用 AWS CLI 或 AWS API 操作或使用自定义 URL 来代入角色。有关使用角色的方法的更多信息，请参阅《IAM 用户指南》中的[使用 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)**。

具有临时凭证的 IAM 角色在以下情况下很有用：
+  **联合用户访问**：要向联合身份分配权限，请创建角色并为角色定义权限。当联合身份进行身份验证时，该身份将与角色相关联并被授予由此角色定义的权限。有关联合身份验证的角色的信息，请参阅《IAM 用户指南》中的[为第三方身份提供者创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)**。如果您使用 IAM Identity Center，则需要配置权限集。为控制您的身份在进行身份验证后可以访问的内容，IAM Identity Center 将权限集与 IAM 中的角色相关联。有关更多信息，请参阅《AWS IAM Identity Center 用户指南》**中的[权限集](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)。
+  **临时 IAM 用户权限**：IAM 用户可代入 IAM 用户或角色，以暂时获得针对特定任务的不同权限。
+  **跨账户访问**：您可以使用 IAM 角色以允许不同账户中的某个人（可信主体）访问您的账户中的资源。角色是授予跨账户访问权限的主要方式。但是，对于某些 AWS 服务，您可以将策略直接附加到资源（而不是使用角色作为代理）。要了解用于跨账户访问的角色和基于资源的策略之间的差别，请参阅 *IAM 用户指南*中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。
+  **跨服务访问**：某些 AWS 服务使用其它 AWS 服务中的功能。例如，当您在某个服务中进行调用时，该服务通常会在 Amazon EC2 中运行应用程序或在 Simple Storage Service（Amazon S3）中存储对象。服务可能会使用发出调用的主体的权限、使用服务角色或使用服务相关角色来执行此操作。
  +  **转发访问会话（FAS）**：当您使用 IAM 用户或角色在 AWS 中执行操作时，您将被视为主体。使用某些服务时，您可能会执行一个操作，然后此操作在其他服务中启动另一个操作。FAS 使用主体调用 AWS 服务的权限，结合请求的 AWS 服务，向下游服务发出请求。只有在服务收到需要与其它 AWS 服务或资源交互才能完成的请求时，才会发出 FAS 请求。在这种情况下，您必须具有执行这两项操作的权限。有关发出 FAS 请求时的策略详情，请参阅[转发访问会话](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。
  +  **服务角色** - 服务角色是服务代表您在您的账户中执行操作而分派的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅 *IAM 用户指南*中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。
  +  **服务相关角色** – 服务相关角色是与 AWS 服务关联的一种服务角色。服务可以代入代表您执行操作的角色。服务相关角色显示在您的 AWS 账户中，并由该服务拥有。IAM 管理员可以查看但不能编辑服务关联角色的权限。
+  **在 Amazon EC2 上运行的应用程序**：您可以使用 IAM 角色管理在 EC2 实例上运行并发出 AWS CLI 或 AWS API 请求的应用程序的临时凭证。这优先于在 EC2 实例中存储访问密钥。要将 AWS 角色分配给 EC2 实例并使其对该实例的所有应用程序可用，您可以创建一个附加到实例的实例配置文件。实例配置文件包含角色，并使 EC2 实例上运行的程序能够获得临时凭证。有关更多信息，请参阅《IAM 用户指南》中的[使用 IAM 角色为 Amazon EC2 实例上运行的应用程序授予权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)**。

要了解是使用 IAM 角色还是 IAM 用户，请参阅*IAM 用户指南*中的[何时创建 IAM 角色（而不是用户）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose_role)。

## 使用策略管理访问
<a name="security-iam-access-manage"></a>

您将创建策略并将其附加到 AWS 身份或资源，以控制 AWS 中的访问。策略是 AWS 中的对象；在与身份或资源相关联时，策略定义它们的权限。在主体（用户、根用户或角色会话）发出请求时，AWS 将评估这些策略。策略中的权限确定是允许还是拒绝请求。大多数策略在 AWS 中存储为 JSON 文档。有关 JSON 策略文档的结构和内容的更多信息，请参阅 *IAM 用户指南*中的 [JSON 策略概览](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

默认情况下，用户和角色没有权限。要授予用户对所需资源执行操作的权限，IAM 管理员可以创建 IAM 策略。管理员随后可以向角色添加 IAM 策略，用户可以代入角色。

IAM 策略定义操作的权限，无关乎您使用哪种方法执行操作。例如，假设您有一个允许 `iam:GetRole` 操作的策略。具有该策略的用户可以从 AWS 管理控制台、AWS CLI 或 AWS API 获取角色信息。

### 基于身份的策略
<a name="security-iam-access-manage-id-based-policies"></a>

基于身份的策略是可附加到身份（如 IAM 用户、用户组或角色）的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[创建 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

基于身份的策略可以进一步归类为*内联策略*或*托管策略*。内联策略直接嵌入单个用户、组或角色中。托管式策略是可以附加到 AWS 账户中的多个用户、组和角色的独立策略。托管式策略包括 AWS 托管式策略和客户托管式策略。要了解如何在托管式策略和内联策略之间进行选择，请参阅 *IAM 用户指南*中的[在托管式策略与内联策略之间进行选择](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#choosing-managed-or-inline)。

### 基于资源的策略
<a name="security-iam-access-manage-resource-based-policies"></a>

基于资源的策略是附加到资源的 JSON 策略文档。基于资源的策略的示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。对于在其中附加策略的资源，策略定义指定主体可以对该资源执行哪些操作以及在什么条件下执行。您必须在基于资源的策略中[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。主体可以包括账户、用户、角色、联合用户或 AWS 服务。

基于资源的策略是位于该服务中的内联策略。您不能在基于资源的策略中使用来自 IAM 的 AWS 托管式策略。

### 访问控制列表（ACL）
<a name="security-iam-access-manage-acl"></a>

访问控制列表（ACL）控制哪些主体（账户成员、用户或角色）有权访问资源。ACL 与基于资源的策略类似，但它们不使用 JSON 策略文档格式。

Amazon S3、AWS WAF 和 Amazon VPC 是支持 ACL 的服务示例。要了解有关 ACL 的更多信息，请参阅《Amazon Simple Storage Service 开发人员指南》**中的[访问控制列表（ACL）概览](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)。

### 其他策略类型
<a name="security-iam-access-manage-other-policies"></a>

 AWS 支持额外的、不太常用的策略类型。这些策略类型可以设置更常用的策略类型向您授予的最大权限。
+  **权限边界**：权限边界是一个高级特征，用于设置基于身份的策略可以为 IAM 实体（IAM 用户或角色）授予的最大权限。您可为实体设置权限边界。这些结果权限是实体基于身份的策略及其权限边界的交集。在 `Principal` 中指定用户或角色的基于资源的策略不受权限边界限制。任一项策略中的显式拒绝将覆盖允许。有关权限边界的更多信息，请参阅*IAM 用户指南*中的 [IAM 实体的权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+  **服务控制策略 (SCP)** – SCP 是指定 AWS Organizations 中的组织或组织单元 (OU) 的最大权限的 JSON 策略。AWSOrganizations 是一个服务，用于对您的企业拥有的多个 AWS 账户进行分组和集中管理。如果在组织内启用了所有特征，则可对任意或全部账户应用服务控制策略（SCP）。SCP 限制成员账户中实体的权限，包括每个 AWS 账户根用户。有关组织和 SCP 的更多信息，请参阅《AWS Organizations 用户指南》**中的 [Service control policies](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+  **会话策略**：会话策略是当您以编程方式为角色或联合用户创建临时会话时作为参数传递的高级策略。结果会话的权限是用户或角色的基于身份的策略和会话策略的交集。权限也可以来自基于资源的策略。任一项策略中的显式拒绝将覆盖允许。有关更多信息，请参阅 *IAM 用户指南*中的[会话策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多个策略类型
<a name="security-iam-access-manage-multiple-policies"></a>

当多个类型的策略应用于一个请求时，生成的权限更加复杂和难以理解。要了解 AWS 如何确定在涉及多种策略类型时是否允许请求，请参阅 *IAM 用户指南*中的[策略评测逻辑](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# Amazon EKS 如何与 IAM 配合使用
<a name="security-iam-service-with-iam"></a>

在使用 IAM 管理对 Amazon EKS 的访问权限之前，您应该了解哪些 IAM 功能可用于 Amazon EKS。要大致了解 Amazon EKS 和其他AWS服务如何与 IAM 一起使用，请参阅 *IAM 用户指南*中的[与 IAM 一起使用的AWS服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

**Topics**
+ [Amazon EKS 基于身份的策略](#security-iam-service-with-iam-id-based-policies)
+ [Amazon EKS 基于资源的策略](#security-iam-service-with-iam-resource-based-policies)
+ [基于 Amazon EKS 标签的授权](#security-iam-service-with-iam-tags)
+ [Amazon EKS IAM 角色](#security-iam-service-with-iam-roles)

## Amazon EKS 基于身份的策略
<a name="security-iam-service-with-iam-id-based-policies"></a>

通过使用 IAM 基于身份的策略，您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。Amazon EKS 支持特定的操作、资源和条件键。要了解在 JSON 策略中使用的所有元素，请参阅《IAM 用户指南》中的 [IAM JSON 策略元素参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)**。

### 操作
<a name="security-iam-service-with-iam-id-based-policies-actions"></a>

管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

JSON 策略的 `Action` 元素描述可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 AWS API 操作同名。有一些例外情况，例如没有匹配 API 操作的*仅限权限*操作。还有一些操作需要在策略中执行多个操作。这些附加操作称为*相关操作*。

在策略中包含操作以授予执行关联操作的权限。

Amazon EKS 中的策略操作在操作前面使用以下前缀：`eks:`。例如，要授予某人获取关于 Amazon EKS 集群的描述性信息的权限，您应将 `DescribeCluster` 操作纳入其策略中。策略语句必须包含 `Action` 或 `NotAction` 元素。

要在单个语句中指定多项操作，请使用逗号将它们隔开，如下所示：

```
"Action": ["eks:action1", "eks:action2"]
```

您也可以使用通配符 （\$1) 指定多个操作。例如，要指定以单词 `Describe` 开头的所有操作，包括以下操作：

```
"Action": "eks:Describe*"
```

要查看 Amazon EKS 操作的列表，请参阅《服务授权参考》**中的 [Amazon Elastic Kubernetes Service 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)。

### 资源
<a name="security-iam-service-with-iam-id-based-policies-resources"></a>

管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Resource` JSON 策略元素指定要向其应用操作的一个或多个对象。语句必须包含 `Resource` 或 `NotResource` 元素。作为最佳实践，请使用其 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)指定资源。对于支持特定资源类型（称为*资源级权限*）的操作，您可以执行此操作。

对于不支持资源级权限的操作（如列出操作），请使用通配符 (\$1) 指示语句应用于所有资源。

```
"Resource": "*"
```

Amazon EKS 集群资源具有以下 ARN。

```
            arn:aws:eks:region-code:account-id:cluster/cluster-name
```

有关 ARN 格式的更多信息，请参阅 [Amazon 资源名称 (ARN) 和 AWS 服务命名空间](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。

例如，要在语句中指定名为 *my-cluster* 的集群，请使用以下 ARN：

```
"Resource": "arn:aws:eks:region-code:111122223333:cluster/my-cluster"
```

要指定属于特定账户和 AWS 区域的所有集群，请使用通配符（\$1）：

```
"Resource": "arn:aws:eks:region-code:111122223333:cluster/*"
```

无法对特定资源执行某些 Amazon EKS 操作，例如用于创建资源的操作。在这些情况下，您必须使用通配符（\$1)。

```
"Resource": "*"
```

要查看 Amazon EKS 资源类型及其 ARN 的列表，请参阅《服务授权参考》**中的 [Amazon Elastic Kubernetes Service 定义的资源](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-resources-for-iam-policies)。要了解您可以在哪些操作中指定每个资源的 ARN，请参阅 [Amazon Elastic Kubernetes Service 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)。

### 条件键
<a name="security-iam-service-with-iam-id-based-policies-conditionkeys"></a>

Amazon EKS 定义了自己的一组条件键，还支持使用一些全局条件键。要查看所有 AWS 全局条件键，请参阅《IAM 用户指南》**中的 [AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

在将 OpenID Connect 提供商与集群关联时，您可以设置条件键。有关更多信息，请参阅 [示例 IAM policy](authenticate-oidc-identity-provider.md#oidc-identity-provider-iam-policy)。

所有 Amazon EC2 操作都支持 `aws:RequestedRegion` 和 `ec2:Region` 条件键。有关更多信息，请参阅[示例：限制对特定 AWS 区域的访问](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-region)。

有关 Amazon EKS 条件键的列表，请参阅《Service Authorization Reference》**中的 [Conditions defined by Amazon Elastic Kubernetes Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-policy-keys)。要了解您可以对哪些操作和资源使用条件键，请参阅 [Amazon Elastic Kubernetes Service 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)。

### 示例
<a name="security-iam-service-with-iam-id-based-policies-examples"></a>

要查看 Amazon EKS 基于身份的策略的示例，请参阅 [Amazon EKS 基于身份的策略示例](security-iam-id-based-policy-examples.md)。

创建 Amazon EKS 集群时，将为创建集群的 [IAM 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)自动授予 Amazon EKS 控制面板中基于集群角色的访问控制（RBAC）配置中的 `system:masters` 权限。该主体不会显示在任何可见配置中，因此请确保跟踪最初创建集群的主体。要授予其他 IAM 主体与集群进行交互的能力，请编辑 Kubernetes 中的 `aws-auth ConfigMap`，创建 Kubernetes `rolebinding` 或 `clusterrolebinding`，名为 `aws-auth ConfigMap` 中指定的 `group`。

有关使用 ConfigMap 的更多信息，请参阅 [向 IAM 用户和角色授予对 Kubernetes API 的访问权限](grant-k8s-access.md)。

## Amazon EKS 基于资源的策略
<a name="security-iam-service-with-iam-resource-based-policies"></a>

Amazon EKS 不支持基于资源的策略。

## 基于 Amazon EKS 标签的授权
<a name="security-iam-service-with-iam-tags"></a>

您可以将标签附加到 Amazon EKS 资源，或者在请求中将标签传递给 Amazon EKS。要基于标签控制访问，您需要使用 `aws:ResourceTag/key-name ``aws:RequestTag/key-name ` 或 `aws:TagKeys` 条件键在策略的[条件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中提供标签信息。有关标记 Amazon EKS 资源的更多信息，请参阅 [使用标签整理 Amazon EKS 资源](eks-using-tags.md)。想要了解您可以将条件键中的标签用于哪些操作，请参阅[服务授权参考](https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html)中的 [Amazon EKS 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)。

## Amazon EKS IAM 角色
<a name="security-iam-service-with-iam-roles"></a>

[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是 AWS 账户中具有特定权限的实体。

### 将临时凭证用于 Amazon EKS
<a name="security-iam-service-with-iam-roles-tempcreds"></a>

可以使用临时凭证进行联合身份验证登录，分派 IAM 角色或分派跨账户角色。您可以通过调用AWS STS API 操作（[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 或 [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)）获得临时安全凭证。

Amazon EKS 支持使用临时凭证。

### 服务关联角色
<a name="security-iam-service-with-iam-roles-service-linked"></a>

 [服务关联角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)允许 AWS 服务访问其他服务中的资源以代表您完成操作。服务关联角色显示在 IAM 账户中，并归该服务所有。管理员可以查看但不能编辑服务相关角色的权限。

Amazon EKS 支持服务相关角色。有关创建或管理 Amazon EKS 服务相关角色的详细信息，请参阅 [对 Amazon EKS 使用服务相关角色](using-service-linked-roles.md)。

### 服务角色
<a name="security-iam-service-with-iam-roles-service"></a>

此功能允许服务代表您担任[服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-role)。此角色允许服务访问其他服务中的资源以代表您完成操作。服务角色显示在 IAM 账户中，并归该账户所有。这意味着，IAM 管理员可以更改该角色的权限。但是，这样做可能会中断服务的功能。

Amazon EKS 支持服务角色。有关更多信息，请参阅[Amazon EKS 集群 IAM 角色](cluster-iam-role.md)和[Amazon EKS 节点 IAM 角色](create-node-role.md)。

### 在 Amazon EKS 中选择 IAM 角色
<a name="security-iam-service-with-iam-roles-choose"></a>

当您在 Amazon EKS 中创建集群资源时，您必须选择一个角色以允许 Amazon EKS 代表您访问一些其他AWS资源。如果您之前创建了一个服务角色，Amazon EKS 会为您提供一个角色列表供您选择。请务必选择一个附带 Amazon EKS 托管策略的角色。有关更多信息，请参阅[检查现有集群角色](cluster-iam-role.md#check-service-role)和[检查现有节点角色](create-node-role.md#check-worker-node-role)。

# Amazon EKS 基于身份的策略示例
<a name="security-iam-id-based-policy-examples"></a>

默认情况下，IAM 用户和角色没有创建或修改 Amazon EKS 资源的权限。它们也无法使用AWS 管理控制台、AWS CLI 或者 AWS API 执行任务。IAM 管理员必须创建 IAM 策略，以便为用户和角色授予权限以对所需的指定资源执行特定的 API 操作。然后，管理员必须将这些策略附加到需要这些权限的 IAM 用户或组。

要了解如何使用这些示例 JSON 策略文档创建 IAM 基于身份的策略，请参阅《*IAM 用户指南*》中的[在 JSON 选项卡上创建策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)。

创建 Amazon EKS 集群时，将为创建集群的 [IAM 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)自动授予 Amazon EKS 控制面板中基于集群角色的访问控制（RBAC）配置中的 `system:masters` 权限。该主体不会显示在任何可见配置中，因此请确保跟踪最初创建集群的主体。要授予其他 IAM 主体与集群进行交互的能力，请编辑 Kubernetes 中的 `aws-auth ConfigMap`，创建 Kubernetes `rolebinding` 或 `clusterrolebinding`，名为 `aws-auth ConfigMap` 中指定的 `group`。

有关使用 ConfigMap 的更多信息，请参阅 [向 IAM 用户和角色授予对 Kubernetes API 的访问权限](grant-k8s-access.md)。

**Topics**
+ [策略最佳实践](#security-iam-service-with-iam-policy-best-practices)
+ [使用 Amazon EKS 控制台](#security-iam-id-based-policy-examples-console)
+ [允许 IAM 用户查看他们自己的权限](#security-iam-id-based-policy-examples-view-own-permissions)
+ [在 AWS 云上创建 Kubernetes 集群](#policy-create-cluster)
+ [在 Outpost 上创建本地 Kubernetes 集群](#policy-create-local-cluster)
+ [更新 Kubernetes 集群](#policy-example1)
+ [列出或描述所有集群](#policy-example2)

## 策略最佳实践
<a name="security-iam-service-with-iam-policy-best-practices"></a>

基于身份的策略确定某个人是否可以创建、访问或删除您账户中的 Amazon EKS 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时，请遵循以下指南和建议：
+  **AWS 托管策略及转向最低权限许可入门** – 要开始向用户和工作负载授予权限，请使用 *AWS 托管式策略*来为许多常见使用案例授予权限。您可以在 AWS 账户中找到这些策略。我们建议通过定义特定于您的使用案例的 AWS 客户管理型策略来进一步减少权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[工作职能的 AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+  **应用最低权限**：在使用 IAM 策略设置权限时，请仅授予执行任务所需的权限。为此，您可以定义在特定条件下可以对特定资源执行的操作，也称为*最低权限许可*。有关使用 IAM 应用权限的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+  **使用 IAM 策略中的条件进一步限制访问权限**：您可以向策略添加条件来限制对操作和资源的访问。例如，您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果通过特定 AWS 服务（例如 AWS CloudFormation）使用服务操作，您还可以使用条件来授予对服务操作的访问权限。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+  **使用 IAM Access Analyzer 验证您的 IAM 策略，以确保权限的安全性和功能性**：IAM Access Analyzer 会验证新策略和现有策略，以确保策略符合 IAM 策略语言（JSON）和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议，以帮助您制定安全且功能性强的策略。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM Acess Analyzer 策略验证](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+  **需要多重身份验证（MFA）** – 如果您所处的场景要求您的 AWS 账户中有 IAM 用户或根用户，请启用 MFA 来提高安全性。若要在调用 API 操作时需要 MFA，请将 MFA 条件添加到您的策略中。有关更多信息，请参阅《IAM 用户指南》**中的[配置受 MFA 保护的 API 访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

有关 IAM 中的最佳实操的更多信息，请参阅《IAM 用户指南》中的 [IAM 中的安全最佳实操](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)**。

## 使用 Amazon EKS 控制台
<a name="security-iam-id-based-policy-examples-console"></a>

要访问 Amazon EKS 控制台，[IAM 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)必须具有一组最低的权限。这些权限允许主体列出和查看有关您的 AWS 账户中的 Amazon EKS 资源的详细信息。如果创建比必需的最低权限更为严格的基于身份的策略，对于附加了该策略的主体，控制台将无法按预期正常运行。

为确保 IAM 主体仍可以使用 Amazon EKS 控制台，请用唯一名称创建一个策略，如 `AmazonEKSAdminPolicy`。将策略附加到主体。有关更多信息，请参阅《IAM 用户指南》**中的[添加和移除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

**重要**  
以下示例策略将允许主体查看控制台中**配置**选项卡上的信息。要在 AWS 管理控制台中的**概述**和**资源**选项卡上查看信息，该主体还需要 Kubernetes 权限。有关更多信息，请参阅 [所需的权限](view-kubernetes-resources.md#view-kubernetes-resources-permissions)。

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

对于仅调用 AWS CLI 或 AWS API 的主体，您不需要允许最低控制台权限。相反，只允许访问与您尝试执行的 API 操作相匹配的操作。

## 允许 IAM 用户查看他们自己的权限
<a name="security-iam-id-based-policy-examples-view-own-permissions"></a>

该示例说明了您如何创建策略，以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。此策略包含通过控制台或者使用 AWS CLI 或 AWS API 以编程方式完成此操作所需的权限。

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## 在 AWS 云上创建 Kubernetes 集群
<a name="policy-create-cluster"></a>

此示例策略包含在 *us-west-2* AWS 区域中创建名为 *my-cluster* 的 Amazon EKS 集群所需的最低权限。您可以将 AWS 区域替换为要在其中创建集群的 AWS 区域。如果 AWS 管理控制台 中显示警告，提示**您的策略中的操作不支持资源级权限，因而要求您选择 `All resources` **，您可以放心地忽略该警告。如果账户已经有 *AWSServiceRoleForAmazonEKS* 角色，您可以从策略中删除 `iam:CreateServiceLinkedRole` 操作。如果在账户中创建过 Amazon EKS 集群，则此角色已经存在，除非您已将其删除。

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "eks:CreateCluster",
            "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-cluster"
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::111122223333:role/aws-service-role/eks.amazonaws.com/AWSServiceRoleForAmazonEKS",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iam:AWSServiceName": "eks"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/cluster-role-name"
        }
    ]
}
```

## 在 Outpost 上创建本地 Kubernetes 集群
<a name="policy-create-local-cluster"></a>

此示例策略包括在 *us-west-2* AWS 区域中创建名为 *my-cluster* 的 Amazon EKS 本地集群所需的最低权限。您可以将 AWS 区域替换为要在其中创建集群的 AWS 区域。如果 AWS 管理控制台 中显示警告，提示**您的策略中的操作不支持资源级权限，因而要求您选择 `All resources` **，您可以放心地忽略该警告。如果您的账户已经有 `AWSServiceRoleForAmazonEKSLocalOutpost` 角色，您可以从策略中删除 `iam:CreateServiceLinkedRole` 操作。如果您曾经在您的账户中的 Outpost 上创建过 Amazon EKS 本地集群，则此角色已存在，除非您将其删除。

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "eks:CreateCluster",
            "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-cluster"
        },
        {
            "Action": [
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "iam:GetRole"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::111122223333:role/aws-service-role/outposts.eks-local.amazonaws.com/AWSServiceRoleForAmazonEKSLocalOutpost"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iam:ListAttachedRolePolicies"
            ],
            "Resource": "arn:aws:iam::111122223333:role/cluster-role-name"
        },
        {
            "Action": [
                "iam:CreateInstanceProfile",
                "iam:TagInstanceProfile",
                "iam:AddRoleToInstanceProfile",
                "iam:GetInstanceProfile",
                "iam:DeleteInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile"
            ],
            "Resource": "arn:aws:iam::*:instance-profile/eks-local-*",
            "Effect": "Allow"
        }
    ]
}
```

## 更新 Kubernetes 集群
<a name="policy-example1"></a>

此示例策略包含在 us-west-2 AWS 区域中更新名为 *my-cluster* 的集群所需的最低权限。

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "eks:UpdateClusterVersion",
            "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-cluster"
        }
    ]
}
```

## 列出或描述所有集群
<a name="policy-example2"></a>

此示例策略包含列出和描述账户中所有集群所需的最低权限。[IAM 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)必须能够列出和描述集群，才能使用 `update-kubeconfig` AWS CLI 命令。

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster",
                "eks:ListClusters"
            ],
            "Resource": "*"
        }
    ]
}
```

# 对 Amazon EKS 使用服务相关角色
<a name="using-service-linked-roles"></a>

Amazon Elastic Kubernetes Service 使用 AWS Identity and Access Management（IAM）[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EKS 直接相关。服务相关角色是由 Amazon EKS 预定义的，并包含服务代表您调用其它 AWS 服务所需的所有权限。

**Topics**
+ [使用 Amazon EKS 集群的角色](using-service-linked-roles-eks.md)
+ [使用 Amazon EKS 节点组的角色](using-service-linked-roles-eks-nodegroups.md)
+ [使用 Amazon EKS Fargate 配置文件的角色](using-service-linked-roles-eks-fargate.md)
+ [使用角色将 Kubernetes 集群连接到 Amazon EKS](using-service-linked-roles-eks-connector.md)
+ [使用 Outpost 上的 Amazon EKS 本地集群的角色](using-service-linked-roles-eks-outpost.md)
+ [使用 Amazon EKS 控制面板的角色](using-service-linked-roles-eks-dashboard.md)

# 使用 Amazon EKS 集群的角色
<a name="using-service-linked-roles-eks"></a>

Amazon Elastic Kubernetes Service 使用 AWS Identity and Access Management（IAM）[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EKS 直接相关。服务相关角色是由 Amazon EKS 预定义的，并包含服务代表您调用其它 AWS 服务所需的所有权限。

服务相关角色可让您更轻松地设置 Amazon EKS，因为您不必手动添加必要的权限。Amazon EKS 定义其服务相关角色的权限，除非另外定义，否则只有 Amazon EKS 可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务相关角色。这将保护您的 Amazon EKS 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其它服务的信息，请参阅[与 IAM 配合使用的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务相关角色文档。

## Amazon EKS 的服务相关角色权限
<a name="service-linked-role-permissions-eks"></a>

Amazon EKS 使用名为 `AWSServiceRoleForAmazonEKS` 的服务相关角色。该角色允许 Amazon EKS 管理您账户中的集群。附加的策略允许角色管理以下资源：网络接口、安全组、日志和 VPC。

**注意**  
`AWSServiceRoleForAmazonEKS` 服务相关角色不同于创建集群所需的角色。有关更多信息，请参阅 [Amazon EKS 集群 IAM 角色](cluster-iam-role.md)。

`AWSServiceRoleForAmazonEKS` 服务相关角色信任以下服务代入该角色：
+  `eks.amazonaws.com` 

角色权限策略允许 Amazon EKS 对指定资源完成以下操作：
+  [AmazonEKSServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServiceRolePolicy.html) 

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。有关更多信息，请参阅*《IAM 用户指南》*中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为 Amazon EKS 创建服务相关角色
<a name="create-service-linked-role-eks"></a>

您无需手动创建服务相关角色。当您在 AWS 管理控制台、AWS CLI 或 AWS API 中创建集群时，Amazon EKS 会为您创建服务相关角色。

如果您删除该服务相关角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。当您创建集群时，Amazon EKS 将再次为您创建服务相关角色。

## 为 Amazon EKS 编辑服务相关角色
<a name="edit-service-linked-role-eks"></a>

Amazon EKS 不允许您编辑 `AWSServiceRoleForAmazonEKS` 服务相关角色。创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除适用于 Amazon EKS 的服务相关角色
<a name="delete-service-linked-role-eks"></a>

如果不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能手动删除它。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete-eks"></a>

必须先删除服务相关角色使用的所有资源，然后才能使用 IAM 删除该角色。

**注意**  
如果当您试图删除资源时 Amazon EKS 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 在左侧导航窗格中，选择**集群**。

1. 如果您的集群具有任何节点组或 Fargate 配置文件，则必须先将其删除，然后才能删除该集群。有关更多信息，请参阅 [从集群中删除托管式节点组](delete-managed-node-group.md) 和 [删除 Fargate 配置文件](delete-fargate-profile.md)。

1. 在 **Clusters（集群）**页面上，选择要删除的集群，然后选择 **Delete（删除）**。

1. 在删除确认窗口中键入集群的名称，然后选择 **Delete（删除）**。

1. 对您账户中的任何其他集群重复此过程。等待所有删除操作完成。

### 手动删除服务相关角色
<a name="slr-manual-delete-eks"></a>

使用 IAM 控制台、AWS CLI 或 AWS API 删除 `AWSServiceRoleForAmazonEKS` 服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Amazon EKS 服务相关角色支持的区域
<a name="slr-regions-eks"></a>

Amazon EKS 支持在该服务可用的所有区域中使用服务相关角色。有关更多信息，请参阅 [Amazon EKS 端点和配额](https://docs.aws.amazon.com/general/latest/gr/eks.html)。

# 使用 Amazon EKS 节点组的角色
<a name="using-service-linked-roles-eks-nodegroups"></a>

Amazon API Gateway 使用 AWS Identity and Access Management（IAM）[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EKS 直接相关。服务相关角色是由 Amazon EKS 预定义的，并包含服务代表您调用其它 AWS 服务所需的所有权限。

服务相关角色可让您更轻松地设置 Amazon EKS，因为您不必手动添加必要的权限。Amazon EKS 定义其服务相关角色的权限，除非另外定义，否则只有 Amazon EKS 可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务相关角色。这将保护您的 Amazon EKS 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其它服务的信息，请参阅[与 IAM 配合使用的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务相关角色文档。

## Amazon EKS 的服务相关角色权限
<a name="service-linked-role-permissions-eks-nodegroups"></a>

Amazon EKS 使用名为 `AWSServiceRoleForAmazonEKSNodegroup` 的服务相关角色。该角色允许 Amazon EKS 管理您账户中的节点组。附加的 `AWSServiceRoleForAmazonEKSNodegroup` 策略允许角色管理以下资源：自动扩缩组、安全组、启动模板和 IAM 实例配置文件。有关更多信息，请参阅 [AWS托管策略：AWSServiceRoleForAmazonEKSNodegroup](security-iam-awsmanpol.md#security-iam-awsmanpol-awsserviceroleforamazoneksnodegroup)。

`AWSServiceRoleForAmazonEKSNodegroup` 服务相关角色信任以下服务代入该角色：
+  `eks-nodegroup.amazonaws.com` 

角色权限策略允许 Amazon EKS 对指定资源完成以下操作：
+  [AWSServiceRoleForAmazonEKSNodegroup](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSServiceRoleForAmazonEKSNodegroup.html) 

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。有关更多信息，请参阅*《IAM 用户指南》*中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为 Amazon EKS 创建服务相关角色
<a name="create-service-linked-role-eks-nodegroups"></a>

您无需手动创建服务相关角色。当您在 AWS 管理控制台、AWS CLI 或 AWS API 中创建节点组时，Amazon EKS 会为您创建服务相关角色。

**重要**  
如果您在其他使用此角色支持的功能的服务中完成某个操作，此服务相关角色可以出现在您的账户中。如果在 2017 年 1 月 1 日（从此时开始支持服务相关角色）之前已使用 Amazon EKS 服务，则 Amazon EKS 已在您的账户中创建了 AWSServiceRoleForAmazonEKSNodegroup 角色。要了解更多信息，请参阅[我的 IAM 账户中出现新角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

### 在 Amazon EKS（AWS API）中创建服务相关角色
<a name="create-service-linked-role-service-api-eks-nodegroups"></a>

您无需手动创建服务相关角色。当您在 AWS 管理控制台、AWS CLI 或 AWS API 中创建托管节点组时，Amazon EKS 会为您创建服务相关角色。

如果您删除该服务相关角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。当您创建另一个托管节点组时，Amazon EKS 再次为您创建服务相关角色。

## 为 Amazon EKS 编辑服务相关角色
<a name="edit-service-linked-role-eks-nodegroups"></a>

Amazon EKS 不允许您编辑 `AWSServiceRoleForAmazonEKSNodegroup` 服务相关角色。创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除适用于 Amazon EKS 的服务相关角色
<a name="delete-service-linked-role-eks-nodegroups"></a>

如果不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能手动删除它。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete-eks-nodegroups"></a>

必须先删除服务相关角色使用的所有资源，然后才能使用 IAM 删除该角色。

**注意**  
如果当您试图删除资源时 Amazon EKS 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 在左侧导航窗格中，选择**集群**。

1. 选择 **Compute**（计算）选项卡。

1. 在 **Node groups**（节点组）部分中，选择要删除的节点组。

1. 在删除确认窗口中键入节点组的名称，然后选择 **Delete（删除）**。

1. 对集群中的任何其他节点组重复此过程。等待所有删除操作完成。

### 手动删除服务相关角色
<a name="slr-manual-delete-eks-nodegroups"></a>

使用 IAM 控制台、AWS CLI 或 AWS API 删除 `AWSServiceRoleForAmazonEKSNodegroup` 服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Amazon EKS 服务相关角色支持的区域
<a name="slr-regions-eks-nodegroups"></a>

Amazon EKS 支持在该服务可用的所有区域中使用服务相关角色。有关更多信息，请参阅 [Amazon EKS 端点和配额](https://docs.aws.amazon.com/general/latest/gr/eks.html)。

# 使用 Amazon EKS Fargate 配置文件的角色
<a name="using-service-linked-roles-eks-fargate"></a>

Amazon API Gateway 使用 AWS Identity and Access Management（IAM）[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EKS 直接相关。服务相关角色是由 Amazon EKS 预定义的，并包含服务代表您调用其它 AWS 服务所需的所有权限。

服务相关角色可让您更轻松地设置 Amazon EKS，因为您不必手动添加必要的权限。Amazon EKS 定义其服务相关角色的权限，除非另外定义，否则只有 Amazon EKS 可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务相关角色。这将保护您的 Amazon EKS 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其它服务的信息，请参阅[与 IAM 配合使用的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务相关角色文档。

## Amazon EKS 的服务相关角色权限
<a name="service-linked-role-permissions-eks-fargate"></a>

Amazon EKS 使用名为 `AWSServiceRoleForAmazonEKSForFargate` 的服务相关角色。该角色允许 Amazon EKS Fargate 配置 Fargate 容器组（pod）所需的 VPC 联网。附加的策略允许角色创建和删除弹性网络接口，并描述弹性网络接口和资源。

`AWSServiceRoleForAmazonEKSForFargate` 服务相关角色信任以下服务代入该角色：
+  `eks-fargate.amazonaws.com` 

角色权限策略允许 Amazon EKS 对指定资源完成以下操作：
+  [AmazonEKSForFargateServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSForFargateServiceRolePolicy.html) 

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。有关更多信息，请参阅*《IAM 用户指南》*中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为 Amazon EKS 创建服务相关角色
<a name="create-service-linked-role-eks-fargate"></a>

您无需手动创建服务相关角色。当您在 AWS 管理控制台、AWS CLI 或 AWS API 中创建 Fargate 配置文件时，Amazon EKS 将为您创建服务相关角色。

**重要**  
如果您在其他使用此角色支持的功能的服务中完成某个操作，此服务相关角色可以出现在您的账户中。如果在 2019 年 12 月 13 日（从此时开始支持服务相关角色）之前已使用 Amazon EKS 服务，则 Amazon EKS 已在您的账户中创建了 AWSServiceRoleForAmazonEKSForFargate 角色。要了解更多信息，请参阅[我的 IAM 账户中出现新角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

### 在 Amazon EKS（AWS API）中创建服务相关角色
<a name="create-service-linked-role-service-api-eks-fargate"></a>

您无需手动创建服务相关角色。当您在 AWS 管理控制台、AWS CLI 或 AWS API 中创建 Fargate 配置文件时，Amazon EKS 将为您创建服务相关角色。

如果您删除该服务相关角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。当您创建另一个托管节点组时，Amazon EKS 再次为您创建服务相关角色。

## 为 Amazon EKS 编辑服务相关角色
<a name="edit-service-linked-role-eks-fargate"></a>

Amazon EKS 不允许您编辑 `AWSServiceRoleForAmazonEKSForFargate` 服务相关角色。创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除适用于 Amazon EKS 的服务相关角色
<a name="delete-service-linked-role-eks-fargate"></a>

如果不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能手动删除它。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete-eks-fargate"></a>

必须先删除服务相关角色使用的所有资源，然后才能使用 IAM 删除该角色。

**注意**  
如果当您试图删除资源时 Amazon EKS 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 在左侧导航窗格中，选择**集群**。

1. 在 **Clusters (集群)** 页面上，选择您的集群。

1. 选择 **Compute**（计算）选项卡。

1. 如果 **Fargate profiles**（Fargate 配置文件）部分中有任何 Fargate 配置文件，则分别选择每个配置文件，然后选择 **Delete**（删除）。

1. 在删除确认窗口中键入配置文件的名称，然后选择 **Delete（删除）**。

1. 对集群中以及您账户中任何其他集群的任何其它 Fargate 配置文件重复此过程。

### 手动删除服务相关角色
<a name="slr-manual-delete-eks-fargate"></a>

使用 IAM 控制台、AWS CLI 或 AWS API 删除 AWSServiceRoleForAmazonEKSForFargate 服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Amazon EKS 服务相关角色支持的区域
<a name="slr-regions-eks-fargate"></a>

Amazon EKS 支持在该服务可用的所有区域中使用服务相关角色。有关更多信息，请参阅 [Amazon EKS 端点和配额](https://docs.aws.amazon.com/general/latest/gr/eks.html)。

# 使用角色将 Kubernetes 集群连接到 Amazon EKS
<a name="using-service-linked-roles-eks-connector"></a>

Amazon API Gateway 使用 AWS Identity and Access Management（IAM）[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EKS 直接相关。服务相关角色是由 Amazon EKS 预定义的，并包含服务代表您调用其它 AWS 服务所需的所有权限。

服务相关角色可让您更轻松地设置 Amazon EKS，因为您不必手动添加必要的权限。Amazon EKS 定义其服务相关角色的权限，除非另外定义，否则只有 Amazon EKS 可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务关联角色。这将保护您的 Amazon EKS 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其它服务的信息，请参阅[与 IAM 配合使用的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务关联角色文档。

## Amazon EKS 的服务相关角色权限
<a name="service-linked-role-permissions-eks-connector"></a>

Amazon EKS 使用名为 `AWSServiceRoleForAmazonEKSConnector` 的服务相关角色。该角色允许 Amazon EKS 连接 Kubernetes 集群。附加的策略允许角色管理必要的资源，以便连接到注册的 Kubernetes 集群。

`AWSServiceRoleForAmazonEKSConnector` 服务相关角色信任以下服务代入该角色：
+  `eks-connector.amazonaws.com` 

角色权限策略允许 Amazon EKS 对指定资源完成以下操作：
+  [AmazonEKSConnectorServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSConnectorServiceRolePolicy.html) 

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

此角色使用 SSM（Systems Manager）权限来建立安全连接和管理连接的 Kubernetes 集群。

## 为 Amazon EKS 创建服务相关角色
<a name="create-service-linked-role-eks-connector"></a>

无需手动创建服务相关角色来连接集群。当您在 AWS 管理控制台、AWS CLI、`eksctl` 或 AWS API 中连接集群时，Amazon EKS 会为您创建服务相关角色。

如果您删除该服务关联角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。连接集群时，Amazon EKS 将再次为您创建服务相关角色。

## 为 Amazon EKS 编辑服务相关角色
<a name="edit-service-linked-role-eks-connector"></a>

Amazon EKS 不允许您编辑 `AWSServiceRoleForAmazonEKSConnector` 服务相关角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务关联角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除适用于 Amazon EKS 的服务相关角色
<a name="delete-service-linked-role-eks-connector"></a>

如果不再需要使用某个需要服务关联角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能手动删除它。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete-eks-connector"></a>

必须先删除服务相关角色使用的所有资源，然后才能使用 IAM 删除该角色。

**注意**  
如果当您试图删除资源时 Amazon EKS 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 在左侧导航窗格中，选择**集群**。

1. 在 **Clusters (集群)** 页面上，选择您的集群。

1. 选择 **Deregister**（取消注册）选项卡，然后选择 **Ok**（确定）选项卡。

### 手动删除服务相关角色
<a name="slr-manual-delete-eks-connector"></a>

使用 IAM 控制台、AWS CLI 或 AWS API 删除 AWSServiceRoleForAmazonEKSConnector 服务相关角色。有关更多信息，请参阅《IAM 用户指南》中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)**。

# 使用 Outpost 上的 Amazon EKS 本地集群的角色
<a name="using-service-linked-roles-eks-outpost"></a>

Amazon Elastic Kubernetes Service 使用 AWS Identity and Access Management（IAM）[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EKS 直接相关。服务相关角色是由 Amazon EKS 预定义的，并包含服务代表您调用其它 AWS 服务所需的所有权限。

服务相关角色可让您更轻松地设置 Amazon EKS，因为您不必手动添加必要的权限。Amazon EKS 定义其服务相关角色的权限，除非另外定义，否则只有 Amazon EKS 可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务相关角色。这将保护您的 Amazon EKS 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其它服务的信息，请参阅[与 IAM 配合使用的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务相关角色文档。

## Amazon EKS 的服务相关角色权限
<a name="service-linked-role-permissions"></a>

Amazon EKS 使用名为 `AWSServiceRoleForAmazonEKSLocalOutpost` 的服务相关角色。该角色允许 Amazon EKS 管理您账户中的本地集群。附加的策略允许角色管理以下资源：网络接口、安全组、日志和 Amazon EC2 实例。

**注意**  
`AWSServiceRoleForAmazonEKSLocalOutpost` 服务相关角色不同于创建集群所需的角色。有关更多信息，请参阅 [Amazon EKS 集群 IAM 角色](cluster-iam-role.md)。

`AWSServiceRoleForAmazonEKSLocalOutpost` 服务相关角色信任以下服务代入该角色：
+  `outposts.eks-local.amazonaws.com` 

角色权限策略允许 Amazon EKS 对指定资源完成以下操作：
+  [AmazonEKSServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServiceRolePolicy.html) 

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。有关更多信息，请参阅*《IAM 用户指南》*中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为 Amazon EKS 创建服务相关角色
<a name="create-service-linked-role-eks-outpost"></a>

您无需手动创建服务相关角色。当您在 AWS 管理控制台、AWS CLI 或 AWS API 中创建集群时，Amazon EKS 会为您创建服务相关角色。

如果您删除该服务相关角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。当您创建集群时，Amazon EKS 将再次为您创建服务相关角色。

## 为 Amazon EKS 编辑服务相关角色
<a name="edit-service-linked-role-eks-outpost"></a>

Amazon EKS 不允许您编辑 `AWSServiceRoleForAmazonEKSLocalOutpost` 服务相关角色。在创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。不过，您可以使用 IAM 编辑角色的说明。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除适用于 Amazon EKS 的服务相关角色
<a name="delete-service-linked-role-eks-outpost"></a>

如果不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能手动删除它。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete-eks-outpost"></a>

必须先删除服务相关角色使用的所有资源，然后才能使用 IAM 删除该角色。

**注意**  
如果当您试图删除资源时 Amazon EKS 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 请在左侧导航窗格中，选择 Amazon EKS **Clusters**（集群）。

1. 如果您的集群具有任何节点组或 Fargate 配置文件，则必须先将其删除，然后才能删除该集群。有关更多信息，请参阅 [从集群中删除托管式节点组](delete-managed-node-group.md) 和 [删除 Fargate 配置文件](delete-fargate-profile.md)。

1. 在 **Clusters（集群）**页面上，选择要删除的集群，然后选择 **Delete（删除）**。

1. 在删除确认窗口中键入集群的名称，然后选择 **Delete（删除）**。

1. 对您账户中的任何其他集群重复此过程。等待所有删除操作完成。

### 手动删除服务相关角色
<a name="slr-manual-delete-eks-outpost"></a>

使用 IAM 控制台、AWS CLI 或 AWS API 删除 `AWSServiceRoleForAmazonEKSLocalOutpost` 服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Amazon EKS 服务相关角色支持的区域
<a name="slr-regions-eks-connector"></a>

Amazon EKS 支持在该服务可用的所有区域中使用服务相关角色。有关更多信息，请参阅 [Amazon EKS 端点和配额](https://docs.aws.amazon.com/general/latest/gr/eks.html)。

# 使用 Amazon EKS 控制面板的角色
<a name="using-service-linked-roles-eks-dashboard"></a>

Amazon EKS 控制面板通过此服务相关角色，来聚合有关来自多个区域和账户的集群资源的信息。控制面板与 AWS Organizations 集成，可安全读取有关组织中多个账户的信息。

要了解有关 Amazon EKS 控制面板的更多信息，请参阅 [使用 EKS 控制面板查看有关集群资源的聚合数据](cluster-dashboard.md)。

## 背景
<a name="_background"></a>

Amazon API Gateway 使用 AWS Identity and Access Management（IAM）[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EKS 直接相关。服务相关角色是由 Amazon EKS 预定义的，并包含服务代表您调用其它 AWS 服务所需的所有权限。

服务相关角色可让您更轻松地设置 Amazon EKS，因为您不必手动添加必要的权限。Amazon EKS 定义其服务相关角色的权限，除非另外定义，否则只有 Amazon EKS 可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务相关角色。这将保护您的 Amazon EKS 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其它服务的信息，请参阅[与 IAM 配合使用的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务相关角色文档。

## Amazon EKS 的服务相关角色权限
<a name="service-linked-role-permissions-eks-dashboard"></a>

Amazon EKS 使用名为 `AWSServiceRoleForAmazonEKSDashboard` 的服务相关角色。该角色允许 Amazon EKS 生成和显示 EKS 控制面板，包括有关集群资源的聚合信息。附加的 `AmazonEKSDashboardServiceRolePolicy` 策略允许角色管理以下资源：自动扩缩组、安全组、启动模板和 IAM 实例配置文件。有关更多信息，请参阅 [AWS 托管策略：AmazonEKSDashboardServiceRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSDashboardServiceRolePolicy)。

`AWSServiceRoleForAmazonEKSDashboard` 服务相关角色信任以下服务代入该角色：
+  `dashboard.eks.amazonaws.com` 

要查看 JSON 策略文档的最新版本，请参阅《AWS Managed Policy Reference Guide》中的 [AmazonEKSDashboardServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSDashboardServiceRolePolicy.html#AmazonEKSDashboardServiceRolePolicy-json)。

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。有关更多信息，请参阅*《IAM 用户指南》*中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为 Amazon EKS 创建服务相关角色
<a name="create-service-linked-role-eks-dashboard"></a>

您无需手动创建服务相关角色。当您在 AWS 控制台中启用控制面板时，Amazon EKS 会为您创建服务相关角色。

有关启用 EKS 控制面板的更多信息，请参阅 [配置 EKS 控制面板与 AWS Organizations 的集成](cluster-dashboard-orgs.md)。

**重要**  
如果您在其他使用此角色支持的功能的服务中完成某个操作，此服务相关角色可以出现在您的账户中。

## 为 Amazon EKS 编辑服务相关角色
<a name="edit-service-linked-role-eks-dashboard"></a>

Amazon EKS 不允许您编辑 `AWSServiceRoleForAmazonEKSDashboard` 服务相关角色。创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除适用于 Amazon EKS 的服务相关角色
<a name="delete-service-linked-role-eks-dashboard"></a>

如果不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能手动删除它。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete-eks-dashboard"></a>

必须先删除服务相关角色使用的所有资源，然后才能使用 IAM 删除该角色。

**注意**  
如果当您试图删除资源时 Amazon EKS 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

有关禁用 EKS 控制面板的更多信息，请参阅 [配置 EKS 控制面板与 AWS Organizations 的集成](cluster-dashboard-orgs.md)。

### 手动删除服务相关角色
<a name="slr-manual-delete-eks-dashboard"></a>

使用 IAM 控制台、AWS CLI 或 AWS API 删除 `AWSServiceRoleForAmazonEKSDashboard` 服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Amazon EKS 服务相关角色支持的区域
<a name="slr-regions-eks-dashboard"></a>

Amazon EKS 支持在该服务可用的所有区域中使用服务相关角色。有关更多信息，请参阅 [Amazon EKS 端点和配额](https://docs.aws.amazon.com/general/latest/gr/eks.html)。

# Amazon EKS 容器组（pod）执行 IAM 角色
<a name="pod-execution-role"></a>

要在 AWS Fargate 基础设施上运行容器组（pod），需要有 Amazon EKS 容器组（pod）执行角色。

当集群在 AWS Fargate 基础设施上创建容器组（pod）时，在 Fargate 基础设施上运行的组件必须代表您调用 AWS API。这是为了他们可以执行诸如从 Amazon ECR 中拉取容器镜像或将日志路由到其他 AWS 服务的操作。Amazon EKS 容器组（pod）执行角色提供执行此操作的 IAM 权限。

创建 Fargate 配置文件时，必须使用配置文件为在 Fargate 基础设施上运行的 Amazon EKS 组件指定容器组（pod）执行角色。此角色将被添加到集群的 Kubernetes [基于角色的访问控制](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)（RBAC）以进行授权。这允许在 Fargate 基础设施上运行的 `kubelet` 注册到您的 Amazon EKS 集群，以便它可以作为节点显示在您的集群中。

**注意**  
Fargate 配置文件的 IAM 角色必须与 Amazon EC2 节点组的 IAM 角色不同。

**重要**  
在 Fargate 容器组（pod）中运行的容器不能承担与容器组（pod）执行角色相关联的 IAM 权限。要授予 Fargate 容器组（pod）中的容器访问其他 AWS 服务的权限，您必须使用[服务账户的 IAM 角色](iam-roles-for-service-accounts.md)。

在创建 Fargate 配置文件之前，必须使用 [AmazonEKSFargatePodExecutionRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSFargatePodExecutionRolePolicy.html)创建 IAM 角色。

## 检查是否有配置正确的现有容器组（pod）执行角色
<a name="check-pod-execution-role"></a>

您可以按照以下程序检查并查看账户是否已有正确配置的 Amazon EKS 容器组（pod）执行角色。为了避免混淆代理安全问题，该角色必须根据 `SourceArn` 限制访问权限。您可以根据需要修改执行角色，以包括对其他集群上的 Fargate 配置文件的支持。

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **角色**。

1. 在 **Roles**（角色）页面上，搜索 **AmazonEKSFargatePodExecutionRole** 的角色列表。如果该角色不存在，请参阅 [创建 Amazon EKS 容器组（pod）执行角色](#create-pod-execution-role) 以创建该角色。如果该角色存在，请选择该角色。

1. 在 **AmazonEKSFargatePodExecutionRole** 页面上，请执行以下操作：

   1. 选择**权限**。

   1. 确保将 **AmazonEKSFargatePodExecutionRolePolicy** Amazon 托管策略附加到该角色。

   1. 选择**信任关系**。

   1. 选择 **Edit trust policy**（编辑信任策略）。

1. 在 **Edit trust policy**（编辑信任策略）页面中，验证信任关系是否包含以下策略，并且在集群上是否有 Fargate 配置文件的行。如果是这样，请选择 **Cancel**（取消）。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Condition": {
            "ArnLike": {
               "aws:SourceArn": "arn:aws:eks:us-east-1:111122223333:fargateprofile/my-cluster/*"
            }
         },
         "Principal": {
           "Service": "eks-fargate-pods.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

   如果策略匹配但没有指定集群上 Fargate 配置文件的行，则可以在 `ArnLike` 对象顶部添加以下行。将 *region-code* 替换为您在其中创建该集群的 AWS 区域，将 *111122223333* 替换为您的账户 ID，并将 *my-cluster* 替换为您的集群的名称。

   ```
   "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*",
   ```

   如果策略不匹配，请将之前的完整策略复制到表单中，然后选择 **Update policy**（更新策略）。将 *region-code* 替换为您的集群所在的 AWS 区域。如果您希望在账户中的所有 AWS 区域使用相同的角色，请将 *region-code* 替换为 `*`。将 *111122223333* 替换为您的账户 ID，并将 *my-cluster* 替换为您的集群名称。如果您希望在账户中对所有集群使用相同角色，请将 *my-cluster* 替换为 `*`。

## 创建 Amazon EKS 容器组（pod）执行角色
<a name="create-pod-execution-role"></a>

如果尚无用于集群的 Amazon EKS 容器组（pod）执行角色，您可以使用 AWS 管理控制台 或 AWS CLI 来创建该角色。

 AWS 管理控制台   

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **Roles**（角色）。

1. 在 **Roles**（角色）页面上，选择 **Create role**（创建角色）。

1. 在 **Select trusted entity**（选择受信任的实体）页面上，请执行以下操作：

   1. 在**可信实体类型**部分中，选择 **AWS 服务**。

   1. 从**其它 AWS 服务的使用案例**下拉列表中，选择 **EKS**。

   1. 选择 **EKS – Fargate 容器组（pod）**。

   1. 选择**下一步**。

1. 在 **Add permissions**（添加权限）页面上，选择 **Next**（下一步）。

1. 在 **Name, review, and create**（命名、查看和创建）页面中，请执行以下操作：

   1. 对于 **Role name**（角色名称），请为角色输入唯一名称，例如 `AmazonEKSFargatePodExecutionRole`。

   1. 在**添加标签（可选）**下，将标签作为键值对附加，以将元数据添加到角色。有关在 IAM 中使用标签的更多信息，请参阅《IAM 用户指南》** 中的[标记 IAM 资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

   1. 选择**创建角色**。

1. 在**角色**页面上，搜索 **AmazonEKSFargatePodExecutionRole** 的角色列表。选择角色。

1. 在 **AmazonEKSFargatePodExecutionRole** 页面上，请执行以下操作：

   1. 选择**信任关系**。

   1. 选择 **Edit trust policy**（编辑信任策略）。

1. 在 **Edit trust policy**（编辑信任策略）页面上，执行以下操作：

   1. 将以下内容复制并粘贴到 **Edit trust policy**（编辑信任策略）表单中。将 *region-code* 替换为您的集群所在的 AWS 区域。如果您希望在账户中的所有 AWS 区域使用相同的角色，请将 *region-code* 替换为 `*`。将 *111122223333* 替换为您的账户 ID，并将 *my-cluster* 替换为您的集群名称。如果您希望在账户中对所有集群使用相同角色，请将 *my-cluster* 替换为 `*`。

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Condition": {
               "ArnLike": {
                  "aws:SourceArn": "arn:aws:eks:us-east-1:111122223333:fargateprofile/my-cluster/*"
               }
            },
            "Principal": {
              "Service": "eks-fargate-pods.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. 选择**更新策略**。

 AWS CLI  

1. 复制并将以下内容粘贴到名为 `pod-execution-role-trust-policy.json` 的文件中。将 *region-code* 替换为您的集群所在的 AWS 区域。如果您希望在账户中的所有 AWS 区域使用相同的角色，请将 *region-code* 替换为 `*`。将 *111122223333* 替换为您的账户 ID，并将 *my-cluster* 替换为您的集群名称。如果您希望在账户中对所有集群使用相同角色，请将 *my-cluster* 替换为 `*`。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Condition": {
            "ArnLike": {
               "aws:SourceArn": "arn:aws:eks:us-east-1:111122223333:fargateprofile/my-cluster/*"
            }
         },
         "Principal": {
           "Service": "eks-fargate-pods.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. 创建容器组（pod）执行 IAM 角色。

   ```
   aws iam create-role \
     --role-name AmazonEKSFargatePodExecutionRole \
     --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
   ```

1. 将所需的 Amazon EKS 托管 IAM policy 附加到角色。

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \
     --role-name AmazonEKSFargatePodExecutionRole
   ```

# Amazon EKS Connector IAM 角色
<a name="connector-iam-role"></a>

您可以连接 Kubernetes 集群以便在 AWS 管理控制台 中查看。要连接 Kubernetes 集群，创建 IAM 角色。

## 检查现有 EKS connector 角色
<a name="check-connector-role"></a>

您可以使用以下过程检查并查看您的账户是否已有 Amazon EKS connector 角色。

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **角色**。

1. 在角色列表中搜索 `AmazonEKSConnectorAgentRole`。如果不存在包含 `AmazonEKSConnectorAgentRole` 的角色，请参阅 [创建 Amazon EKS Connector 代理角色](#create-connector-role) 来创建角色。如果包含 `AmazonEKSConnectorAgentRole` 的角色确实存在，则选择角色以查看附加的策略。

1. 选择**权限**。

1. 确保将 **AmazonEKSConnectorAgentPolicy** 托管策略附加到此角色。如果附加该策略，则将正确配置 Amazon EKS connector 角色。

1. 选择 **Trust relationships**（信任关系），然后选择 **Edit trust policy**（编辑信任策略）。

1. 验证信任关系是否包含以下策略。如果信任关系符合以下策略，请选择 **Cancel**（取消）。如果信任关系不匹配，请将策略复制到**编辑信任策略**窗口并选择**更新策略**。

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "ssm.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

## 创建 Amazon EKS Connector 代理角色
<a name="create-connector-role"></a>

您可以使用 AWS 管理控制台 或 AWS CloudFormation 创建 connector 代理角色。

 AWS CLI  

1. 创建一个名为 `eks-connector-agent-trust-policy.json` 的文件，其中包含要用于 IAM 角色的以下 JSON。

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "ssm.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

1. 创建一个名为 `eks-connector-agent-policy.json` 的文件，其中包含要用于 IAM 角色的以下 JSON。

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "SsmControlChannel",
               "Effect": "Allow",
               "Action": [
                   "ssmmessages:CreateControlChannel"
               ],
               "Resource": "arn:aws:eks:*:*:cluster/*"
           },
           {
               "Sid": "ssmDataplaneOperations",
               "Effect": "Allow",
               "Action": [
                   "ssmmessages:CreateDataChannel",
                   "ssmmessages:OpenDataChannel",
                   "ssmmessages:OpenControlChannel"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. 使用您在之前列表项中创建的信任策略和策略创建 Amazon EKS Connector 代理角色。

   ```
   aws iam create-role \
        --role-name AmazonEKSConnectorAgentRole \
        --assume-role-policy-document file://eks-connector-agent-trust-policy.json
   ```

1. 将该策略附加到 Amazon EKS Connector 代理角色。

   ```
   aws iam put-role-policy \
        --role-name AmazonEKSConnectorAgentRole \
        --policy-name AmazonEKSConnectorAgentPolicy \
        --policy-document file://eks-connector-agent-policy.json
   ```

 AWS CloudFormation  

1. 将以下 AWS CloudFormation 模板保存到本地系统中的文本文件。
**注意**  
此模板还创建服务相关角色，否则调用 `registerCluster` API 时将创建。有关详细信息，请参阅 [使用角色将 Kubernetes 集群连接到 Amazon EKS](using-service-linked-roles-eks-connector.md)。

   ```
   ---
   AWSTemplateFormatVersion: '2010-09-09'
   Description: 'Provisions necessary resources needed to register clusters in EKS'
   Parameters: {}
   Resources:
     EKSConnectorSLR:
       Type: AWS::IAM::ServiceLinkedRole
       Properties:
         AWSServiceName: eks-connector.amazonaws.com
   
     EKSConnectorAgentRole:
       Type: AWS::IAM::Role
       Properties:
         AssumeRolePolicyDocument:
           Version: '2012-10-17'
           Statement:
             - Effect: Allow
               Action: [ 'sts:AssumeRole' ]
               Principal:
                 Service: 'ssm.amazonaws.com'
   
     EKSConnectorAgentPolicy:
       Type: AWS::IAM::Policy
       Properties:
         PolicyName: EKSConnectorAgentPolicy
         Roles:
           - {Ref: 'EKSConnectorAgentRole'}
         PolicyDocument:
           Version: '2012-10-17'
           Statement:
             - Effect: 'Allow'
               Action: [ 'ssmmessages:CreateControlChannel' ]
               Resource:
               - Fn::Sub: 'arn:${AWS::Partition}:eks:*:*:cluster/*'
             - Effect: 'Allow'
               Action: [ 'ssmmessages:CreateDataChannel', 'ssmmessages:OpenDataChannel', 'ssmmessages:OpenControlChannel' ]
               Resource: "*"
   Outputs:
     EKSConnectorAgentRoleArn:
       Description: The agent role that EKS connector uses to communicate with AWS services.
       Value: !GetAtt EKSConnectorAgentRole.Arn
   ```

1. 打开 [AWS CloudFormation 控制台](https://console.aws.amazon.com/cloudformation/)。

1. 选择使用新资源**创建堆栈**（标准）。

1. 对于**指定模板**，选择**上传模板文件**，然后选择**选择文件**。

1. 选择您之前创建的文件，然后选择**下一步**。

1. 对于 **Stack name (堆栈名称)**，输入角色的名称，如 `eksConnectorAgentRole`，然后选择 **Next (下一步)**。

1. 在**配置堆栈选项**页面上，请选择**下一步**。

1. 在 **Review（审核）**页面上审核您的信息，确认堆栈可创建 IAM 资源，然后选择 **Create stack（创建堆栈）**。

# Amazon Elastic Kubernetes Service 的AWS托管策略
<a name="security-iam-awsmanpol"></a>

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

请记住，AWS 托管式策略可能不会为您的特定使用案例授予最低权限，因为其可供所有 AWS 客户使用。我们建议通过定义特定于使用案例的[客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)来进一步减少权限。

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

有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

## AWS托管策略：AmazonEKS\$1CNI\$1Policy
<a name="security-iam-awsmanpol-amazoneks-cni-policy"></a>

您可以将 `AmazonEKS_CNI_Policy` 附加到 IAM 实体。在创建 Amazon EC2 节点组之前，此策略必须附加到[节点 IAM 角色](create-node-role.md)，或适用于 Kubernetes 的 Amazon VPC CNI 插件专用的 IAM 角色。这样它可以代表您执行操作。我们建议您将策略附加到仅由插件使用的角色。有关更多信息，请参阅[使用 Amazon VPC CNI 将 IP 分配给容器组（pod）](managing-vpc-cni.md)和[配置 Amazon VPC CNI 插件以使用 IRSA](cni-iam-role.md)。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  **`ec2:*NetworkInterface` 和 `ec2:*PrivateIpAddresses`**：允许 Amazon VPC CNI 插件执行操作，例如为容器组（pod）预置弹性网络接口和 IP 地址，以便为 Amazon EKS 中运行的应用程序提供联网。
+  **`ec2` 读取操作** – 允许 Amazon VPC CNI 插件执行操作，例如描述实例和子网，以查看您的 Amazon VPC 子网中的免费 IP 地址数量。VPC CNI 可以使用每个子网中的免费 IP 地址来选择空闲 IP 地址最多的子网，以便在创建弹性网络接口时使用。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKS\$1CNI\$1Policy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html#AmazonEKS_CNI_Policy-json)。

## AWS托管策略：AmazonEKSClusterPolicy
<a name="security-iam-awsmanpol-amazoneksclusterpolicy"></a>

您可以将 `AmazonEKSClusterPolicy` 附加到您的 IAM 实体。在创建集群之前，您必须拥有附加了此策略的[集群 IAM 角色](cluster-iam-role.md)。由 Amazon EKS 托管的 Kubernetes 集群会代表您调用其他 AWS 服务。它们这样做的目的是为了管理您与服务一起使用的资源。

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  **`autoscaling`** – 读取和更新自动扩缩组的配置。Amazon EKS 不使用这些权限，但它们保留在策略中，以确保向后兼容。
+  **`ec2`** – 使用与 Amazon EC2 节点关联的卷和网络资源执行工作。此为必需操作，以便 Kubernetes 控制面板可以将实例加入到集群，并动态预置和管理 Kubernetes 持久卷请求的 Amazon EBS 卷。
+  **`ec2`**：删除由 VPC CNI 创建的弹性网络接口。这是必需项，以便 EKS 可以清理 VPC CNI 意外退出时留下的弹性网络接口。
+  ** `elasticloadbalancing` **：使用弹性负载均衡器并将节点添加到其中作为目标。此为必需操作，以便 Kubernetes 控制层面能够动态预置 Kubernetes 服务请求的 Elastic Load Balancer。
+  ** `iam` **：创建服务相关角色。此为必需操作，以便 Kubernetes 控制面板能够动态预置 Kubernetes 服务请求的 Elastic Load Balancer。
+  **`kms`** – 从 AWS KMS 读取密钥。这对于 Kubernetes 控制面板是必需的，以支持 `etcd` 中存储的 Kubernetes 密钥的[密钥加密](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/)。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html#AmazonEKSClusterPolicy-json)。

## AWS 托管策略：AmazonEKSDashboardConsoleReadOnly
<a name="security-iam-awsmanpol-amazoneksdashboardconsolereadonly"></a>

您可以将 `AmazonEKSDashboardConsoleReadOnly` 附加到 IAM 实体。

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  **`eks`**：对 EKS 控制面板数据、资源和集群版本信息的只读访问权限。这允许查看与 EKS 相关的指标和集群配置详细信息。
+  **`organizations`**：对 AWS Organizations 信息的只读访问权限，包括：
  + 查看组织详细信息和服务访问权限
  + 列出组织根、账户和组织单位
  + 查看组织结构

要查看 JSON 策略文档的最新版本，请参阅《AWS Managed Policy Reference Guide》中的 [AmazonEKSDashboardConsoleReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSDashboardConsoleReadOnly.html#AmazonEKSDashboardConsoleReadOnly-json)。

## AWS托管策略：AmazonEKSFargatePodExecutionRolePolicy
<a name="security-iam-awsmanpol-amazoneksfargatepodexecutionrolepolicy"></a>

您可以将 `AmazonEKSFargatePodExecutionRolePolicy` 附加到您的 IAM 实体。在创建 Fargate 配置文件之前，您必须创建 Fargate 容器组（pod）执行角色并将此策略附加到其上。有关更多信息，请参阅 [第 2 步：创建 Fargate 容器组（pod）执行角色](fargate-getting-started.md#fargate-sg-pod-execution-role) 和 [定义启动时将使用 AWS Fargate 的容器组（pod）](fargate-profile.md)。

此策略向该角色授予权限，可提供对必须在 Fargate 上运行 Amazon EKS 容器组（pod）的其他 AWS 服务资源的访问权限。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  ** `ecr` **：允许在 Fargate 上运行的容器组（pod）提取存储在 Amazon ECR 中的容器镜像。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSFargatePodExecutionRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSFargatePodExecutionRolePolicy.html#AmazonEKSFargatePodExecutionRolePolicy-json)。

## AWS 托管式策略：AmazonEKSConnectorServiceRolePolicy
<a name="security-iam-awsmanpol-AmazonEKSConnectorServiceRolePolicy"></a>

您不能将 `AmazonEKSConnectorServiceRolePolicy` 附加到自己的 IAM 实体。将此策略附加到允许 Amazon EKS 代表您执行操作的服务相关角色。有关更多信息，请参阅 [使用角色将 Kubernetes 集群连接到 Amazon EKS](using-service-linked-roles-eks-connector.md)。

该角色允许 Amazon EKS 连接 Kubernetes 集群。附加的策略允许角色管理必要的资源，以便连接到注册的 Kubernetes 集群。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限。
+  ** `SSM Management` **：创建、描述和删除 SSM 激活，并取消注册托管实例。此功能允许基本的 Systems Manager 操作。
+  ** `Session Management` **：启动专门针对 EKS 集群的 SSM 会话，并使用 AmazonEKS 文档执行非交互式命令。
+  ** `IAM Role Passing` **：将 IAM 角色专门传递给 SSM 服务，该服务由将传递角色限制为 `ssm.amazonaws.com` 的条件控制。
+  ** `EventBridge Rules` **：创建 EventBridge 规则和目标，但仅当由 `eks-connector.amazonaws.com` 管理时。作为事件源，规则特别限于 AWS SSM。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSConnectorServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSConnectorServiceRolePolicy.html)。

## AWS托管策略：AmazonEKSForFargateServiceRolePolicy
<a name="security-iam-awsmanpol-amazoneksforfargateservicerolepolicy"></a>

您不能将 `AmazonEKSForFargateServiceRolePolicy` 附加到自己的 IAM 实体。将此策略附加到允许 Amazon EKS 代表您执行操作的服务相关角色。有关更多信息，请参阅 `AWSServiceRoleforAmazonEKSForFargate`。

此策略授予 Amazon EKS 运行 Fargate 任务所必要的权限。仅当您具有 Fargate 节点时，才会使用此策略。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限。
+  ** `ec2` **：创建和删除弹性网络接口，并描述弹性网络接口和资源。此为必需操作，以便 Amazon EKS Fargate 服务可以配置 Fargate 容器组（pod）所需的 VPC 联网。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSForFargateServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSForFargateServiceRolePolicy.html#AmazonEKSForFargateServiceRolePolicy-json)。

## AWS 托管策略：AmazonEKSComputePolicy
<a name="security-iam-awsmanpol-AmazonEKSComputePolicy"></a>

您可以将 `AmazonEKSComputePolicy` 附加到 IAM 实体。您可以将此策略附加到您的[集群 IAM 角色](cluster-iam-role.md)，以扩展 EKS 可以在您的账户中管理的资源。

该策略授予 Amazon EKS 为 EKS 集群创建和管理 EC2 实例所需的权限，以及配置 EC2 所需的 IAM 权限。此外，此策略还授予 Amazon EKS 代表您创建 EC2 竞价型实例服务相关角色的权限。

### 权限详细信息
<a name="_permissions_details"></a>

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  ** `ec2` 权限**：
  +  `ec2:CreateFleet` 和 `ec2:RunInstances` – 允许创建 EC2 实例，并将特定的 EC2 资源（映像、安全组、子网）用于 EKS 集群节点。
  +  `ec2:CreateLaunchTemplate` – 允许为 EKS 集群节点创建 EC2 启动模板。
  + 该策略还包括一些条件，用于将这些 EC2 权限的使用限制在标有 EKS 集群名称和其他相关标签的资源。
  +  `ec2:CreateTags` – 允许向 `CreateFleet`、`RunInstances` 和 `CreateLaunchTemplate` 操作创建的 EC2 资源添加标签。
+  ** `iam` 权限**：
  +  `iam:AddRoleToInstanceProfile` – 允许向 EKS 计算实例配置文件添加 IAM 角色。
  +  `iam:PassRole` – 允许将必要的 IAM 角色传递给 EC2 服务。

要查看 JSON 策略文档的最新版本，请参阅《AWS Managed Policy Reference Guide》中的 [AmazonEKSComputePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSComputePolicy.html#AmazonEKSComputePolicy-json)。

## AWS 托管策略：AmazonEKSNetworkingPolicy
<a name="security-iam-awsmanpol-AmazonEKSNetworkingPolicy"></a>

您可以将 `AmazonEKSNetworkingPolicy` 附加到 IAM 实体。您可以将此策略附加到您的[集群 IAM 角色](cluster-iam-role.md)，以扩展 EKS 可以在您的账户中管理的资源。

该策略旨在授予 Amazon EKS 创建和管理 EKS 集群网络接口的必要权限，从而允许控制面板和 Worker 节点正常通信和运行。

### 权限详细信息
<a name="_permissions_details_2"></a>

此策略授予以下权限以允许 Amazon EKS 管理集群的网络接口：
+  **`ec2` 网络接口权限**：
  +  `ec2:CreateNetworkInterface` – 允许创建 EC2 网络接口。
  + 该策略包括一些条件，用于将此权限的使用限制在标有 EKS 集群名称和 Kubernetes CNI 节点名称的网络接口。
  +  `ec2:CreateTags` – 允许向 `CreateNetworkInterface` 操作创建的网络接口添加标签。
+  **`ec2` 网络接口管理权限**：
  +  `ec2:AttachNetworkInterface`、`ec2:ModifyNetworkInterfaceAttribute`、`ec2:DetachNetworkInterface`–允许附加、修改网络接口属性以及从 EC2 实例分离网络接口。
  +  `ec2:UnassignPrivateIpAddresses`、`ec2:UnassignIpv6Addresses`、`ec2:AssignPrivateIpAddresses`、`ec2:AssignIpv6Addresses` – 允许管理网络接口的 IP 地址分配。
  + 这些权限仅限于标有 EKS 集群名称的网络接口。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSNetworkingPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSNetworkingPolicy.html#AmazonEKSNetworkingPolicy-json)。

## AWS 托管策略：AmazonEKSBlockStoragePolicy
<a name="security-iam-awsmanpol-AmazonEKSBlockStoragePolicy"></a>

您可以将 `AmazonEKSBlockStoragePolicy` 附加到 IAM 实体。您可以将此策略附加到您的[集群 IAM 角色](cluster-iam-role.md)，以扩展 EKS 可以在您的账户中管理的资源。

该策略授予 Amazon EKS 为 EKS 集群创建、管理和维护 EC2 卷和快照的必要权限，从而允许控制面板和 Worker 节点按照 Kubernetes 工作负载的要求预置和使用永久存储。

### 权限详细信息
<a name="_permissions_details_3"></a>

此 IAM 策略授予以下允许 Amazon EKS 管理 EC2 卷和快照的权限：
+  ** `ec2` 卷管理权限**：
  +  `ec2:AttachVolume`、`ec2:DetachVolume`、`ec2:ModifyVolume`、`ec2:EnableFastSnapshotRestores` – 允许附加、分离、修改和启用 EC2 卷的快速快照还原。
  + 这些权限仅限于标有 EKS 集群名称的卷。
  +  `ec2:CreateTags` – 允许向 `CreateVolume` 和 `CreateSnapshot` 操作创建的 EC2 卷和快照添加标签。
+  ** `ec2` 卷创建权限**：
  +  `ec2:CreateVolume` – 允许创建新的 EC2 卷。
  + 该策略包括一些条件，用于将此项权限的使用限制在标有 EKS 集群名称和其他相关标签的卷。
  +  `ec2:CreateSnapshot` – 允许创建新的 EC2 卷快照。
  + 该策略包括一些条件，用于将此项权限的使用限制在标有 EKS 集群名称和其他相关标签的快照。

要查看 JSON 策略文档的最新版本，请参阅《AWS Managed Policy Reference Guide》中的 [AmazonEKSBlockStoragePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSBlockStoragePolicy.html#AmazonEKSBlockStoragePolicy-json)。

## AWS 托管策略：AmazonEKSLoadBalancingPolicy
<a name="security-iam-awsmanpol-AmazonEKSLoadBalancingPolicy"></a>

您可以将 `AmazonEKSLoadBalancingPolicy` 附加到 IAM 实体。您可以将此策略附加到您的[集群 IAM 角色](cluster-iam-role.md)，以扩展 EKS 可以在您的账户中管理的资源。

此 IAM 策略授予 Amazon EKS 使用各种 AWS 服务管理弹性负载均衡器（ELB）和相关资源的必要权限。

### 权限详细信息
<a name="_permissions_details_4"></a>

此策略授予的密钥权限是：
+  **`elasticloadbalancing` **：允许创建、修改和管理弹性负载均衡器和目标组。这包括创建、更新和删除负载均衡器、目标组、侦听器和规则的权限。
+  **`ec2` **：允许创建和管理 Kubernetes 控制面板将实例加入到集群并管理 Amazon EBS 卷所需的安全组。还允许描述和列出 EC2 资源，例如实例、VPC、子网、安全组和其他联网资源。
+  **`iam` **：允许为弹性负载均衡创建服务相关角色，这是 Kubernetes 控制面板动态预置 ELB 所必需的。
+  ** `kms` **：允许通过 AWS KMS 读取密钥，这对于 Kubernetes 控制面板是必需的，以支持 etcd 中存储的 Kubernetes 密钥的加密。
+  ** `wafv2` ** 和 ** `shield` **：允许关联和取消关联 Web ACL 以及为弹性负载均衡器创建/删除 AWS Shield 保护。
+  ** `cognito-idp` **、** `acm` ** 和 ** `elasticloadbalancing` **：授予描述用户池客户端、列出和描述证书以及描述目标群体的权限，这些权限是 Kubernetes 控制面板管理弹性负载均衡器所必需的。

该策略还包括多项条件检查，确保使用 `eks:eks-cluster-name` 标签将权限范围限于所托管的特定 EKS 集群。

要查看 JSON 策略文档的最新版本，请参阅《AWS Managed Policy Reference Guide》中的 [AmazonEKSLoadBalancingPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSLoadBalancingPolicy.html#AmazonEKSLoadBalancingPolicy-json)。

## AWS 托管式策略：AmazonEKSMCPReadOnlyAccess
<a name="security-iam-awsmanpol-amazoneksmcpreadonlyaccess"></a>

您可以将 `AmazonEKSMCPReadOnlyAccess` 附加到 IAM 实体。此策略提供对 Amazon EKS 资源和相关 AWS 服务的只读访问权限，使 Amazon EKS 模型上下文协议（MCP）服务器无需对您的基础设施进行任何修改，即可执行可观测性和问题排查操作。

 **权限详细信息** 

此策略包含允许主体完成下列任务的以下权限：
+  ** `eks` ** 允许主体描述和列出 EKS 集群、节点组、附加组件、访问条目、见解以及访问 Kubernetes API 以执行只读操作。
+  ** `iam` ** 允许主体检索有关 IAM 角色、策略及其附件的信息，以了解与 EKS 资源关联的权限。
+  ** `ec2` ** 允许主体描述 VPC、子网和路由表，以了解 EKS 集群的网络配置。
+  ** `sts` ** 允许主体出于身份验证和授权目的检索呼叫方身份信息。
+  ** `logs` ** 允许主体启动查询并从 CloudWatch Logs 中检索查询结果以进行问题排查和监控。
+  ** `cloudwatch` ** 允许主体检索用于监控集群和工作负载性能的指标数据。
+  ** `eks-mcp` ** 允许主体在 Amazon EKS MCP 服务器中调用 MCP 操作和调用只读工具。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSMCPReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSMCPReadOnlyAccess.html)。

## AWS托管策略：AmazonEKSServicePolicy
<a name="security-iam-awsmanpol-amazoneksservicepolicy"></a>

您可以将 `AmazonEKSServicePolicy` 附加到 IAM 实体。在 2020 年 4 月 16 日之前创建的集群需要您创建 IAM 角色并向其附加此策略。在 2020 年 4 月 16 日或之后创建的集群无需您创建角色，也不需要您分配此策略。当您使用具有 `iam:CreateServiceLinkedRole` 权限的 IAM 主体创建集群时，将会自动为您创建 [AWSServiceRoleforAmazonEKS](using-service-linked-roles-eks.md#service-linked-role-permissions-eks) 服务相关角色。服务相关角色附加了[托管策略：AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)。

此策略允许 Amazon EKS 创建和管理运行 Amazon EKS 集群所需的资源。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限。
+  ** `eks` **：启动更新后，更新您集群的 Kubernetes 版本。Amazon EKS 不使用此权限，但其仍保留在策略中，以确保向后兼容。
+  ** `ec2` **：使用弹性网络接口和其它网络资源和标签。这是 Amazon EKS 配置联网以便于节点和 Kubernetes 控制层面之间进行通信所必需的。阅读有关安全组的信息。更新安全组上的标签。
+  ** `route53` **：将 VPC 与托管区域关联。这是 Amazon EKS 实现 Kubernetes 集群 API 服务器私有端点联网所必需的。
+  ** `logs` **：录入事件。此为必需操作，以便 Amazon EKS 可以将 Kubernetes 控制层面日志发送到 CloudWatch。
+  ** `iam` **：创建服务相关角色。此为必需操作，以便 Amazon EKS 可以代表您创建 [Amazon EKS 的服务相关角色权限](using-service-linked-roles-eks.md#service-linked-role-permissions-eks) 服务相关角色。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html#AmazonEKSServicePolicy-json)。

## AWS托管策略：AmazonEKSServiceRolePolicy
<a name="security-iam-awsmanpol-amazoneksservicerolepolicy"></a>

您不能将 `AmazonEKSServiceRolePolicy` 附加到自己的 IAM 实体。将此策略附加到允许 Amazon EKS 代表您执行操作的服务相关角色。有关更多信息，请参阅 [Amazon EKS 的服务相关角色权限](using-service-linked-roles-eks.md#service-linked-role-permissions-eks)。当您使用具有 `iam:CreateServiceLinkedRole` 权限的 IAM 主体创建集群时，将会自动为您创建 [AWSServiceRoleforAmazonEKS](using-service-linked-roles-eks.md#service-linked-role-permissions-eks) 服务相关角色，而且此策略会附加到该角色。

此策略允许服务相关角色代表您调用AWS服务。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限。
+  ** `ec2` **：创建和描述弹性网络接口和 Amazon EC2 实例、集群安全组及创建集群所需的 VPC。有关更多信息，请参阅 [查看集群的 Amazon EKS 安全组要求](sec-group-reqs.md)。阅读有关安全组的信息。更新安全组上的标签。阅读关于按需容量预留的信息。阅读包括路由表和网络 ACL 在内的 VPC 配置，以检测配置问题，这是集群见解的一部分。
+  **`ec2` 自动模式** – 终止由 EKS 自动模式创建的 EC2 实例。有关更多信息，请参阅 [使用 EKS 自动模式实现集群基础设施自动化](automode.md)。
+  ** `iam` **：列出附加到 IAM 角色的所有托管式策略。此为必需操作，以便 Amazon EKS 能够列出和验证创建集群所需的所有托管策略和权限。
+  **将 VPC 与托管区关联** – 这是 Amazon EKS 实现 Kubernetes 集群 API 服务器私有端点联网所必需的。
+  **日志事件** – 此为必需操作，以便 Amazon EKS 可以将 Kubernetes 控制面板日志发送到 CloudWatch。
+  **放入指标** – 此为必需操作，这样 Amazon EKS 就可以将 Kubernetes 控制面板日志发送到 CloudWatch。
+  ** `eks` **：管理集群访问条目和策略，允许精细控制可以访问 EKS 资源的主体以及其可执行的操作。这包括为计算、联网、负载均衡和存储操作关联标准访问策略。
+  ** `elasticloadbalancing` **：创建、管理和删除与 EKS 集群关联的负载均衡器及其组件（侦听器、目标组、证书）。查看负载均衡器属性和运行状态。
+  ** `events` ** – 创建并管理 EventBridge 规则，以便监控与 EKS 集群相关的 EC2 和 AWS Health 事件，实现对基础设施更改和运行状况警报的自动响应。
+  ** `iam` **：管理含“eks”前缀的 EC2 实例配置文件，包括创建、删除和角色关联，这是 EKS 节点管理所必需的。允许描述任何实例配置文件，以使用户能够为其 Worker 节点定义自定义实例配置文件以供使用。
+  ** `pricing` ** ** `shield` **：访问 AWS 定价信息和 Shield 保护状态，为 EKS 资源启用成本管理和高级安全功能。
+  **资源清理** – 在集群清理操作期间，安全删除带有 EKS 标签的资源，包括卷、快照、启动模板和网络接口。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServiceRolePolicy.html#AmazonEKSServiceRolePolicy-json)。

## AWS托管策略：AmazonEKSVPCResourceController
<a name="security-iam-awsmanpol-amazoneksvpcresourcecontroller"></a>

您可以将 `AmazonEKSVPCResourceController` 策略附加到 IAM 身份。如果您使用[适用于容器组（pod）的安全组](security-groups-for-pods.md)，您必须将此策略附加到您的 [Amazon EKS 集群 IAM 角色](cluster-iam-role.md)，以便其代表您执行操作。

此策略授予集群角色管理弹性网络接口和节点 IP 地址的权限。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  ** `ec2` **：管理弹性网络接口和 IP 地址以支持容器组（pod）安全组和 Windows 节点。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSVPCResourceController](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSVPCResourceController.html#AmazonEKSVPCResourceController-json)。

## AWS托管策略：AmazonEKSWorkerNodePolicy
<a name="security-iam-awsmanpol-amazoneksworkernodepolicy"></a>

您可以将 `AmazonEKSWorkerNodePolicy` 附加到 IAM 实体。您必须将此策略附加到您在创建允许 Amazon EKS 代表您执行操作的 Amazon EC2 节点时指定的[节点 IAM 角色](create-node-role.md)。如果您使用 `eksctl` 创建节点组，则其会创建节点 IAM 角色并自动将此策略附加到角色。

此策略授予 Amazon EKS Amazon EC2 节点连接到 Amazon EKS 集群的权限。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  ** `ec2` **：读取实例卷和网络信息。此为必需操作，以便 Kubernetes 节点能够描述有关节点加入 Amazon EKS 集群所需的 Amazon EC2 资源的信息。
+  ** `eks` **：可选地将集群描述为节点引导启动的一部分。
+  ** `eks-auth:AssumeRoleForPodIdentity` **：允许检索节点上 EKS 工作负载的凭证。需要执行此操作 EKS 容器组身份才能正常运行。

要查看 JSON 策略文档的最新版本，请参阅《AWS Managed Policy Reference Guide》中的 [AmazonEKSWorkerNodePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSWorkerNodePolicy.html#AmazonEKSWorkerNodePolicy-json)。

## AWS 托管策略：AmazonEKSWorkerNodeMinimalPolicy
<a name="security-iam-awsmanpol-AmazonEKSWorkerNodeMinimalPolicy"></a>

您可以将 AmazonEKSWorkerNodeMinimalPolicy 附加到您的 IAM 实体。您可以将此策略附加到您在创建允许 Amazon EKS 代表您执行操作的 Amazon EC2 节点时指定的节点 IAM 角色。

此策略授予 Amazon EKS Amazon EC2 节点连接到 Amazon EKS 集群的权限。与 AmazonEKSWorkerNodePolicy 相比，此策略的权限较少。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  `eks-auth:AssumeRoleForPodIdentity` – 允许检索节点上 EKS 工作负载的凭证。需要执行此操作 EKS 容器组身份才能正常运行。

要查看 JSON 策略文档的最新版本，请参阅《AWS Managed Policy Reference Guide》中的 [AmazonEKSWorkerNodePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSWorkerNodeMinimalPolicy.html#AmazonEKSWorkerNodeMinimalPolicy-json)。

## AWS托管策略：AWSServiceRoleForAmazonEKSNodegroup
<a name="security-iam-awsmanpol-awsserviceroleforamazoneksnodegroup"></a>

您不能将 `AWSServiceRoleForAmazonEKSNodegroup` 附加到自己的 IAM 实体。将此策略附加到允许 Amazon EKS 代表您执行操作的服务相关角色。有关更多信息，请参阅 [Amazon EKS 的服务相关角色权限](using-service-linked-roles-eks-nodegroups.md#service-linked-role-permissions-eks-nodegroups)。

此策略授予 `AWSServiceRoleForAmazonEKSNodegroup` 角色权限，允许其在您的账户中创建和管理 Amazon EC2 节点组。

 **权限详细信息** 

此策略包含允许 Amazon EKS 完成以下任务的以下权限：
+  ** `ec2` **：与安全组、标签、容量预留和启动模板结合使用。Amazon EKS 托管式节点组需要此功能才能启用远程访问配置和描述可在托管式节点组中使用的容量预留。此外，Amazon EKS 托管节点组会代表您创建启动模板。这样做的目的是配置为每个托管节点组提供支持的 Amazon EC2 Auto Scaling 组。
+  ** `iam` **：创建服务相关角色并传递角色。这是 Amazon EKS 托管节点组管理创建托管节点组时传递的角色的实例配置文件所必需的。此实例配置文件由作为托管节点组的一部分启动的 Amazon EC2 实例使用。Amazon EKS 需要为其他服务（如 Amazon EC2 Auto Scaling 组）创建服务相关角色。这些权限用于创建托管节点组。
+  ** `autoscaling` **：使用安全自动扩缩组。这是 Amazon EKS 托管节点组管理支持每个托管节点组的 Amazon EC2 Auto Scaling 组所必需的。它还用于支持一些功能，例如，在节点组更新期间终止或回收节点时移出容器组（pod）以及管理在托管节点组上配置的暖池。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AWSServiceRoleForAmazonEKSNodegroup](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSServiceRoleForAmazonEKSNodegroup.html#AWSServiceRoleForAmazonEKSNodegroup-json)。

## AWS 托管策略：AmazonEKSDashboardServiceRolePolicy
<a name="security-iam-awsmanpol-AmazonEKSDashboardServiceRolePolicy"></a>

您不能将 `AmazonEKSDashboardServiceRolePolicy` 附加到自己的 IAM 实体。将此策略附加到允许 Amazon EKS 代表您执行操作的服务相关角色。有关更多信息，请参阅 [Amazon EKS 的服务相关角色权限](using-service-linked-roles-eks-dashboard.md#service-linked-role-permissions-eks-dashboard)。

此策略授予 `AWSServiceRoleForAmazonEKSDashboard` 角色权限，允许其在您的账户中创建和管理 Amazon EC2 节点组。

 **权限详细信息** 

此策略包含允许访问以完成这些任务的以下权限：
+  **`organizations`**：查看有关 AWS Organizations 结构和账户的信息。这包括列出组织中的账户、查看组织单元和根、列出委派管理员、查看有权访问组织的服务以及检索有关组织和账户详细信息的权限。

要查看 JSON 策略文档的最新版本，请参阅《AWS Managed Policy Reference Guide》中的 [AmazonEKSDashboardServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSDashboardServiceRolePolicy.html#AmazonEKSDashboardServiceRolePolicy-json)。

## AWS 托管策略：AmazonEBSCSIDriverPolicy
<a name="security-iam-awsmanpol-amazonebscsidriverservicerolepolicy"></a>

`AmazonEBSCSIDriverPolicy` 策略允许 Amazon EBS Container Storage Interface（CSI）驱动程序代表您创建、修改、复制、附加、分离和删除卷。这包括修改现有卷上的标签以及在 EBS 卷上启用快速快照还原（FSR）。此外还将向 EBS CSI 驱动程序授予创建、锁定、还原和删除快照，以及列出实例、卷和快照的权限。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEBSCSIDriverServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEBSCSIDriverPolicy.html#AmazonEBSCSIDriverPolicy-json)。

## AWS 托管式策略：AmazonEFSCSIDriverPolicy
<a name="security-iam-awsmanpol-amazonefscsidriverservicerolepolicy"></a>

`AmazonEFSCSIDriverPolicy` 策略允许 Amazon EFS 容器存储接口（CSI）代表您创建和删除接入点。该策略还将向 Amazon EFS CSI 驱动程序授予列出您的接入点文件系统、挂载目标和 Amazon EC2 可用区的权限。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEFSCSIDriverServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEFSCSIDriverPolicy.html#AmazonEFSCSIDriverPolicy-json)。

## AWS 托管策略：AmazonEKSLocalOutpostClusterPolicy
<a name="security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy"></a>

您可以将此策略附加到 IAM 实体。在创建本地集群之前，您必须将此策略附加到[集群角色](cluster-iam-role.md)。由 Amazon EKS 托管的 Kubernetes 集群会代表您调用其他 AWS 服务。它们这样做的目的是为了管理您与服务一起使用的资源。

`AmazonEKSLocalOutpostClusterPolicy` 包含以下权限：
+  **`ec2` 读取操作**：允许控制面板实例描述可用区、路由表、实例和网络接口属性。Amazon EC2 实例作为控制面板实例成功加入集群所必需的权限。
+  ** `ssm` **：允许通向控制面板实例的 Amazon EC2 Systems Manager 连接，Amazon EKS 使用该连接与您账户中的本地集群通信并对其进行管理。
+  ** `logs` **：允许实例将日志推送到 Amazon CloudWatch。
+  **`secretsmanager`** – 允许实例安全地从 AWS Secrets Manager 中获取和删除控制面板实例的引导数据。
+  ** `ecr` **：允许容器组（pod）和在控制面板实例上运行的容器拉取存储在 Amazon Elastic Container Registry 中的容器映像。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSLocalOutpostClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSLocalOutpostClusterPolicy.html#AmazonEKSLocalOutpostClusterPolicy-json)。

## AWS 托管策略：AmazonEKSLocalOutpostServiceRolePolicy
<a name="security-iam-awsmanpol-amazonekslocaloutpostservicerolepolicy"></a>

您不能将此策略附加到您的 IAM 实体。当您使用具有 `iam:CreateServiceLinkedRole` 权限的 IAM 主体创建集群时，Amazon EKS 将自动为您创建 [AWSServiceRoleforAmazonEKSLocalOutpost](using-service-linked-roles-eks-outpost.md) 服务相关角色，并将此策略附加到该角色。此策略允许该服务相关角色代表您为本地集群调用 AWS 服务。

`AmazonEKSLocalOutpostServiceRolePolicy` 包含以下权限：
+  ** `ec2` **：允许 Amazon EKS 使用安全、网络和其他资源，成功启动和管理您的账户中的控制面板实例。
+  ** `ssm`、`ssmmessages`**：允许通向控制面板实例的 Amazon EC2 Systems Manager 连接，Amazon EKS 使用该连接与您账户中的本地集群通信并对其进行管理。
+  ** `iam` **：允许 Amazon EKS 管理与控制面板实例关联的实例配置文件。
+  **`secretsmanager`** – 允许 Amazon EKS 将控制面板实例的引导数据放入 AWS Secrets Manager，以便能在实例引导期间安全地引用它。
+  ** `outposts` **：允许 Amazon EKS 从您的账户中获取 Outpost 信息，以便在 Outpost 中成功启动本地集群。

要查看 JSON 策略文档的最新版本，请参阅《AWS 托管式策略参考指南》中的 [AmazonEKSLocalOutpostServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSLocalOutpostServiceRolePolicy.html#AmazonEKSLocalOutpostServiceRolePolicy-json)。

## AWS托管策略的 Amazon EKS 更新
<a name="security-iam-awsmanpol-updates"></a>

查看有关 Amazon EKS（自从其开始跟踪更新更改以来）的AWS托管策略的更新的详细信息。

要接收此特定文档页面的所有源文件更改通知，您可以通过 RSS 阅读器订阅以下 URL：

```
https://github.com/awsdocs/amazon-eks-user-guide/commits/mainline/latest/ug/security/iam-reference/security-iam-awsmanpol.adoc.atom
```


| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
|  已将权限添加至 [AWS 托管策略：AmazonEKSNetworkingPolicy](#security-iam-awsmanpol-AmazonEKSNetworkingPolicy)。  |  在 `AmazonEKSNetworkingPolicy` 中添加了 `ec2:ModifyNetworkInterfaceAttribute` 权限。这允许 Amazon EKS Auto Mode 控制器修改与 EC2 实例相关的网络接口属性。  |  2026 年 2 月 3 日  | 
|  已将权限添加至 [AWS托管策略：AWSServiceRoleForAmazonEKSNodegroup](#security-iam-awsmanpol-awsserviceroleforamazoneksnodegroup)。  |  已为 `AWSServiceRoleForAmazonEKSNodegroup` 新增 `autoscaling:PutWarmPool`、`autoscaling:DeleteWarmPool` 和 `autoscaling:DescribeWarmPool` 权限。这使得 Amazon EKS 托管节点组能够在节点组的整个生命周期内管理底层 ASG 的暖池资源。  |  2026 年 2 月 17 日  | 
|  已将权限添加至 [AWS托管策略：AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)。  |  移除了 `AmazonEKSServiceRolePolicy` 中 `iam:GetInstanceProfile` 权限的目标实例配置文件名称中的“eks”前缀要求。这使得 Amazon EKS 自动模式能够在 NodeClasses 中验证和利用自定义实例配置文件，而无需“eks”命名前缀。  |  2026 年 2 月 2 日  | 
|  为 [AmazonEBSCSIDriverPolicy](#security-iam-awsmanpol-amazonebscsidriverservicerolepolicy) 增加了权限。  |  已新增 `ec2:LockSnapshot` 权限，以使 EBS CSI 驱动程序能够直接锁定 EBS 快照。  |  2026 年 1 月 15 日  | 
|  引入 [AWS 托管式策略：AmazonEKSMCPReadOnlyAccess](#security-iam-awsmanpol-amazoneksmcpreadonlyaccess)。  |  Amazon EKS 已发布一项全新的托管式策略 `AmazonEKSMCPReadOnlyAccess`，用于在 Amazon EKS MCP 服务器中启用只读工具，实现可观测性和问题排查功能。  |  2025 年 11 月 21 日  | 
|  为 [AmazonEBSCSIDriverPolicy](#security-iam-awsmanpol-amazonebscsidriverservicerolepolicy) 增加了权限。  |  增加了 `ec2:CopyVolumes` 权限，支持 EBS CSI 驱动程序直接复制 EBS 卷。  |  2025 年 11 月 17 日  | 
|  已将权限添加至 [AWS托管策略：AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)。  |  已为 `AmazonEKSServiceRolePolicy` 新增 `ec2:DescribeRouteTables` 和 `ec2:DescribeNetworkAcls` 权限。作为集群洞察功能的一部分，此项能力支持 Amazon EKS 检测混合节点的 VPC 路由表与网络 ACL 的配置问题。  |  2025 年 10 月 22 日  | 
|  为 [AWSServiceRoleForAmazonEKSConnector](using-service-linked-roles-eks-connector.md) 添加了权限   |  已为 `AmazonEKSConnectorServiceRolePolicy` 新增 `ssmmessages:OpenDataChannel` 权限   |  2025 年 10 月 15 日  | 
|  已将权限添加至 [AWS托管策略：AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)   |  此角色可以附加新的访问策略 `AmazonEKSEventPolicy`。`ec2:DeleteLaunchTemplate` 和 `ec2:TerminateInstances` 的权限受限。  |  2025 年 8 月 26 日  | 
|  已将权限添加至 [AWS 托管策略：AmazonEKSLocalOutpostServiceRolePolicy](#security-iam-awsmanpol-amazonekslocaloutpostservicerolepolicy)   |  已将 `ssmmessages:OpenDataChannel` 权限添加至 `AmazonEKSLocalOutpostServiceRolePolicy`。  |  2025 年 6 月 26 日  | 
|  已将权限添加至 [AWS 托管策略：AmazonEKSComputePolicy](#security-iam-awsmanpol-AmazonEKSComputePolicy)。  |  更新了 `ec2:RunInstances` 和 `ec2:CreateFleet` 操作的资源权限以包括容量预留 ` arn:aws:ec2:*:*:capacity-reservation/*`。这允许 Amazon EKS 自动模式使用您账户中的 EC2 按需容量预留来启动实例。添加了 `iam:CreateServiceLinkedRole` 以允许 Amazon EKS 自动模式代表您创建 EC2 竞价型实例服务相关角色 `AWSServiceRoleForEC2Spot`。  |  2025 年 6 月 20 日  | 
|  已将权限添加至 [AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)。  |  添加了 `ec2:DescribeCapacityReservations` 权限以允许 Amazon EKS 自动模式使用您账户中的 EC2 按需容量预留来启动实例。  |  2025 年 6 月 20 日  | 
|  引入 [AWS 托管策略：AmazonEKSDashboardConsoleReadOnly](#security-iam-awsmanpol-amazoneksdashboardconsolereadonly)。  |  引入了新的 `AmazonEKSDashboardConsoleReadOnly` 策略。  |  2025 年 6 月 19 日  | 
|  引入 [AWS 托管策略：AmazonEKSDashboardServiceRolePolicy](#security-iam-awsmanpol-AmazonEKSDashboardServiceRolePolicy)。  |  引入了新的 `AmazonEKSDashboardServiceRolePolicy` 策略。  |  2025 年 5 月 21 日  | 
|  已将权限添加至 [AmazonEKSClusterPolicy](#security-iam-awsmanpol-amazoneksclusterpolicy)。  |  添加了 `ec2:DeleteNetworkInterfaces` 权限，允许 Amazon EKS 删除 VPC CNI 意外退出时留下的弹性网络接口。  |  2025 年 4 月 16 日  | 
|  已将权限添加至 [AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)。  |  作为 EKS 1.33 版本发行的一部分，添加了 `ec2:RevokeSecurityGroupEgress` 和 `ec2:AuthorizeSecurityGroupEgress` 权限，允许 EKS AI/ML 客户向与 EFA 兼容的默认 EKS 集群安全组添加安全组出口规则。  |  2025 年 4 月 14 日  | 
|  已将权限添加至 [AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)。  |  增加了终止由 EKS 自动模式创建的 EC2 实例的权限。  |  2025 年 2 月 28 日  | 
|  为 [AmazonEBSCSIDriverPolicy](#security-iam-awsmanpol-amazonebscsidriverservicerolepolicy) 增加了权限。  |  增加了授权 EBS CSI 驱动程序还原所有快照的新语句。此前现有策略允许这一操作，但由于 IAM 处理 `CreateVolume` 的方式发生了变化，因此需要新的显式语句。 增加了 EBS CSI 驱动程序修改现有卷上标签的功能。EBS CSI 驱动程序可以通过 Kubernetes VolumeAttributesClasses 中的参数修改现有卷的标签。 增加了 EBS CSI 驱动程序在 EBS 卷上启用快速快照还原（FSR）的功能。EBS CSI 驱动程序可以通过 Kubernetes 存储类中的参数在新卷上启用 FSR。  |  2025 年 1 月 13 日  | 
|  已将权限添加至 [AWS 托管策略：AmazonEKSLoadBalancingPolicy](#security-iam-awsmanpol-AmazonEKSLoadBalancingPolicy)。  |  更新了 `AmazonEKSLoadBalancingPolicy`，以允许列出和描述联网和 IP 地址资源。  |  2024 年 12 月 26 日  | 
|  已将权限添加至 [AWS托管策略：AWSServiceRoleForAmazonEKSNodegroup](#security-iam-awsmanpol-awsserviceroleforamazoneksnodegroup)。  |  为兼容中国区域，更新了 `AWSServiceRoleForAmazonEKSNodegroup`。  |  2024 年 11 月 22 日  | 
|  已将权限添加至 [AWS 托管策略：AmazonEKSLocalOutpostClusterPolicy](#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy)   |  为 `AmazonEKSLocalOutpostClusterPolicy` 添加了 `ec2:DescribeAvailabilityZones` 权限，以便集群控制面板上的 AWS Cloud Controller Manager 可以识别各个节点所在的可用区。  |  2024 年 11 月 21 日  | 
|  已将权限添加至 [AWS托管策略：AWSServiceRoleForAmazonEKSNodegroup](#security-iam-awsmanpol-awsserviceroleforamazoneksnodegroup)。  |  更新了 `AWSServiceRoleForAmazonEKSNodegroup` 策略，允许 `ec2:RebootInstances`，以实现由 Amazon EKS 托管节点组创建的实例。限制了 Amazon EC2 资源的 `ec2:CreateTags` 权限。  |  2024 年 11 月 20 日  | 
|  已将权限添加至 [AWS托管策略：AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)。  |  EKS 更新了 AWS 托管策略 `AmazonEKSServiceRolePolicy`。添加了 EKS 访问策略、负载均衡器管理和自动集群资源清理的权限。  |  2024 年 11 月 16 日  | 
|  引入 [AWS 托管策略：AmazonEKSComputePolicy](#security-iam-awsmanpol-AmazonEKSComputePolicy)。  |  EKS 更新了 AWS 托管策略 `AmazonEKSComputePolicy`。更新了 `iam:AddRoleToInstanceProfile` 操作的资源权限。  |  2024 年 11 月 7 日  | 
|  引入 [AWS 托管策略：AmazonEKSComputePolicy](#security-iam-awsmanpol-AmazonEKSComputePolicy)。  |   AWS 引入了 `AmazonEKSComputePolicy`。  |  2024 年 11 月 1 日  | 
|  已将权限添加至 `AmazonEKSClusterPolicy`   |  添加了 `ec2:DescribeInstanceTopology` 权限，允许 Amazon EKS 将拓扑信息作为标签附加到节点。  |  2024 年 11 月 1 日  | 
|  引入 [AWS 托管策略：AmazonEKSBlockStoragePolicy](#security-iam-awsmanpol-AmazonEKSBlockStoragePolicy)。  |   AWS 引入了 `AmazonEKSBlockStoragePolicy`。  |  2024 年 10 月 30 日  | 
|  引入 [AWS 托管策略：AmazonEKSLoadBalancingPolicy](#security-iam-awsmanpol-AmazonEKSLoadBalancingPolicy)。  |   AWS 引入了 `AmazonEKSLoadBalancingPolicy`。  |  2024 年 10 月 30 日  | 
|  已将权限添加至 [AmazonEKSServiceRolePolicy](#security-iam-awsmanpol-amazoneksservicerolepolicy)。  |  添加了 `cloudwatch:PutMetricData` 权限，允许 Amazon EKS 向 Amazon CloudWatch 发布指标。  |  2024 年 10 月 29 日  | 
|  引入 [AWS 托管策略：AmazonEKSNetworkingPolicy](#security-iam-awsmanpol-AmazonEKSNetworkingPolicy)。  |   AWS 引入了 `AmazonEKSNetworkingPolicy`。  |  2024 年 10 月 28 日  | 
|  增加了对 `AmazonEKSServicePolicy` 和 `AmazonEKSServiceRolePolicy` 的权限。  |  添加了 `ec2:GetSecurityGroupsForVpc` 和相关的标签权限，以允许 EKS 读取安全组信息和更新相关标签。  |  2024 年 10 月 10 日  | 
|  引入了 [AmazonEKSWorkerNodeMinimalPolicy](#security-iam-awsmanpol-AmazonEKSWorkerNodeMinimalPolicy)。  |   AWS 引入了 `AmazonEKSWorkerNodeMinimalPolicy`。  |  2024 年 10 月 3 日  | 
|  已将权限添加至 [AWSServiceRoleForAmazonEKSNodegroup](#security-iam-awsmanpol-awsserviceroleforamazoneksnodegroup)。  |  添加了 `autoscaling:ResumeProcesses` 和 `autoscaling:SuspendProcesses` 权限，以允许 Amazon EKS 在 Amazon EKS 托管的自动扩缩组中暂停和恢复 `AZRebalance`。  |  2024 年 8 月 21 日  | 
|  已将权限添加至 [AWSServiceRoleForAmazonEKSNodegroup](#security-iam-awsmanpol-awsserviceroleforamazoneksnodegroup)。  |  增加了 `ec2:DescribeCapacityReservations` 权限，以允许 Amazon EKS 描述用户账户的容量预留。增加了 `autoscaling:PutScheduledUpdateGroupAction` 权限，以在 `CAPACITY_BLOCK` 节点组上启用设置计划扩缩。  |  2024 年 6 月 27 日  | 
|   [AmazonEKS\$1CNI\$1Policy](#security-iam-awsmanpol-amazoneks-cni-policy) – 更新到现有策略  |  Amazon EKS 添加了新的 `ec2:DescribeSubnets` 权限，允许适用于 Kubernetes 的 Amazon VPC CNI 插件查看 Amazon VPC 子网中的免费 IP 地址数量。VPC CNI 可以使用每个子网中的免费 IP 地址来选择空闲 IP 地址最多的子网，以便在创建弹性网络接口时使用。  |  2024 年 3 月 4 日  | 
|   [AmazonEKSWorkerNodePolicy](#security-iam-awsmanpol-amazoneksworkernodepolicy)：更新现有策略  |  Amazon EKS 添加了新的权限以允许 EKS 容器组身份。Amazon EKS 容器组身份代理使用节点角色。  |  2023 年 11 月 26 日  | 
|  推出了 [AmazonEFSCSIDriverPolicy](#security-iam-awsmanpol-amazonefscsidriverservicerolepolicy)。  |   AWS 引入了 `AmazonEFSCSIDriverPolicy`。  |  2023 年 7 月 26 日  | 
|  已将权限添加至 [AmazonEKSClusterPolicy](#security-iam-awsmanpol-amazoneksclusterpolicy)。  |  增加了 `ec2:DescribeAvailabilityZones` 权限以允许 Amazon EKS 在创建负载均衡器时在子网自动发现期间获取可用区详细信息。  |  2023 年 2 月 7 日  | 
|  更新了 [AmazonEBSCSIDriverPolicy](#security-iam-awsmanpol-amazonebscsidriverservicerolepolicy) 中的策略条件。  |  删除了 `StringLike` 键字段中带有通配符的无效策略条件。还将一个新条件 `ec2:ResourceTag/kubernetes.io/created-for/pvc/name: "*"` 添加到 `ec2:DeleteVolume`，以允许 EBS CSI 驱动程序删除由树内插件创建的卷。  |  2022 年 11 月 17 日  | 
|  添加了对 [AmazonEKSLocalOutpostServiceRolePolicy](#security-iam-awsmanpol-amazonekslocaloutpostservicerolepolicy) 的权限。  |  添加了 `ec2:DescribeVPCAttribute`、`ec2:GetConsoleOutput` 和 `ec2:DescribeSecret` 以实现更好的先决条件验证和托管式生命周期控制。还添加了 `ec2:DescribePlacementGroups`、`"arn:aws:ec2:*:*:placement-group/*"` 和 `ec2:RunInstances` 以支持控制面板 Amazon EC2 实例在 Outposts 上的置放控制。  |  2022 年 10 月 24 日  | 
|  更新了 [AmazonEKSLocalOutpostClusterPolicy](#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy) 中的 Amazon Elastic Container Registry 权限。  |  将操作 `ecr:GetDownloadUrlForLayer` 从所有资源部分移至限定范围部分。添加了资源 ` arn:aws:ecr:*:*:repository/eks/ `。删除了资源 ` arn:aws:ecr:`。此资源涵盖在增加的 ` arn:aws:ecr:*:*:repository/eks/*` 资源中。  |  2022 年 10 月 20 日  | 
|  将权限添加到了 [AmazonEKSLocalOutpostClusterPolicy](#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy)。  |  添加了 ` arn:aws:ecr:*:*:repository/kubelet-config-updater` Amazon Elastic Container Registry 存储库，以便集群控制面板实例能够更新某些 `kubelet` 参数。  |  2022 年 8 月 31 日  | 
|  引入了 [AmazonEKSLocalOutpostClusterPolicy](#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy)。  |   AWS 引入了 `AmazonEKSLocalOutpostClusterPolicy`。  |  2022 年 8 月 24 日  | 
|  引入了 [AmazonEKSLocalOutpostServiceRolePolicy](#security-iam-awsmanpol-amazonekslocaloutpostservicerolepolicy)。  |   AWS 引入了 `AmazonEKSLocalOutpostServiceRolePolicy`。  |  2022 年 8 月 23 日  | 
|  引入的 [AmazonEBSCSIDriverPolicy](#security-iam-awsmanpol-amazonebscsidriverservicerolepolicy)。  |   AWS 引入了 `AmazonEBSCSIDriverPolicy`。  |  2022 年 4 月 4 日  | 
|  已添加权限到 [AmazonEKSWorkerNodePolicy](#security-iam-awsmanpol-amazoneksworkernodepolicy)。  |  增加了 `ec2:DescribeInstanceTypes` 以启用能够自动发现实例级别属性的 Amazon EKS 优化版 AMI。  |  2022 年 3 月 21 日  | 
|  已将权限添加至 [AWSServiceRoleForAmazonEKSNodegroup](#security-iam-awsmanpol-awsserviceroleforamazoneksnodegroup)。  |  添加了 `autoscaling:EnableMetricsCollection` 权限以允许 Amazon EKS 启用指标收集。  |  2021 年 12 月 13 日  | 
|  已将权限添加至 [AmazonEKSClusterPolicy](#security-iam-awsmanpol-amazoneksclusterpolicy)。  |  添加了 `ec2:DescribeAccountAttributes`、`ec2:DescribeAddresses` 和 `ec2:DescribeInternetGateways` 权限，以允许 Amazon EKS 为 Network Load Balancer 创建服务相关角色。  |  2021 年 6 月 17 日  | 
|  Amazon EKS 已开始跟踪更改。  |  Amazon EKS 开始跟踪其AWS托管策略的更改。  |  2021 年 6 月 17 日  | 

# IAM 故障排除
<a name="security-iam-troubleshoot"></a>

本主题介绍将 Amazon EKS 与 IAM 结合使用时可能遇到的一些常见错误以及相应的错误处理方式。

## AccessDeniedException
<a name="iam-error"></a>

如果您在调用 AWS API 操作时收到 `AccessDeniedException`，则表明您使用的 [IAM 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)凭证不具有发起该调用所需的权限。

```
An error occurred (AccessDeniedException) when calling the DescribeCluster operation:
User: arn:aws:iam::111122223333:user/user_name is not authorized to perform:
eks:DescribeCluster on resource: arn:aws:eks:region:111122223333:cluster/my-cluster
```

在前述示例消息中，用户没有权限调用 Amazon EKS `DescribeCluster` API 操作。要为 IAM 主体提供 Amazon EKS 管理员权限，请参阅[Amazon EKS 基于身份的策略示例](security-iam-id-based-policy-examples.md)。

有关 IAM 的一般信息，请参阅 *IAM 用户指南*中的[使用策略控制访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html)。

## 无法在**计算**选项卡上看到**节点**，或在**资源**选项卡上看到任何内容，您将在 AWS 管理控制台 中收到错误
<a name="security-iam-troubleshoot-cannot-view-nodes-or-workloads"></a>

您可能会看到一条内容为“`Your current user or role does not have access to Kubernetes objects on this EKS cluster`”的控制台错误消息。确保您将 AWS 管理控制台 与其结合使用的 [IAM 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)用户具有必要的权限。有关更多信息，请参阅 [所需的权限](view-kubernetes-resources.md#view-kubernetes-resources-permissions)。

## aws-auth `ConfigMap` 不授予对集群的访问权限
<a name="security-iam-troubleshoot-configmap"></a>

[AWS IAM 身份验证器](https://github.com/kubernetes-sigs/aws-iam-authenticator)不允许在 `ConfigMap` 中使用角色 ARN 中的路径。因此，在指定 `rolearn` 之前，请删除路径。例如，将 ` arn:aws:iam::111122223333:role/team/developers/eks-admin ` 更改为 ` arn:aws:iam::111122223333:role/eks-admin `。

## 我无权执行 iam:PassRole
<a name="security-iam-troubleshoot-passrole"></a>

如果您收到一个错误，表明您无权执行 `iam:PassRole` 操作，则必须更新策略以允许您将角色传递给 Amazon EKS。

有些 AWS 服务允许您将现有角色传递到该服务，而不是创建新服务角色或服务相关角色。为此，您必须具有将角色传递到服务的权限。

当名为 `marymajor` 的 IAM 用户尝试使用控制台在 Amazon EKS 中执行操作时，会发生以下示例错误。但是，服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。

```
User: {arn-aws}iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在这种情况下，必须更新 Mary 的策略以允许她执行 `iam:PassRole` 操作。

如果您需要帮助，请联系 AWS 管理员。您的管理员是提供登录凭证的人。

## 我希望允许我的AWS账户以外的人访问我的 Amazon EKS 资源
<a name="security-iam-troubleshoot-cross-account-access"></a>

您可以创建一个角色，以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖，可以代入角色。对于支持基于资源的策略或访问控制列表（ACL）的服务，您可以使用这些策略向人员授予对您的资源的访问权。

要了解更多信息，请参阅以下内容：
+ 要了解 Amazon EKS 是否支持这些功能，请参阅 [Amazon EKS 如何与 IAM 配合使用](security-iam-service-with-iam.md)。
+ 要了解如何为您拥有的 AWS 账户中的资源提供访问权限，请参阅 *IAM 用户指南*中的[为您拥有的另一个 AWS 账户中的 IAM 用户提供访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。
+ 要了解如何为第三方 AWS 账户提供您的资源的访问权限，请参阅*IAM 用户指南中的 [ 为第三方拥有的 AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) 账户提供访问权限*。
+ 要了解如何通过身份联合验证提供访问权限，请参阅《IAM 用户指南》**中的[为经过外部身份验证的用户（身份联合验证）提供访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 要了解使用角色和基于资源的策略进行跨账户访问之间的差别，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 容器组（pod）容器收到以下错误：`An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region`
<a name="security-iam-troubleshoot-wrong-sts-endpoint"></a>

如果应用程序明确向 AWS STS 全局端点（`https://sts.amazonaws`）提出要求并且 Kubernetes 服务账户已配置为使用区域端点，您的容器会收到此错误。您可以使用以下选项之一解决问题：
+ 更新应用程序代码以删除对 AWS STS 全局端点的显式调用。
+ 更新应用程序代码以明确调用区域端点，例如 `https://sts.us-west-2.amazonaws.com`。您的应用程序应内置冗余功能，以便在该 AWS 区域的服务出现故障时选择其它 AWS 区域。有关更多信息，请参阅《IAM 用户指南》中的[在 AWS 区域中管理 AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)。
+ 将服务账户配置为使用全局端点。默认情况下，集群使用区域端点。有关更多信息，请参阅 [为服务账户配置 AWS Security Token Service 端点](configure-sts-endpoint.md)。

# Amazon EKS 集群 IAM 角色
<a name="cluster-iam-role"></a>

每个集群都需要一个 Amazon EKS 集群 IAM 角色。由 Amazon EKS 管理的 Kubernetes 集群会使用此角色来管理节点，而[旧版云提供商](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider)会使用此角色为服务创建带有 Elastic Load Balancing 的负载均衡器。

必须先使用以下任一 IAM policy 创建 IAM 角色，然后才能创建 Amazon EKS 集群：
+  [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) 
+ 自定义 IAM policy。随后的最低权限允许 Kubernetes 集群管理节点，但不允许[旧版云提供商](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider)创建带有 Elastic Load Balancing 的负载均衡器。您的自定义 IAM policy必须至少具有以下权限：

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "ec2:CreateTags"
        ],
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
          "ForAnyValue:StringLike": {
            "aws:TagKeys": "kubernetes.io/cluster/*"
          }
        }
      },
      {
        "Effect": "Allow",
        "Action": [
          "ec2:DescribeInstances",
          "ec2:DescribeNetworkInterfaces",
          "ec2:DescribeVpcs",
          "ec2:DescribeDhcpOptions",
          "ec2:DescribeAvailabilityZones",
          "ec2:DescribeInstanceTopology",
          "kms:DescribeKey"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

**注意**  
在 2023 年 10 月 3 日之前，每个集群的 IAM 角色都必须有 [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html)。  
在 2020 年 4 月 16 日之前，[AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) 和 [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) 是必需的，建议的角色名称是 `eksServiceRole`。有了 `AWSServiceRoleForAmazonEKS` 服务相关角色后，在 2020 年 4 月 16 日或之后创建的集群将不再需要 [AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) 策略。

## 检查现有集群角色
<a name="check-service-role"></a>

可使用以下程序检查并确定您的账户是否已有 Amazon EKS 集群角色。

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **角色**。

1. 在角色列表中搜索 `eksClusterRole`。如果不存在包含 `eksClusterRole` 的角色，请参阅 [创建 Amazon EKS 集群角色](#create-service-role) 来创建角色。如果包含 `eksClusterRole` 的角色确实存在，则选择角色以查看附加的策略。

1. 选择**权限**。

1. 确保将 **AmazonEKSClusterPolicy** 托管策略附加到此角色。如果附加该策略，则将正确配置 Amazon EKS 集群角色。

1. 选择 **Trust relationships**（信任关系），然后选择 **Edit trust policy**（编辑信任策略）。

1. 验证信任关系是否包含以下策略。如果信任关系符合以下策略，请选择 **Cancel**（取消）。如果信任关系不匹配，请将策略复制到**编辑信任策略**窗口并选择**更新策略**。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

## 创建 Amazon EKS 集群角色
<a name="create-service-role"></a>

要创建集群角色，您可以使用 AWS 管理控制台 或 AWS CLI。

 AWS 管理控制台   

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 选择 **Roles**，然后选择 **Create role**。

1. 在**受信任的实体类型**下，选择 **AWS 服务**。

1. 从**其它 AWS 服务的使用案例**下拉列表中，选择 **EKS**。

1. 为您的使用案例选择 **EKS - Cluster**（EKS - 集群），然后选择 **Next**（下一步）。

1. 在 **Add permissions**（添加权限）选项卡上，选择 **Next**（下一步）。

1. 对于 **Role name**（角色名称），请为角色输入唯一名称，例如 `eksClusterRole`。

1. 对于 **Description**（说明），请输入描述性文本，例如 `Amazon EKS - Cluster role`。

1. 选择**创建角色**。

 AWS CLI  

1. 将以下内容复制到名为 *cluster-trust-policy.json* 的文件中。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. 创建角色。您可以将 *eksClusterRole* 替换为您选择的任何名称。

   ```
   aws iam create-role \
     --role-name eksClusterRole \
     --assume-role-policy-document file://"cluster-trust-policy.json"
   ```

1. 将所需的 IAM policy 附加到角色。

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \
     --role-name eksClusterRole
   ```

# Amazon EKS 节点 IAM 角色
<a name="create-node-role"></a>

Amazon EKS 节点 `kubelet` 守护进程代表您调用 AWS API。节点通过 IAM 实例配置文件和关联的策略获得这些 API 调用的权限。您必须先为节点创建 IAM 角色以在启动它们时使用，然后才能启动这些节点并在集群中注册它们。此要求适用于通过由 Amazon 提供的 Amazon EKS 优化版 AMI 启动的节点，也适用于您打算使用的任何其他节点 AMI。此外，此要求适用于托管节点组和自行管理的节点。

**注意**  
您不能使用创建任何集群时使用的相同角色。

必须先使用以下权限创建 IAM 角色，然后才能创建节点：
+ `kubelet` 描述 VPC 中 Amazon EC2 资源的权限，例如 [AmazonEKSWorkerNodePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSWorkerNodePolicy.html) 策略提供的权限。该策略还为 Amazon EKS 容器组身份代理提供权限。
+ `kubelet` 使用来自 Amazon Elastic Container Registry（Amazon ECR）的容器映像的权限，例如 [AmazonEC2ContainerRegistryPullOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPullOnly.html) 策略提供的权限。使用来自 Amazon Elastic Container Registry（Amazon ECR）的容器映像的权限是必要条件，因为用于联网的内置附加组件运行的 Pod 使用来自 Amazon ECR 的容器映像。
+ （可选）Amazon EKS 容器组身份代理使用 `eks-auth:AssumeRoleForPodIdentity` 操作检索容器组凭证的权限。如果不使用 [AmazonEKSWorkerNodePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSWorkerNodePolicy.html)，则除了使用 EKS 容器组身份的 EC2 权限外，您还必须提供此权限。
+ （可选）如果不使用 IRSA 或 EKS 容器组身份向 VPC CNI 容器组授予权限，则必须在实例角色中提供 VPC CNI 的权限。您可以使用 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html) 托管策略（如果使用 `IPv4` 系列创建集群）或[您创建的 IPv6 策略](cni-iam-role.md#cni-iam-role-create-ipv6-policy)（如果使用 `IPv6` 系列创建集群）。但是，我们建议您将策略附加到专门用于 Amazon VPC CNI 附加组件的单独角色，而不是附加到此角色。有关为 Amazon VPC CNI 附加组件创建单独角色的详细信息，请参阅 [配置 Amazon VPC CNI 插件以使用 IRSA](cni-iam-role.md)。

**注意**  
Amazon EC2 节点组必须具有与 Fargate 配置文件不同的 IAM 角色。有关更多信息，请参阅 [Amazon EKS 容器组（pod）执行 IAM 角色](pod-execution-role.md)。

## 检查现有节点角色
<a name="check-worker-node-role"></a>

可以使用以下过程检查并查看您的账户是否已有 Amazon EKS 节点角色。

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **角色**。

1. 在角色列表中搜索 `eksNodeRole`、`AmazonEKSNodeRole` 或 `NodeInstanceRole`。如果其中一个名称的角色不存在，请参阅[创建 Amazon EKS 节点 IAM 角色](#create-worker-node-role)以创建该角色。如果包含 `eksNodeRole`、`AmazonEKSNodeRole` 或 `NodeInstanceRole` 的角色确实存在，请选择该角色以查看附加的策略。

1. 选择**权限**。

1. 确保将 **AmazonEKSWorkerNodePolicy** 和 **AmazonEC2ContainerRegistryPullOnly** 托管策略附加到此角色，或者使用最低权限附加自定义策略。
**注意**  
如果 **AmazonEKS\$1CNI\$1Policy** 策略已附加到角色，我们建议删除此策略并改为将其附加到映射到 `aws-node` Kubernetes 服务账户的 IAM 角色。有关更多信息，请参阅 [配置 Amazon VPC CNI 插件以使用 IRSA](cni-iam-role.md)。

1. 选择 **Trust relationships**（信任关系），然后选择 **Edit trust policy**（编辑信任策略）。

1. 验证信任关系是否包含以下策略。如果信任关系符合以下策略，请选择 **Cancel**（取消）。如果信任关系不匹配，请将策略复制到**编辑信任策略**窗口并选择**更新策略**。

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Principal": {
                   "Service": [
                       "ec2.amazonaws.com"
                   ]
               }
           }
       ]
   }
   ```

## 创建 Amazon EKS 节点 IAM 角色
<a name="create-worker-node-role"></a>

您可以使用 AWS 管理控制台 或 AWS 创建节点 IAM 角色。

 AWS 管理控制台   

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **Roles**（角色）。

1. 在 **Roles**（角色）页面上，选择 **Create role**（创建角色）。

1. 在 **Select trusted entity**（选择受信任的实体）页面上，请执行以下操作：

   1. 在**可信实体类型**部分中，选择 **AWS 服务**。

   1. 在 **Use case**（使用案例）下，选择 **EC2**。

   1. 选择**下一步**。

1. 在**添加权限**页面上，附加自定义策略或执行以下操作：

   1. 在 **Filter policies (筛选器策略)** 框中，输入 `AmazonEKSWorkerNodePolicy`。

   1. 选中搜索结果中的 **AmazonEKSWorkerNodePolicy** 左侧的复选框。

   1. 请选择 **Clear filters**（清除筛选条件）。

   1. 在 **Filter policies (筛选器策略)** 框中，输入 `AmazonEC2ContainerRegistryPullOnly`。

   1. 选中搜索结果中的 **AmazonEC2ContainerRegistryPullOnly** 左侧的复选框。

      **AmazonEKS\$1CNI\$1Policy** 托管式策略或您创建的 [IPv6 策略](cni-iam-role.md#cni-iam-role-create-ipv6-policy)还必须附加到此角色或映射到 `aws-node` Kubernetes 服务账户的其他角色。我们建议将策略分配给与 Kubernetes 服务账户关联的角色，而不是将其分配给此角色。有关更多信息，请参阅 [配置 Amazon VPC CNI 插件以使用 IRSA](cni-iam-role.md)。

   1. 选择**下一步**。

1. 在 **Name, review, and create**（命名、查看和创建）页面中，请执行以下操作：

   1. 对于 **Role name**（角色名称），请为角色输入唯一名称，例如 `AmazonEKSNodeRole`。

   1. 对于 **Description**（说明），请将当前文本替换为描述性文本，例如 `Amazon EKS - Node role`。

   1. 在**添加标签（可选）**下，将标签作为键值对附加，以将元数据添加到角色。有关在 IAM 中使用标签的更多信息，请参阅《IAM 用户指南》** 中的[标记 IAM 资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

   1. 选择**创建角色**。

 AWS CLI  

1. 运行以下命令以创建 `node-role-trust-relationship.json` 文件。

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Principal": {
                   "Service": [
                       "ec2.amazonaws.com"
                   ]
               }
           }
       ]
   }
   ```

1. 创建 IAM 角色。

   ```
   aws iam create-role \
     --role-name AmazonEKSNodeRole \
     --assume-role-policy-document file://"node-role-trust-relationship.json"
   ```

1. 将两个所需的 IAM 托管策略附加到 IAM 角色。

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \
     --role-name AmazonEKSNodeRole
   aws iam attach-role-policy \
     --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly \
     --role-name AmazonEKSNodeRole
   ```

1. 根据创建集群时使用的 IP 系列，将以下 IAM policy 之一附加到 IAM 角色。该策略必须附加到此角色，或与用于 Kubernetes 的 Amazon VPC CNI 插件的 Kubernetes `aws-node` 服务账户关联的角色。我们建议将策略分配给与 Kubernetes 服务账户关联的角色。要将策略分配给与 Kubernetes 服务账户关联的角色，请参阅 [配置 Amazon VPC CNI 插件以使用 IRSA](cni-iam-role.md)。
   + IPv4

     ```
     aws iam attach-role-policy \
       --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \
       --role-name AmazonEKSNodeRole
     ```
   + IPv6

     1. 复制以下文本并将其保存到名为 `vpc-cni-ipv6-policy.json` 的文件。

        ```
        {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ec2:AssignIpv6Addresses",
                        "ec2:DescribeInstances",
                        "ec2:DescribeTags",
                        "ec2:DescribeNetworkInterfaces",
                        "ec2:DescribeInstanceTypes"
                    ],
                    "Resource": "*"
                },
                {
                    "Effect": "Allow",
                    "Action": [
                        "ec2:CreateTags"
                    ],
                    "Resource": [
                        "arn:aws:ec2:*:*:network-interface/*"
                    ]
                }
            ]
        }
        ```

     1. 创建 IAM policy。

        ```
        aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
        ```

     1. 将 IAM policy 附加到 IAM 角色。将 *111122223333* 替换为您的账户 ID。

        ```
        aws iam attach-role-policy \
          --policy-arn arn:aws:iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \
          --role-name AmazonEKSNodeRole
        ```

# Amazon EKS 自动模式集群 IAM 角色
<a name="auto-cluster-iam-role"></a>

每个集群都需要一个 Amazon EKS 集群 IAM 角色。由 Amazon EKS 管理的 Kubernetes 集群使用此角色来自动执行存储、联网和计算自动扩缩等方面的例行任务。

在创建 Amazon EKS 集群之前，必须首先使用 EKS 自动模式必需的策略创建一个 IAM 角色。您可以附加建议的 AWS IAM 托管式策略，也可以创建具有等效权限的自定义策略。
+  [AmazonEKSComputePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSComputePolicy) 
+  [AmazonEKSBlockStoragePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSBlockStoragePolicy) 
+  [AmazonEKSLoadBalancingPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSLoadBalancingPolicy) 
+  [AmazonEKSNetworkingPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSNetworkingPolicy) 
+  [AmazonEKSClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksclusterpolicy) 

## 检查现有集群角色
<a name="auto-cluster-iam-role-check"></a>

可使用以下程序检查并确定您的账户是否已有 Amazon EKS 集群角色。

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **角色**。

1. 在角色列表中搜索 `AmazonEKSAutoClusterRole`。如果不存在包含 `AmazonEKSAutoClusterRole` 的角色，请参阅下一部分的说明以创建该角色。如果包含 `AmazonEKSAutoClusterRole` 的角色确实存在，则选择角色以查看附加的策略。

1. 选择**权限**。

1. 确保将 **AmazonEKSClusterPolicy** 托管策略附加到此角色。如果附加该策略，则将正确配置 Amazon EKS 集群角色。

1. 选择 **Trust relationships**（信任关系），然后选择 **Edit trust policy**（编辑信任策略）。

1. 验证信任关系是否包含以下策略。如果信任关系符合以下策略，请选择 **Cancel**（取消）。如果信任关系不匹配，请将策略复制到**编辑信任策略**窗口并选择**更新策略**。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow", 
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": [
           "sts:AssumeRole",
           "sts:TagSession"
         ]
       }
     ]
   }
   ```

**注意**  
 AWS 不要求此角色使用名称 `AmazonEKSAutoClusterRole`。

## 创建 Amazon EKS 集群角色
<a name="auto-cluster-iam-role-create"></a>

要创建集群角色，您可以使用 AWS 管理控制台 或 AWS CLI。

### AWS 管理控制台
<a name="auto-cluster-iam-role-console"></a>

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 选择 **Roles**，然后选择 **Create role**。

1. 在**受信任的实体类型**下，选择 **AWS 服务**。

1. 从**其它 AWS 服务的使用案例**下拉列表中，选择 **EKS**。

1. 为您的使用案例选择 **EKS - Cluster**（EKS - 集群），然后选择 **Next**（下一步）。

1. 在**添加权限**选项卡上，选择相关策略，然后选择**下一步**。
   +  [AmazonEKSComputePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSComputePolicy) 
   +  [AmazonEKSBlockStoragePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSBlockStoragePolicy) 
   +  [AmazonEKSLoadBalancingPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSLoadBalancingPolicy) 
   +  [AmazonEKSNetworkingPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSNetworkingPolicy) 
   +  [AmazonEKSClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksclusterpolicy) 

1. 对于 **Role name**（角色名称），请为角色输入唯一名称，例如 `AmazonEKSAutoClusterRole`。

1. 对于 **Description**（说明），请输入描述性文本，例如 `Amazon EKS - Cluster role`。

1. 选择**创建角色**。

### AWS CLI
<a name="auto-cluster-iam-role-cli"></a>

1. 将以下内容复制到名为 *cluster-trust-policy.json* 的文件中。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow", 
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": [
           "sts:AssumeRole",
           "sts:TagSession"
         ]
       }
     ]
   }
   ```

1. 创建角色。您可以将 *AmazonEKSAutoClusterRole* 替换为您选择的任何名称。

   ```
   aws iam create-role \
     --role-name AmazonEKSAutoClusterRole \
     --assume-role-policy-document file://"cluster-trust-policy.json"
   ```

1. 将所需的 IAM 策略附加到角色：

 **AmazonEKSClusterPolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
```

 **AmazonEKSComputePolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonEKSComputePolicy
```

 **AmazonEKSBlockStoragePolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonEKSBlockStoragePolicy
```

 **AmazonEKSLoadBalancingPolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonEKSLoadBalancingPolicy
```

 **AmazonEKSNetworkingPolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonEKSNetworkingPolicy
```

# Amazon EKS 自动模式节点 IAM 角色
<a name="auto-create-node-role"></a>

**注意**  
您不能使用创建任何集群时使用的相同角色。

在创建节点之前，必须首先创建具有以下策略或同等权限的 IAM 角色：
+  [AmazonEKSWorkerNodeMinimalPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSWorkerNodeMinimalPolicy) 
+  [AmazonEC2ContainerRegistryPullOnly](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerRegistryPullOnly) 

## 检查现有节点角色
<a name="auto-create-node-role-check"></a>

可以使用以下过程检查并查看您的账户是否已有 Amazon EKS 节点角色。

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **角色**。

1. 在角色列表中搜索 `AmazonEKSAutoNodeRole`。如果具有其中一个名称的角色不存在，请参阅下一部分的说明以创建该角色。如果包含 `AmazonEKSAutoNodeRole` 的角色确实存在，请选择该角色以查看附加的策略。

1. 选择**权限**。

1. 确保附加了上述必需的策略或等效自定义策略。

1. 选择 **Trust relationships**（信任关系），然后选择 **Edit trust policy**（编辑信任策略）。

1. 验证信任关系是否包含以下策略。如果信任关系符合以下策略，请选择 **Cancel**（取消）。如果信任关系不匹配，请将策略复制到**编辑信任策略**窗口并选择**更新策略**。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "ec2.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

## 创建 Amazon EKS 节点 IAM 角色
<a name="auto-create-node-role-iam"></a>

您可以使用 AWS 管理控制台 或 AWS 创建节点 IAM 角色。

### AWS 管理控制台
<a name="auto-create-node-role-console"></a>

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **Roles**（角色）。

1. 在 **Roles**（角色）页面上，选择 **Create role**（创建角色）。

1. 在 **Select trusted entity**（选择受信任的实体）页面上，请执行以下操作：

   1. 在**可信实体类型**部分中，选择 **AWS 服务**。

   1. 在 **Use case**（使用案例）下，选择 **EC2**。

   1. 选择**下一步**。

1. 在**添加权限**页面上，附加以下策略：
   +  [AmazonEKSWorkerNodeMinimalPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSWorkerNodeMinimalPolicy) 
   +  [AmazonEC2ContainerRegistryPullOnly](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerRegistryPullOnly) 

1. 在 **Name, review, and create**（命名、查看和创建）页面中，请执行以下操作：

   1. 对于 **Role name**（角色名称），请为角色输入唯一名称，例如 `AmazonEKSAutoNodeRole`。

   1. 对于 **Description**（说明），请将当前文本替换为描述性文本，例如 `Amazon EKS - Node role`。

   1. 在**添加标签（可选）**下，将标签作为键值对附加，以将元数据添加到角色。有关在 IAM 中使用标签的更多信息，请参阅《IAM 用户指南》** 中的[标记 IAM 资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

   1. 选择**创建角色**。

### AWS CLI
<a name="auto-create-node-role-cli"></a>

 **创建节点 IAM 角色** 

使用上一步中的 **node-trust-policy.json** 文件来定义哪些实体可以代入该角色。运行以下命令以创建节点 IAM 角色：

```
aws iam create-role \
    --role-name AmazonEKSAutoNodeRole \
    --assume-role-policy-document file://node-trust-policy.json
```

 **记下角色 ARN** 

创建角色后，检索并保存节点 IAM 角色的 ARN。在后续步骤中，您将需要此 ARN。使用以下命令来获取 ARN：

```
aws iam get-role --role-name AmazonEKSAutoNodeRole --query "Role.Arn" --output text
```

 **附加必需的策略** 

将以下 AWS 托管式策略附加到节点 IAM 角色，以提供必要的权限：

附加 AmazonEKSWorkerNodeMinimalPolicy：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoNodeRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy
```

附加 AmazonEC2ContainerRegistryPullOnly：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoNodeRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
```

# Amazon EKS 功能 IAM 角色
<a name="capability-role"></a>

EKS 功能需要配置功能 IAM 角色（或功能角色）。EKS 功能使用此角色对 AWS 服务执行操作，并通过自动创建的访问条目访问集群中的 Kubernetes 资源。

在功能创建期间指定功能角色之前，您必须创建具有相应信任策略和相应功能类型的权限的 IAM 角色。创建此 IAM 角色后，可以将其重用于任意数量的功能资源。

## 功能角色要求
<a name="_capability_role_requirements"></a>

功能角色必须满足以下要求：
+ 该角色必须与集群和功能资源位于同一 AWS 账户中
+ 该角色必须拥有信任策略，以允许 EKS 功能服务代入该角色
+ 该角色必须拥有与功能类型和使用案例要求相适应的权限（请参阅[按功能类型划分的权限](#capability-permissions)）

## 功能角色的信任策略
<a name="capability-trust-policy"></a>

所有功能角色必须包含以下信任策略：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
```

此信任策略允许 EKS 执行以下操作：
+ 担任该角色，以执行 AWS API 操作
+ 标记会话以进行审计和跟踪

## 按功能类型划分的权限
<a name="capability-permissions"></a>

所需的 IAM 权限取决于您使用的功能和部署模式。

**注意**  
对于搭配使用 IAM 角色选择器与 ACK 的生产部署，或者在没有 AWS 服务集成的情况下使用 kro 或 Argo CD 时，功能角色可能不需要信任策略之外的任何 IAM 权限。

 **kro（Kube Resource Orchestrator）**   
不需要 IAM 权限。您可以创建没有附加策略的功能角色。kro 只需要 Kubernetes RBAC 权限即可创建和管理 Kubernetes 资源。

 ** AWS Controllers for Kubernetes（ACK）**   
ACK 支持两种权限模型：  
+  **简单设置（开发/测试）**：直接向功能角色添加 AWS 服务权限。这非常适合入门级的单账户部署或所有用户都需要相同权限的情况。
+  **生产最佳实践**：使用 IAM 角色选择器，实施最低权限访问。使用这种方法，功能角色只需要获得 `sts:AssumeRole` 权限即可代入服务特定角色。您无需向功能角色本身添加 AWS 服务权限（如 S3 或 RDS），系统会将这些权限授予映射到特定命名空间的各个 IAM 角色。

  IAM 角色选择器可启用以下功能：
  + 命名空间级别权限隔离
  + 跨账户资源管理
  + 团队特定 IAM 角色
  + 最低权限安全模型

    IAM 角色选择器方法的功能角色策略示例：

    ```
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "sts:AssumeRole",
          "Resource": [
            "arn:aws:iam::111122223333:role/ACK-S3-Role",
            "arn:aws:iam::111122223333:role/ACK-RDS-Role",
            "arn:aws:iam::444455556666:role/ACKCrossAccountRole"
          ]
        }
      ]
    }
    ```

    有关包括 IAM 角色选择器在内的 ACK 权限配置的详细信息，请参阅[配置 ACK 权限](ack-permissions.md)。

 **Argo CD**   
默认情况下，不需要 IAM 权限。以下功能可能需要可选权限：  
+  ** AWS Secrets Manager**：如果使用 Secrets Manager 来存储 Git 存储库凭证
+  ** AWS CodeConnections**：如果使用 CodeConnections 进行 Git 存储库身份验证

  Secrets Manager 和 CodeConnections 策略示例：

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "secretsmanager:GetSecretValue",
          "secretsmanager:DescribeSecret"
        ],
        "Resource": "arn:aws:secretsmanager:region:account-id:secret:argocd/*"
      },
      {
        "Effect": "Allow",
        "Action": [
          "codeconnections:UseConnection",
          "codeconnections:GetConnection"
        ],
        "Resource": "arn:aws:codeconnections:region:account-id:connection/*"
      }
    ]
  }
  ```

  有关 Argo CD 权限要求的详细信息，请参阅 [Argo CD 注意事项](argocd-considerations.md)。

## 检查现有功能角色
<a name="check-capability-role"></a>

您可使用以下过程来检查账户是否已具有适合您使用案例的功能 IAM 角色。

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 在左侧导航窗格中，选择 **角色**。

1. 在角色列表中搜索功能角色名称（例如，`ACKCapabilityRole` 或 `ArgoCDCapabilityRole`）。

1. 如果存在角色，请选择该角色，查看附加策略和信任关系。

1. 选择 **Trust relationships**（信任关系），然后选择 **Edit trust policy**（编辑信任策略）。

1. 验证信任关系是否与[功能信任策略](#capability-trust-policy)相匹配。如果不匹配，请更新信任策略。

1. 选择**权限**并验证该角色是否具有适用于您的功能类型和使用案例的权限。

## 创建功能 IAM 角色
<a name="create-capability-role"></a>

要创建功能角色，您可以使用 AWS 管理控制台 或 AWS CLI。

 ** AWS 管理控制台 **   

1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

1. 选择 **Roles**，然后选择 **Create role**。

1. 对于**可信实体类型**，选择**自定义信任策略**。

1. 将[功能信任策略](#capability-trust-policy)复制并粘贴到信任策略编辑器中。

1. 选择**下一步**。

1. 在**添加权限**选项卡上，选择或创建适合您的功能类型的策略（请参阅[按功能类型划分的权限](#capability-permissions)）。对于 kro，您可以跳过此步骤。

1. 选择**下一步**。

1. 对于**角色名称**，请为角色输入唯一名称，例如 `ACKCapabilityRole`、`ArgoCDCapabilityRole` 或 `kroCapabilityRole`。

1. 对于 **Description**（说明），请输入描述性文本，例如 `Amazon EKS - ACK capability role`。

1. 选择**创建角色**。

 **AWS CLI**   

1. 将[功能信任策略](#capability-trust-policy)复制到名为 `capability-trust-policy.json` 的文件中。

1. 创建角色。将 `ACKCapabilityRole` 替换为您所需的角色名称。

   ```
   aws iam create-role \
     --role-name ACKCapabilityRole \
     --assume-role-policy-document file://capability-trust-policy.json
   ```

1. 将所需的 IAM 策略附加到角色。对于 ACK，请为要管理的 AWS 服务附加策略。对于 Argo CD，请根据需要为 Secrets Manager 或 CodeConnections 附加策略。对于 kro，您可以跳过此步骤。

   具有 S3 权限的 ACK 示例：

   ```
   aws iam put-role-policy \
     --role-name ACKCapabilityRole \
     --policy-name S3Management \
     --policy-document file://s3-policy.json
   ```

## 对功能角色问题进行问题排查
<a name="troubleshooting-capability-role"></a>

 **功能创建失败，并显示“IAM 角色无效”**   
验证：  
+ 该角色与集群位于同一账户中
+ 信任策略与[功能信任策略](#capability-trust-policy)相匹配 
+ 您拥有该角色的 `iam:PassRole` 权限

 **功能显示权限错误**   
验证：  
+ 该角色具有此功能类型所需的 IAM 权限
+ 该角色的访问条目存在于集群上
+ 如有需要，还可配置其他 Kubernetes 权限（请参阅[其他 Kubernetes 权限](capabilities-security.md#additional-kubernetes-permissions)）

 **ACK 资源失败并出现“权限被拒绝”错误**   
验证：  
+ 此角色具有您的使用案例所需的 IAM 权限
+ 对于引用密钥的 ACK 控制器，请确保已将范围限定为相应命名空间的 `AmazonEKSSecretReaderPolicy` 访问条目策略进行了关联。

有关更多问题排查指导，请参阅[EKS 功能的安全注意事项](capabilities-security.md)。