我目前正在测试这个Github Action以使用 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"
在授予服务帐户模拟权限时,我可以使用此命令确保从my_repo
存储库的master
分支触发 Github 操作:
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/*"
它目前似乎不起作用。有计划支持吗?我现在可以使用替代方案吗?
谢谢