工作负载身份概览

工作负载身份让您可以为集群中的每个应用分配不同的精细身份和授权。对于在 GKE on AWS 中运行的应用,建议使用 Workload Identity 访问 AWS 和 Google Cloud 服务。

所有 GKE 集群均启用了 Workload Identity。

Kubernetes 服务账号

Workload Identity 实施了身份联合,或将信任或角色委托给外部提供商。每个集群都有内置的 OpenID Connect (OIDC) 提供商。Pod 在集群中运行时,会使用 Kubernetes 服务账号运行。可以使用绑定服务账号令牌卷将 Pod 配置为使用其 Kubernetes 服务账号的短期凭据获取令牌。

Open ID Connect 提供商

每个集群可以充当 OpenID Connect (OIDC) 提供商。通过此提供商,您可以使用 OIDC 向支持身份联合的服务提供 Kubernetes 服务账号凭据。

此提供商的颁发者 URI 还充当 OIDC 发现端点。服务可以使用此发现端点获取 JSON Web 密钥集 (JWKS),从而提供公钥信息,以便验证 Kubernetes 服务账号凭据。

Google Cloud IAM 身份池和提供商

Google Cloud IAM 支持使用 OIDC 的身份联合。所有 GKE 集群都在工作负载身份池 PROJECT_ID.svc.id.goog 中配置为身份提供方。

如需获取工作负载身份池和提供商的名称,请参阅将工作负载身份与 Google Cloud 结合使用

AWS IAM 身份提供方

AWS IAM 使用 OIDC 支持身份联合。如需使用工作负载的服务账号身份访问 AWS,您需要在 AWS IAM 上创建 OIDC 提供商。默认情况下,GKE on AWS 未配置 AWS IAM 的身份提供方。

工作负载身份的替代方案

还有其他方法可以从 GKE on AWS 访问服务。由于存在复杂性,我们不推荐使用以下方法。

  1. 导出凭据并将其存储为 Kubernetes Secret。在这种情况下,您必须在 AWS IAM 和集群中手动轮替存储的凭据。此外,如果攻击者窃取凭据,则可以利用这些凭据。

  2. 将凭据关联到节点池的底层实例。在这种情况下,同一节点上运行的所有工作负载会共享这些凭据,因此获得的一组权限比工作负载可能需要的更多。为了阻止访问实例权限,GKE 集群会阻止 Pod 对实例元数据服务的访问。

后续步骤