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

服务账户的 IAM 角色

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

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

重要

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

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

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

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

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

通过三个步骤启用服务账户以访问Amazon资源

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

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

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