Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform GKE/Cloud IAM工作负载标识设置错误403_Google Cloud Platform_Google Kubernetes Engine_Google Cloud Iam_Cloud Sql Proxy - Fatal编程技术网

Google cloud platform GKE/Cloud IAM工作负载标识设置错误403

Google cloud platform GKE/Cloud IAM工作负载标识设置错误403,google-cloud-platform,google-kubernetes-engine,google-cloud-iam,cloud-sql-proxy,Google Cloud Platform,Google Kubernetes Engine,Google Cloud Iam,Cloud Sql Proxy,我们已经为一个基于Java/Tomcat的应用程序设置了一个CloudSQL代理作为一个侧车容器 下面是我们如何设置工作负载标识,以使我们的应用程序能够通过CloudSQL代理连接到CloudSQL: 已创建云IAM服务帐户并授予其SQL客户端权限: 设置策略绑定,如下所示: gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member &quo

我们已经为一个基于Java/Tomcat的应用程序设置了一个CloudSQL代理作为一个侧车容器

下面是我们如何设置工作负载标识,以使我们的应用程序能够通过CloudSQL代理连接到CloudSQL:

  • 已创建云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
    
  • 尽管按照说明正确地执行了所有操作,但仍然会导致:

    Error 403: The client is not authorized to make this request., notAuthorized
    
    事实证明,谷歌云中的IAM似乎影响了服务账户

  • 删除在步骤1中创建的现有云IAM服务帐户及其关联的角色
  • 重新创建服务帐户(具有相同的权限)
  • 这应该可以解决问题。当然,您必须再次重复第2步和第3步才能完成设置,但它可以工作