GKE / Cloud IAM工作负载身份设置错误403

时间:2020-01-22 11:32:13

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

我们已将CloudSQL代理设置为基于Java / Tomcat的应用程序之一的附带容器。

这是我们设置工作负载身份以使我们的应用程序通过cloudsql代理连接到CloudSQL的方法:

  1. 创建了Cloud IAM服务帐户并授予其SQL客户端权限:

  2. 设置策略绑定如下:

          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 ``` 
    
  3. 为GKE服务帐户添加了注释:

    kubectl annotate serviceaccount \
      --namespace [K8S_NAMESPACE] \
      [KSA_NAME] \
      iam.gke.io/gcp-service-account=[GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
  1. 但是当我们使用以下方法测试时:
    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

1 个答案:

答案 0 :(得分:1)

事实证明,Google Cloud IAM中有a glitch似乎会影响服务帐户。

  1. 删除在步骤1中创建的现有Cloud IAM服务帐户及其角色。
  2. 再次创建服务帐户(具有相同的考试权限)

应该可以解决此问题。当然,您必须再次重做第2步和第3步才能完成设置,但可以。