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

GKE/字节云IAM工作负载标识设置错误403

养振濂
2023-03-14

我们已经为一个基于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
    
  • 共有1个答案

    毕瀚
    2023-03-14

    事实证明,谷歌云IAM中存在一个小故障,似乎会影响服务帐户。

    1. 删除在步骤1中创建的现有云IAM服务帐户及其关联的角色

    这应该可以解决问题。当然,您必须再次重复步骤2和3以完成设置,但它可以正常工作。

     类似资料:
    • 我使用Cloud Composer在Kubernetes中运行任务来安排作业。我在与composer相同的GKE中设置了一个新的节点池,并使用它来运行Kubernetes任务。在该节点池中,我使用默认服务帐户,但将该帐户绑定到与Composer节点池相同的服务帐户,使用IAM策略绑定,并启用工作负载标识。 然而,我可以从错误中看到kubernetes服务号缺少作曲家服务号可以访问的一些东西的权限。

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

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

    • 我目前正在使用GKE Workload Identity从GKE内部访问谷歌云平台资源。这对谷歌云存储和其他平台资源非常有效。 然而,当我试图使用GKE Workload Identity访问Google工作表时,我遇到了一个“身份验证范围不足”的问题。 当我为服务帐户生成密钥文件并在代码中使用它时,我可以手动将作用域设置为。它的工作原理与预期一样,我可以访问该表。如果我将范围更改为,我得到了与G

    • 我最近一直在使用GKE工作负载标识特性。我想更详细地了解组件的工作原理。 GCP客户端代码(或其他语言SDK)适用于GCE元数据方法 我想现在对我来说主要的难题是验证呼叫舱的身份。最初我认为这将使用令牌评论API,但现在我不确定谷歌客户端工具如何知道使用安装到pod中的服务号令牌... 编辑后续问题: 问题1:在第2步和第3步之间,是对通过节点池上的设置GKE_metadata_服务器路由到GKE

    • 我们已经在GKE集群中成功地使用了Google表格的Java客户端一段时间,使用类来提供凭据。以下代码或多或少是我们正在做的事情: 我们最近在集群上启用了工作负载标识,而这种集成不再起作用,我们得到一个403,消息是“ACCESS\u TOKEN\u SCOPE\u Uncipled”。我认为这是因为默认范围包含Google Cloud API,不允许您指定所需的Google Sheets范围。