问题标签 [workload-identity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
320 浏览

kubernetes - GKE 工作负载身份 PermissionDenied

我正在尝试使用 Google 的首选“工作负载身份”方法来使我的 GKE 应用程序能够安全地访问来自 Google Secrets 的秘密。

我已经完成了设置,甚至检查了故障排除部分(https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity?hl=sr-ba#troubleshooting)中的所有步骤,但我我的日志中仍然出现以下错误

未处理的异常。Grpc.Core.RpcException: Status(StatusCode=PermissionDenied, Detail="Permission 'secretmanager.secrets.list' 拒绝资源 'projects/my-project' (或者它可能不存在)。")

我认为问题是由于节点池没有使用正确的服务帐户,所以我重新创建了它,这次指定了正确的服务帐户。

服务帐号添加了以下角色:

  • 云构建服务
  • 帐户 Kubernetes Engine 开发人员
  • 容器注册服务代理
  • 秘密经理秘密访问者
  • 秘密经理查看器

我用来认证的包的相关源码如下:

参考。https://github.com/jsukhabut/googledotnet

我错过了这个过程中的一步吗?

知道为什么 Google 仍然说“资源 'projects/my-project' 的权限 'secretmanager.secrets.list' 被拒绝(或者它可能不存在)吗?”

0 投票
2 回答
575 浏览

kubernetes - 如何在 GKE Deployment.YAML 中为 Pod 指定 ServiceAccountName

我已经为 Workload Identity ( https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity ) 配置了我的集群和节点池,但为了让它工作,我还需要让我的 pod 使用我为 Workload Identity 创建的 kubernetes 服务帐户。

我看到我可以serviceAccountName在 pod 的 YAML 中指定,但是如何使用使用 deployment.yaml 的 Google CI/CD 来做到这一点?或者我可以以某种方式引用 pod 的 YAML 以用作我的 deployment.yaml 中的规范模板吗?对不起,我是k8s的新手!

参考。https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

本质上,我只是想让 Workload Identity 与我的应用程序一起使用,因此GOOGLE_APPLICATION_CREDENTIALS由 Google 设置以在我的应用程序中使用!

我在 deployment.yaml 中尝试了以下操作,但出现错误unknown field "serviceAccountName" in io.k8s.api.core.v1.Container;

0 投票
1 回答
293 浏览

node.js - 使用 @google-cloud 进行工作负载身份联合

当我从这里使用@google-cloud/storage Node.js 模块时,除了服务帐户密钥之外,是否还有其他身份验证/授权访问 Google Cloud Storage 的方法?我已经阅读了有关“工作负载身份联合”的信息,但对我来说,当我使用@google-cloud/storage库时,我似乎无法使用这种方法。我找不到任何合适的构造函数,只有这两个:

有什么建议吗?谢谢

0 投票
1 回答
380 浏览

java - 如何在 java springboot 应用程序中使用 gcp 工作负载标识?

在下面,我在 application.properties 中设置变量并尝试使用默认服务实例:

application.config文件内容:

GOOGLE_APPLICATION_CREDENTIALS =classpath:config.json

但这不起作用我收到以下错误:

0 投票
2 回答
207 浏览

google-kubernetes-engine - 版本“iam.cnrm.cloud.google.com/v1beta1”中的种类“IAMPolicy”没有匹配项

我想使用工作负载身份访问服务帐户。

猫服务帐户.yaml

我的 yaml 文件是 policy.yaml


在 YAML 文件上出现错误:版本“iam.cnrm.cloud.google.com/v1beta1”中的种类“IAMPolicy”没有匹配项

0 投票
0 回答
241 浏览

google-cloud-platform - Cloudsql-proxy 错误检查范围和超时等待响应标头

我在 GKE 上有一个 kubernetes 工作,它使用 cloudsql-proxy 作为 sidecar。我正在使用workloadIdentity 进行连接:

我有 GSA 和 KSA 设置,cloudsql-proxy 适用于部署,但不适用于相同命名空间中的作业和使用相同的服务帐户。

我不断收到此错误:

我不确定问题是什么。我需要帮助。

这是 cloudsql-proxy 的 pod 容器模板:

0 投票
1 回答
402 浏览

airflow - Composer 2 / GKE Autopilot Cluster PodOperator 任务的工作负载身份和服务帐户

我正在尝试在 Composer 2 环境中运行 GKEStartPodOperator/KubernetesPodOperator 任务,该环境在自动驾驶模式下使用 GKE 集群。我们有一个现有的 Composer 1 环境,其中 GKE 集群未处于自动驾驶模式。我们使用 Google Cloud Platform 服务(BigQuery、GCS 等)进行身份验证的任务在 Composer 2 环境中失败并出现未经授权的 401,但在 Composer 1 环境中成功。

在日志文件中,我可以看出两种环境中的任务都是通过对元数据服务器的请求来获取其凭据的。主要区别在于 Composer 1 中的任务请求分配给任务运行所在节点的服务帐户,但 Composer 2 中的任务请求似乎是工作负载身份池,例如[project-name].svc.id.goog.

Composer 1 的日志是:

Composer 2 的日志是:

根据Workload Identity 文档,我想我需要将特定的服务帐户绑定到运行 pod 的节点/节点池,但我不确定如何使用 Composer 2 GKE Autopilot 来做到这一点,因为节点是为我管理的。Composer 2 目前没有关于使用 KubernetesPodOperator 或 GKEStartPodOperator 的文档。

总之,我的问题是:我应该如何配置我的 Composer 2 环境 PodOperator 任务以利用特定的服务帐户对 GCP 服务进行身份验证?

0 投票
1 回答
172 浏览

google-cloud-iam - 通过 Workload Identity Federation 支持通配符

我目前正在测试这个Github Action以使用 Workload Identity Federation 对 gcloud 资源进行身份验证。

我创建了一个工作负载身份提供程序,其自定义repository_ref属性映射了 Github 存储库和使用 Github Action 的分支:

在授予服务帐户模拟权限时,我可以使用此命令确保从my_repo存储库的master分支触发 Github 操作:

虽然这可以很好地匹配一个确切的分支名称,但我也想使用它来使用通配符对所有标签创建进行身份验证:

它目前似乎不起作用。有计划支持吗?我现在可以使用替代方案吗?

谢谢

0 投票
0 回答
31 浏览

google-bigquery - 使用 Workload Identity 从 aws fargete 到 gcp bigquery 的连接错误

我通过在 EC2 上使用分配的角色,使用从 AWS EC2 到 GCP Bigquery 的 Workload Identity,它运行良好。

但是,当我通过使用 Fargate 任务角色从 AWS Fargete 到 GCP Bigquery 使用 Workload Identity 时,它不起作用。

在这种情况下,我应该如何设置工作负载身份?

我使用了下面的库。

Stacktrace 有以下消息

0 投票
1 回答
61 浏览

kubernetes - 使用工作负载身份为 GKE 节点池绑定 GCP IAM

我正在使用 Cloud Composer 在 Kubernetes 中运行任务来安排作业。我已经在与 composer 相同的 GKE 中设置了一个新节点池,并使用它来运行 Kubernetes 任务。在该节点池中,我使用默认服务帐户,但将该帐户绑定到与 Composer 节点池相同的服务帐户,使用 IAM 策略绑定并启用工作负载身份。

但是,我可以从错误中看到 kubernetes 服务帐户缺少对 composer 服务帐户确实有权访问的某些内容的权限。这没有任何意义,因为 kubernetes 服务帐户具有与作曲家服务帐户绑定的 IAM 策略,因此它们应该具有完全相同的权限。但无论出于何种原因,这都是不正确的。任何关于在哪里看的提示都非常感谢......