【问题标题】:Google Cloud Resource Management Java Api Projects List谷歌云资源管理 Java Api 项目列表
【发布时间】:2020-09-07 04:13:42
【问题描述】:

我正在寻找一种以编程方式列出组织内部的 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。我使用getApplicationDefault 创建了 CloudResourceManagement api 对象。

但是,如果我执行gcloud beta auth application-default login 会触发浏览器中的身份验证流程并与作为组织所有者的用户进行身份验证,这将起作用并列出我拥有的所有项目。

谁能向我解释我应该怎么做才能存储一个可以模仿用户所有者的适当凭据?我已经将服务帐户设置为 Owner 角色,理论上可以访问所有资源,但仍然没有运气。

【问题讨论】:

  • APIs Explorer 是一个很好的调试工具。在这种情况下,您也需要成为所有者才能使用您的凭据,但是……这是证明底层 API 的好方法。或者,您可以使用gcloud projects list ---log-http。如果可以的话,第一步是尝试使用该过滤器的 APIs Explorer 以确认您确实获得了结果
  • 当您在本地运行代码并希望使用服务帐户时,您需要设置GOOGLE_APPLICATION_CREDENTIALS=/path/to/jwt.json

标签: java google-cloud-platform gcloud google-cloud-resource-manager


【解决方案1】:

要列出您组织中的项目,您需要resourcemanager.projects.get 权限。请在link 中查找更多信息。服务帐户可能具有 1 项目的所有者角色,不足以一一列出。

【讨论】:

  • 哦,也就是说我是一个项目的所有者,而不是整个组织的所有者?有办法吗?
  • here 你可以看到roles/owner 是项目明智的。组织方面的角色以 resourcemanager.-- link 开头。
【解决方案2】:

另一种解决方案是使用以下角色之一在组织级别授予帐户cloudasset.assets.searchAllResources 权限:

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

有了这个权限,你可以列出一个组织内的所有项目456:

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

文档:https://cloud.google.com/asset-inventory/docs/searching-resources

相关帖子:How to find, list, or search resources across services (APIs) and projects in Google Cloud Platform?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    相关资源
    最近更新 更多