服务账户的 IAM 角色 - Amazon EKS

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

服务账户的 IAM 角色

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

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

重要

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

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

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

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

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

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

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

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

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