GKE / Cloud IAM 工作负载身份设置错误 403
GKE / Cloud IAM workload Identity setup error 403
我们已经为我们的一个基于 Java / Tomcat 的应用程序设置了一个 CloudSQL 代理作为 sidecar 容器。
以下是我们如何设置工作负载身份以使我们的应用程序能够通过 cloudsql 代理连接到云SQL:
已创建 Cloud IAM 服务帐户并授予其 SQL 客户端权限:
设置策略绑定如下:
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:[PROJECT_ID].svc.id.goog[default/default]" \
[GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
为 GKE 服务帐户添加了注释:
kubectl annotate serviceaccount \
--namespace [K8S_NAMESPACE] \
[KSA_NAME] \
iam.gke.io/gcp-service-account=[GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
但是当我们使用以下方法进行测试时:
kubectl run --rm -it \
--generator=run-pod/v1 \
--image google/cloud-sdk:slim \
--serviceaccount [KSA_NAME] \
--namespace [K8S_NAMESPACE] \
workload-identity-test
尽管按照解释 on this page 正确执行所有操作,仍然会导致:
Error 403: The client is not authorized to make this request., notAuthorized
原来 Google Cloud IAM 中有 a glitch 似乎影响了服务帐户。
- 删除在第 1 步中创建的现有 Cloud IAM 服务帐户及其关联的角色。
- 再次重新创建服务帐户(具有与考试相同的权限)
这应该可以解决问题。当然,您必须再次重做第 2 步和第 3 步才能完成设置,但它有效。
我们已经为我们的一个基于 Java / Tomcat 的应用程序设置了一个 CloudSQL 代理作为 sidecar 容器。
以下是我们如何设置工作负载身份以使我们的应用程序能够通过 cloudsql 代理连接到云SQL:
已创建 Cloud IAM 服务帐户并授予其 SQL 客户端权限:
设置策略绑定如下:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:[PROJECT_ID].svc.id.goog[default/default]" \ [GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
为 GKE 服务帐户添加了注释:
kubectl annotate serviceaccount \ --namespace [K8S_NAMESPACE] \ [KSA_NAME] \ iam.gke.io/gcp-service-account=[GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
但是当我们使用以下方法进行测试时:
kubectl run --rm -it \ --generator=run-pod/v1 \ --image google/cloud-sdk:slim \ --serviceaccount [KSA_NAME] \ --namespace [K8S_NAMESPACE] \ workload-identity-test
尽管按照解释 on this page 正确执行所有操作,仍然会导致:
Error 403: The client is not authorized to make this request., notAuthorized
原来 Google Cloud IAM 中有 a glitch 似乎影响了服务帐户。
- 删除在第 1 步中创建的现有 Cloud IAM 服务帐户及其关联的角色。
- 再次重新创建服务帐户(具有与考试相同的权限)
这应该可以解决问题。当然,您必须再次重做第 2 步和第 3 步才能完成设置,但它有效。