服务账户的 IAM 角色 - Amazon EKS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

服务账户的 IAM 角色

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

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

重要

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

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

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

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

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

使服务账户可以通过三个步骤访问 AWS 资源

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

  2. 创建 角色并向该角色附加 IAM 策略,并设定您的服务账户需要的权限IAM 我们建议为 Pod 所需的每个唯一权限集合创建单独的角色。–

  3. 角色与服务账户关联IAM 为每个需要访问 资源的 Kubernetes 服务账户完成此任务。–AWS