服务账户的 IAM 角色 - Amazon EKS

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

服务账户的 IAM 角色

您可以将 IAM 角色与 Kubernetes 服务账户关联。然后,此服务账户可向使用它的任意 Pod 中的容器提供 AWS 权限。借助此功能,您不再需要向亚马逊 EKS 节点 IAM 角色,以便该节点上的 pods 可以调用AWSAPI。

应用程序必须通过 AWS 凭证签署 AWS API 请求。此功能提供了管理可供应用程序使用的凭证的策略,这与 Amazon EC2 实例配置文件为 Amazon EC2 实例提供凭证的方式相似。而不是创建和分发AWS凭证或使用 Amazon EC2 实例的角色将 IAM 角色与 Kubernetes 服务账户关联。之后,Pod 的容器中的应用程序可以使用AWS开发工具包或AWS CLI将 API 请求发出到授权AWS服务。

重要

即使您将 IAM 角色分配给 Kubernetes 服务账户,该窗格仍然具有分配给亚马逊 EKS 节点 IAM 角色,除非您阻止对 IMDS 的容器访问。有关更多信息,请参阅 限制对 IMDS 和 Amazon EC2 实例配置文件证书的访问权限

服务账户的 IAM 角色功能提供了下列优势:

  • 最小特权 —通过使用服务器账户的 IAM 角色功能,您不再需要向节点 IAM 角色提供扩展的权限以便让该节点上的 Pod 可以调用AWSAPI。您可以将 IAM 权限范围限定到服务账户,并且只有使用该服务账户的 Pod 可以访问这些权限。此功能还消除了对 kiamkube2iam 等第三方解决方案的需求。

  • 凭据隔离 —容器只能检索与该容器所属服务账户关联的 IAM 角色的凭证。容器永远无法访问属于其他 Pod 的其他容器所用的凭证。

  • 可审计性 —可通过 CloudTrail 进行访问和事件日志记录以帮助确保可追溯性审核。

启用服务帐户访问AWS资源分三个步骤

  1. 为您的集群创建 IAM OIDC 提供商— 您只需为集群执行一次该操作。

  2. 创建 IAM 角色并向其附加一个 IAM 策略,该 IAM 策略具有您的服务账户需要的权限。— 我们建议为容器需要的每个唯一权限集合创建单独的角色。

  3. 将 IAM 角色与服务账户关联— 为需要访问权限的每个 Kubernetes 服务帐户完成此任务AWS资源的费用。