Как вывести список всех проектов внутри организации 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
Документация:
- https://cloud.google.com/asset-inventory/docs/searching-resources
- https://cloud.google.com/asset-inventory/docs/reference/rest/v1p1beta1/resources/searchAll
Связанный пост:
Я решил проблему, назначив учетной записи службы роль владельца "Мой проект 44572" на уровне организации, и теперь, когда я использую токен доступа, сгенерированный этой учетной записью службы, он будет перечислять все проекты в моей организации.