Google cloud platform 谷歌云平台:警告:您似乎无权访问project[project],或者它不存在

Google cloud platform 谷歌云平台:警告:您似乎无权访问project[project],或者它不存在,google-cloud-platform,gcloud,google-cloud-iam,Google Cloud Platform,Gcloud,Google Cloud Iam,我运行以下命令: gcloud auth activate-service-account --key-file key.json gcloud config set project my-project 出于某种原因,我会出现以下错误: 警告:您似乎无权访问project[project],或者它不存在 我在IAM中担任以下角色: 应用程序引擎管理员 云构建编辑器 云调度器管理员 存储对象创建者 存储对象查看器 有人知道为什么会这样吗?有什么我遗漏的吗?我认为这是一条错误的警告信息。我在

我运行以下命令:

gcloud auth activate-service-account --key-file key.json
gcloud config set project my-project
出于某种原因,我会出现以下错误:

警告:您似乎无权访问project[project],或者它不存在

我在IAM中担任以下角色:

  • 应用程序引擎管理员
  • 云构建编辑器
  • 云调度器管理员
  • 存储对象创建者
  • 存储对象查看器

有人知道为什么会这样吗?有什么我遗漏的吗?

我认为这是一条错误的警告信息。我在我的服务帐户上看到相同的警告消息,尽管该帐户对我的GCP项目具有权限,并且可以成功执行必要的操作


您可能看到此错误是由于一个不相关的问题。在我的例子中,我试图从一个持续集成环境(Circle CI)部署到AppEngine,但我没有启用。启用API后,我就能够成功部署。

此问题的解决方案可能是在Google云控制台中启用
云资源管理器
API。转到
https://console.developers.google.com/apis/api/cloudresourcemanager.googleapis.com/overview?project=
并单击启用。

我在尝试通过CircleCI中配置的服务帐户将应用部署到Google app Engine时遇到了相同的错误,并通过以下角色(权限)解决了该错误附加到我的服务角色:

  • 应用程序引擎部署器
  • 应用引擎服务管理员
  • 云构建编辑器
  • 存储对象创建者
  • 存储对象查看器

我还启用了应用引擎管理API,但没有启用云资源管理器API

当我开始使用谷歌云平台时遇到了这个错误

问题是我配置/设置了一个不存在的项目(
我的kube项目
) 使用以下命令作为默认项目:

gcloud config set project my-kube-project
以下是我解决问题的方法

我必须首先列出我现有的项目:

gcloud projects list
然后我复制了我想要的项目的ID,这次再次运行命令:

gcloud config set project gold-magpie-258213
而且效果很好

注意:无法更改项目的ID编号的ID,只能更改名称

就这些

我希望这有助于

警告:您似乎无权访问项目[$project_ID],或者该项目不存在

如果没有至少一个角色被授予包含
resourcemanager.projects.get
权限的服务帐户,则会出现警告

换言之,如果以下命令的结果为空,则会出现警告

  • 为给定的
    $SERVICE\u帐户
    收集所有角色(这适用于任何帐户,而不仅仅是服务帐户):

    gcloud项目获取iam策略$PROJECT\u ID\
    --展平class='bindings[].members'\
    --format='table(bindings.role)'\
    --filter=“bindings.members:${SERVICE\u ACCOUNT}”
    #=>
    角色
    . . .
    
  • 对于上面收集的每个
    $ROLE
    ,或者:

    gcloud iam角色描述$ROLE\
    --展平class='includedPermissions'\
    --format='value(includedPermissions)'\
    --project=$project_ID | grep\
    --regexp“^resourcemanager.projects.get$”
    
    如果
    $ROLE
    是一个自定义的
    项目/PROJECT\u ID/roles/$ROLE
    ),或者:

    gcloud iam角色描述角色/$ROLE\
    --展平class='includedPermissions'\
    --format='value(includedPermissions)'grep\
    --regexp“^resourcemanager.projects.get$”
    
    如果
    $ROLE
    策划的
    角色/$ROLE

  • 注意:自定义角色和策划角色的
    gcloud
    命令格式之间的差异使得列出与单个帐户关联的所有角色关联的所有权限变得困难

    如果您已确认与服务帐户关联的角色中没有一个包含resourcemanager.projects.get
    权限,则:

    • 使用
      resourcemanager.projects更新至少一个与服务帐户关联的自定义角色。获取
      权限:

      gcloud iam角色更新$ROLE\
      --添加权限=resourcemanager.projects.get\
      --project=$project\u ID
      #=>
      description:$ROLE\u description
      埃塔格:。
      included权限:
      . . .
      -resourcemanager.projects.get
      . . .
      名称:projects/$PROJECT\u ID/roles/$ROLE
      阶段:。
      职位:$ROLE\u职位
      
      警告:更新时,请确保在此处使用
      --添加权限
      标志,因为
      --权限
      标志将删除自定义角色过去拥有的任何其他权限

    • 创建自定义角色:

      gcloud iam角色创建$ROLE\
      --description=“$ROLE\u description”\
      --权限=resourcemanager.projects.get\
      --project=$project\u ID\
      --title=“$ROLE\u title”
      #=>
      已创建角色[$role]。
      description:$ROLE\u description
      埃塔格:。
      included权限:
      -resourcemanager.projects.get
      名称:projects/$PROJECT\u ID/roles/$ROLE
      阶段:。
      职位:$ROLE\u职位
      
      并将其与服务帐户关联:

      gcloud iam服务帐户添加iam策略绑定\
      --成员'serviceAccount:$SERVICE_ACCOUNT'\
      --角色=项目/$PROJECT\u ID/角色/$role\
      $SERVICE\U账户
      #=>
      更新了serviceAccount[$SERVICE\u ACCOUNT]的IAM策略。
      . . .
      
    • 将服务帐户与已包含
      resourcemanager.projects.get
      权限的策划角色相关联,这已在上面讨论过

      如果您想知道哪些策划的角色已经包含
      resourcemanager.projects.get
      权限,并且不想手工制作