Как вывести список всех проектов внутри организации GCP с помощью Resource Manager API?

Я пытаюсь перечислить все проекты, которые у меня есть в GCP, используя projects.list из API диспетчера ресурсов, но я не могу понять, какой токен доступа использовать.

Допустим, у меня есть три проекта:

  • 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"
    }
]
}

Итак, какой токен доступа я должен использовать, чтобы получить все проекты в своей организации?

2 ответа

Для метода projects.list требуется разрешение resourcemanager.projects.get. Вы можете предоставить учетной записи любую роль, содержащую разрешение на уровне организации для достижения вашей цели, например:

  • роли / зритель
  • роли / редактор
  • роли / владелец

В качестве альтернативы вы можете использовать метод resources.searchAll, для которого требуется cloudasset.assets.searchAllResourcesразрешение. Вы можете предоставить учетной записи любую роль с этим разрешением на уровне организации:

  • роли / cloudasset.viewer
  • роли / cloudasset.owner
  • роли / зритель
  • роли / редактор
  • роли / владелец

Чтобы перечислить все проекты внутри организации 456:

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

Документация:

Связанный пост:

Я решил проблему, назначив учетной записи службы роль владельца "Мой проект 44572" на уровне организации, и теперь, когда я использую токен доступа, сгенерированный этой учетной записью службы, он будет перечислять все проекты в моей организации.

Другие вопросы по тегам