Список проектов Java Api управления ресурсами Google Cloud

Я нахожу способ программно перечислить проекты Google Cloud внутри организации. Я пытаюсь использовать экспортированные учетные данные json для учетной записи службы для достижения этой цели следующим образом:

    // More info on the endpoint here:
    // https://cloud.google.com/resource-manager/reference/rest/v1/projects/list
    final CloudResourceManager cloudResourceManagerService = createCloudResourceManagerService();
    final CloudResourceManager.Projects.List listRequest = cloudResourceManagerService
        .projects()
        .list()
        .setFilter("labels.it-restoring:false name:IT-TEST-*");

    final ListProjectsResponse listResponse = listRequest.execute();

    if (listResponse.isEmpty()) {
      throw new RuntimeException("The API did not get any response"); // I never get past here
    }

    log.info("Listing projects returned: {}", listResponse);

Проблема, которую я обнаруживаю, заключается в том, что я всегда получаю пустой ответ. Хотя я назначил сервисному аккаунту роль владельца. Согласно документам, я мог использоватьroles/ resourcemanager.organizationAdminкоторый я тоже установил, но безуспешно. Я создаю объект api CloudResourceManagement, используяgetApplicationDefault.

Однако если я сделаю gcloud beta auth application-default login который запускает поток аутентификации в браузере и аутентифицируется с пользователем, который является владельцем организации, это работает, и перечисляет все проекты, которые у меня есть.

Может ли кто-нибудь объяснить мне, что мне делать, чтобы сохранить правильные учетные данные, которые будут подражать владельцу пользователя? Я уже установил учетную запись службы с ролью владельца, которая теоретически дает практически доступ ко всем ресурсам, и все равно не повезло.

2 ответа

Для включения в список проектов вашей организации вам потребуется разрешение. resourcemanager.projects.get. Дополнительную информацию можно найти по этой ссылке. Учетная запись службы может иметь роль владельца 1 проекта, и этого недостаточно, чтобы перечислить их все.

Альтернативным решением является предоставление учетной записи 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

Связанное сообщение: Как находить, перечислять или искать ресурсы в сервисах (API) и проектах в Google Cloud Platform?

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