【问题标题】:Service accounts permissions服务帐号权限
【发布时间】:2019-09-07 14:13:30
【问题描述】:

我对 GCP 很陌生。我有一个具有以下角色的服务帐户: 我为它创建了一个 json 密钥并用它来验证 gcloud 客户端。此客户端正在该服务帐户上该项目的实例上运行。我似乎没有任何权限:

# gcloud auth activate-service-account cloudbreak@**********-lab.iam.gserviceaccount.com --key-file **********-lab-804c90ab0a14.json
# gcloud auth list
                       Credentialed Accounts
ACTIVE  ACCOUNT
*       cloudbreak@**********-lab.iam.gserviceaccount.com
To set the active account, run:
    $ gcloud config set account `ACCOUNT`
# gcloud compute regions list
ERROR: (gcloud.compute.regions.list) Some requests did not succeed:
 - Required 'compute.regions.list' permission for 'projects/**********-lab'

# gcloud projects get-iam-policy **********-lab
ERROR: (gcloud.projects.get-iam-policy) User [cloudbreak@**********-lab.iam.gserviceaccount.com] does not
 have permission to access project [**********-lab:getIamPolicy] (or it may not exist): The caller does n
ot have permission

我错过了什么?

【问题讨论】:

  • 这很奇怪,因为Compute Instance Admin (v1)Project IAM Admin 角色足以获得compute.regions.listresourcemanager.projects.getIamPolicy 的权限。您如何使用服务帐户进行身份验证?您是直接使用它启动计算 VM(gcloud compute instances create [...] --service-account=<your_service_account>,还是使用您生成的 JSON 密钥?
  • @norbjd,使用身份验证命令进行了更新。我使用部署创建的机器。我尝试在本地对服务帐户进行身份验证,但我得到了同样的错误
  • 您能否尝试(单独):1)直接使用关联的服务帐户创建一个计算实例(gcloud compute instances create [...] --service-account=<your_service_account>)2)生成一个新的 JSON 密钥并尝试进行身份验证(本地或从计算虚拟机)?
  • 你试过gcloud config set project PROJECTNAME 吗?如果您不在服务帐户有权访问的项目中,则您将无权访问;)

标签: google-cloud-platform gcloud service-accounts


【解决方案1】:

GCP 中存在一个长期存在的错误,即删除服务帐户并使用相同名称重新创建它可能会导致无法识别其权限的问题。您描述的行为(创建具有相同权限的新服务帐户并看到它工作)与此错误的症状相匹配。

【讨论】:

    【解决方案2】:

    要修复您的服务帐户,您可以按照https://cloud.google.com/iam/docs/understanding-service-accounts 中的提示进行操作。

    奇怪行为的原因描述如下:It is possible to delete a service account and then create a new service account with the same name. If you reuse the name of a deleted service account, it may result in unexpected behavior. [...] If you create a new service account with the same name as a recently deleted service account, the old bindings may still exist

    解决问题:

    1. 创建同名的服务帐号
    2. 撤消授予该服务帐户的所有角色/权限(将从帐户中删除权限)
    3. 授予所需权限(将在帐户上授予这些权限)

    【讨论】:

      【解决方案3】:

      我通过创建一个新的服务帐户(具有相同的角色)并改用该服务帐户解决了这个问题。不知道对方怎么样了

      【讨论】:

        猜你喜欢
        • 2020-11-03
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 1970-01-01
        • 2021-04-19
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多