当前位置: 首页 > 知识库问答 >
问题:

支持带有工作负载标识联合的通配符

巴星华
2023-03-14

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

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

gcloud iam workload-identity-pools providers create-oidc "my-provider" \
  --project="${PROJECT_ID}" \
  --location="global" \
  --workload-identity-pool="my-pool" \
  --display-name="Demo provider" \
  --attribute-mapping="google.subject=assertion.sub,attribute.repository_owner=assertion.repository_owner,attribute.repository_ref=assertion.repository:assertion.ref" \
  --attribute-condition="attribute.repository_owner=username" \
  --issuer-uri="https://token.actions.githubusercontent.com"

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

gcloud iam service-accounts add-iam-policy-binding "my-service-account@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/iam.workloadIdentityUser" \
  --member="principalSet://iam.googleapis.com/${WORKLOAD_IDENTITY_POOL_ID}/attribute.repository_ref/username/my_repo:refs/heads/master"

虽然这非常适合匹配一个确切的分支名称,但我也想使用同样的方法来使用通配符授予所有标记创建的身份验证:

gcloud iam service-accounts add-iam-policy-binding "my-service-account@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/iam.workloadIdentityUser" \
  --member="principalSet://iam.googleapis.com/${WORKLOAD_IDENTITY_POOL_ID}/attribute.repository_ref/username/my_repo:refs/tags/*"

目前它似乎不起作用。是否有计划支持这一点?现在我有别的选择吗?

谢谢

共有1个答案

宗沛
2023-03-14

不支持AFAIK通配符。

试试这个:

--member="principalSet://iam.googleapis.com/${WORKLOAD_IDENTITY_POOL_ID}/attribute.repository/username/my_repo"
 类似资料:
  • Google docu表示,工作负载标识可以用来授权GKE POD使用Google API提供的服务(而且效果很好)。它还表示,将有一个自动创建的标识池,名为PROJECT\u ID.svc。id.goog。 关于工作负载标识联合的Docu说:“您可以使用工作负载标识池来组织和管理外部标识。” 在我按照这里所述配置了工作负载标识(并且工作正常)之后,我正在尝试检索项目中现有的工作负载标识池,我希望

  • 有人知道如果有任何其他方式的认证/授权访问谷歌云存储除了服务帐户密钥,当我使用@谷歌云/存储Node.js模块从这里?我读过关于“工作负载标识联合”的文章,但是在我看来,当我使用@google-Cloud/存储库时,我不能使用这种方法。我找不到任何合适的构造函数,只有这两个: 有什么建议吗?谢谢你们

  • 我试图在Composer 2环境中运行GKEStartPodOperator/KubernetesPodOperator任务,该环境在自动驾驶模式下使用GKE集群。我们有一个现有的Composer 1环境,GKE集群不处于自动驾驶模式。我们使用谷歌云平台服务(BigQuery、GCS等)进行身份验证的任务在Composer 2环境中失败,但在Composer 1环境中成功。 在日志文件中,我可以看

  • 试图找出如何从GKE集群中使用存储API进行身份验证。 代码: 被记录为使用以下方法通过API进行身份验证: {@code GOOGLE_APPLICATION_Credentials}环境变量指向的凭据文件 应用程序正在使用GCP工作负载标识功能,因此应用程序(群集内)服务号注释为: 现在,调用存储帐户失败,出现以下错误: 这让我觉得工作负载标识工作不正常。我希望收到带注释的服务帐户的错误消息,

  • 我正在尝试在GCP中使用Python创建一个服务帐户。当我将env var GOOGLE_APPLICATION_凭证设置为JSON凭证文件,并使用以下代码时,这一切都很好: 但是,以下代码在使用Workload Identity Federation的CI-Github操作中失败: 失败与错误: 我正在使用以下Github操作向Google进行身份验证 有人能帮忙吗?

  • 我遵循谷歌云平台的指南,通过使用云SQL代理和公共IP地址的GKE集群连接到云SQL实例(https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine).但是,在尝试部署应用程序后,我在容器日志中出现以下错误。 然后是错误信息 此外(我假设是相关的),当我检查集群中节点的计算引擎时,我看到Cloud SQL Cloud A