如何使用Resource Manager API列出GCP组织内的所有项目?

时间:2020-06-15 13:22:29

标签: api http google-cloud-platform access-token google-cloud-resource-manager

我试图通过使用Resource Manager API中的projects.list方法列出我在GCP中拥有的所有项目,但是我无法弄清楚要使用的访问令牌。

假设我有三个项目:

  • My Project 44572
  • Testing
  • My First Project

当我使用projects.list方法时,应该给我这样的输出:

{
  "projects": [
    {
      "name": "My Project 44572", 
      "parent": {
        "type": "organization", 
        "id": "ORG_ID"
      }, 
      "projectId": "PROJECT_ID", 
      "projectNumber": "PROJECT_NUMBER", 
      "lifecycleState": "ACTIVE", 
      "createTime": "2020-06-15T08:38:04.712Z"
    }, 
    {
      "name": "Testing ", 
      "parent": {
        "type": "organization", 
        "id": "ORG_ID"
      }, 
      "projectId": "PROJECT_ID", 
      "projectNumber": "PROJECT_NUMBER", 
      "lifecycleState": "ACTIVE", 
      "createTime": "2020-06-15T08:35:59.480Z"
    }, 
    {
      "name": "My First Project", 
      "parent": {
        "type": "organization", 
        "id": "ORG_ID"
      }, 
      "projectId": "PROJECT_ID", 
      "projectNumber": "PROJECT_NUMBER", 
      "lifecycleState": "ACTIVE", 
      "createTime": "2020-06-15T08:33:23.859Z"
    }
  ]
}

但是,如果我正在使用通过My Project 44572服务帐户获得的访问令牌,则会得到以下输出:

{
  "projects": [
    {
      "name": "My Project 44572", 
      "parent": {
        "type": "organization", 
        "id": "ORG_ID"
      }, 
      "projectId": "PROJECT_ID", 
      "projectNumber": "PROJECT_NUMBER", 
      "lifecycleState": "ACTIVE", 
      "createTime": "2020-06-15T08:38:04.712Z"
    }
]
}

那么,我应该使用什么访问令牌,以便将所有项目纳入我的组织?

Postman console

2 个答案:

答案 0 :(得分:1)

我通过在组织级别分配“我的项目44572”所有者角色的服务帐户解决了该问题,现在当我使用此服务帐户生成的访问令牌时,它将列出我组织中的所有项目

答案 1 :(得分:1)

projects.list方法需要权限resourcemanager.projects.get。您可以授予帐户任何包含组织级别权限的角色,以实现您的目标,例如-

  • 角色/查看器
  • 角色/编辑器
  • 角色/所有者

或者,您可以使用resources.searchAll方法,该方法需要cloudasset.assets.searchAllResources权限。您可以在组织级别使用此权限授予该帐户任何角色:

  • roles / cloudasset.viewer
  • roles / cloudasset.owner
  • 角色/查看器
  • 角色/编辑器
  • 角色/所有者

要列出组织456中的所有项目,请执行以下操作:

gcloud asset search-all-resources \
--asset-types="cloudresourcemanager.googleapis.com/Project"
--scope=organizations/456

文档:

相关帖子: