【问题标题】:GKE workload identity pool VS workload identity pools from workload identity federationGKE 工作负载身份池 VS 来自工作负载身份联合的工作负载身份池
【发布时间】:2021-04-07 11:40:08
【问题描述】:

Google docu says 工作负载身份可用于授权 GKE pod 使用 Google API 提供的服务(并且工作正常)。 It also says 将会有一个名为PROJECT_ID.svc.id.goog 的自动创建的身份池。

Docu about workload identity federation 说:“您可以使用工作负载身份池来组织和管理外部身份。”

在我按照here 的描述配置工作负载身份之后(并且工作正常),我正在尝试检索我的项目中存在的工作负载身份池,我希望看到PROJECT_ID.svc.id.goog。我正在使用 this command 列出池:gcloud beta iam workload-identity-pools list --location="global" --show-deleted 并作为输出得到:

local@local:~/$ gcloud beta iam workload-identity-pools list --location="global"
Listed 0 items.

那么来自工作负载身份联合的GKE workload identity poolworkload identity pools 是否只是两个完全独立的实体?或者它只是不完全工作atm的beta API?还是第三类?

【问题讨论】:

    标签: google-cloud-platform google-kubernetes-engine google-iam


    【解决方案1】:

    有时很难找到正确的产品名称。 2 两种不同产品的 2 个非常相似的名称。 -> 那是你的错误。


    Workload Identity 是一个 GKE 插件。在深入之前,您必须知道,在 Google Cloud Platform 上,您不需要使用服务帐户密钥文件,因为服务帐户会自动加载到每个服务(Compute Engine、App Engine、Cloud Run、Cloud Function、Cloud构建,...)并可通过metadata server 访问。 Google Cloud 客户端库会自动检测环境并使用元数据服务器(如果存在)。

    GKE 的问题在于您可以在多个不同的 Compute Engine 实例(节点)上运行容器,并且您的不同服务(K8S 服务)可以具有不同的授权级别。如果您依赖 Compute Engine 服务帐号(没有 Workload 身份插件的默认行为),同一实例上的所有 pod 都使用相同的服务帐号(因此具有相同的权限)。

    为了解决这个问题,Workload Identity 插件会创建一个代理来拦截元数据服务器调用,并使用 GKE 上此 pod/服务的正确绑定服务帐户进行回复


    工作负载身份池完全不同。其原理是配置第三方身份提供者(如AWS、Okta,甚至自定义),并定义接受第三方令牌(电子邮件、索赔等)的条件。

    接受令牌后,您可以执行调用以模拟服务帐户,从而生成一个新令牌(这次是符合 Google 标准的令牌),您将能够在后续调用中使用该令牌。

    这里的原则是避免使用服务帐户密钥文件,并依赖第三方身份提供者与 GCP 交互。例如,在 AWS 上您需要调用 BigQuery,您可以使用 Workload 身份池和您的 AWS 身份创建一个令牌,然后调用 BigQuery,而无需在平台之间交换秘密。

    注意:保持秘密安全的最佳方法是不保密!

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2022-11-11
      • 2022-01-14
      • 2021-10-24
      • 2020-05-08
      • 2021-01-23
      • 2021-05-08
      • 2021-02-23
      • 1970-01-01
      相关资源
      最近更新 更多