Google Kubernetes Engine的工作负载身份(Workload Identity)是什么意思?

由于在现有的Google Kubernetes Engine(GKE)集群中引入了工作负载身份标识(Workload Identity),我想简要介绍一下Workload Identity。

Workload Identity是什么?

如您的文献所示:

工作负载身份使得你的GKE集群中的Kubernetes服务账号能够作为一个IAM服务账号来执行任务。

通过使用Workload Identity,您可以将GKE集群内的服务账号与GCP的IAM服务账号关联起来。简而言之,这意味着在GKE上运行的应用程序可以通过Google Cloud API进行身份验证。

如果没有启用工作负载身份验证

在自动驾驶模式下,工作负载身份 (Workload Identity) 是默认设置,但在标准模式下,目前还不是默认设置。因此,在这种情况下,如果要访问 Google Cloud APIs,则需要使用以下机制之一:

    • IAM service accountのkeyを発行して、secretとしてクラスターで持っておく

 

    Nodeに紐づけられているIAM service accountを利用する。こちらの場合、設定を変更しない限りCompute Engine default service accountが使われる
no_workload_identity.png

Workload Identity会发生何种变化?

使用Workload Identity的情况下,需要在事先将Kubernetes服务账号和IAM服务账号相关联。然后,如果将该Kubernetes服务账号指定给Pod,那么在访问Google Cloud API时,将使用相应的IAM服务账号。

通过使用这个机制,可以进行更精细的权限设置,从而解决以下其他机制的问题。

    • IAM service accountのkeyを使った場合の漏洩のリスク、そしてkeyのローテーションの必要性がなくなります

 

    NodeのIAM service accountを利用する場合は、そのnodeで実行されている全てのアプリケーションが同じservice accountを共有することになりますので、権限を多く与えすぎてしまうという懸念があります。ですが、Workload Identityの場合、各アプリケーションに必要最低限の権限が付与できるようになります
with_workload_identity.png

导入的步骤

您可以在文档中确认具体步骤,但大致流程如下。

    1. 在群集中启用工作负载身份验证

 

    1. 创建启用了工作负载身份验证的节点池

 

    1. 创建并关联Kubernetes服务帐户和IAM服务帐户

 

    在应用程序的Pod规范中指定Kubernetes服务帐户:
spec:
  serviceAccountName: KSA_NAME
  nodeSelector:
    iam.gke.io/gke-metadata-server-enabled: "true"

通过应用此更改,Pod将能够在启用了工作负载标识的节点上运行。

总结

由于Workload Identity可以解决GKE集群访问Google Cloud APIs时出现的各种问题,因此目前GCP推荐使用它,并且未来在Standard模式下也将默认启用。

有些功能現在需要倚賴工作負載身份在集群中啟用。例如:GKE備份。

image.png

请你提供下面的参考。(Here is a reference for you.)

    • https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity

 

    https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity
广告
将在 10 秒后关闭
bannerAds