使用没有组织或文件夹的服务帐户创建 GCP 和 Firebase 项目

2024-03-12

我需要使用 Google Cloud Platform (GCP) 服务帐户通过资源管理器 REST API 以编程方式创建项目。我想以无头方式创建 Firebase 项目。

我们当前的解决方案涉及模仿用户和浏览器来实现此目的,因为在没有组织(或文件夹,必须位于组织下)的情况下,似乎无法通过 GCP 资源管理器 REST API 创建项目即服务帐户。

当我尝试创建项目作为服务帐户时,我收到 403 错误请求响应,指出“服务帐户无法在没有父项的情况下创建项目”。

尝试使用空父级创建项目即服务帐户会产生 400 错误请求响应,指出“请求包含无效参数”。

尝试创建一个项目作为服务帐户,其父级类型为“组织”但没有 ID,会产生 400 错误请求响应,指出“父级 ID 必须是数字”。

由于我没有组织(调用organizations.list返回{})并且我无法在没有域的情况下创建一个,我不确定如何继续走这条路。


Q:如何在没有 GCP 组织的情况下使用服务帐户以编程方式创建 Google Cloud Platform (GCP) 项目?

A:你不能。


实际的 gmail.com 用户可以在以下位置创建项目无组织, but a 服务帐号必须指定一个organization or a folder as the parent在项目创建时。

您当前以用户身份执行此操作的解决方案可能是唯一真正的解决方法。为此,您可以使用OAuth2 客户端 ID and Secret获得offline用户的凭据https://www.googleapis.com/auth/cloud-platform范围。然后,你可以使用它refresh_token生成access_tokens你用来调用云资源管理器API https://cloud.google.com/resource-manager/reference/rest/ to 创建项目 https://cloud.google.com/resource-manager/reference/rest/v1/projects/create.

不过,我会做一个强有力的案例为了组织。如果您可以获得域名,则可以使用该域名进行设置云身份 https://support.google.com/cloudidentity/answer/7319251 and 获取组织资源 https://cloud.google.com/resource-manager/docs/creating-managing-organization#acquiring。然后,您可以授予服务帐号 the 项目创建者对你的角色组织资源,它将能够以编程方式创建项目。

这里的好处是您用它创建的所有项目服务帐号将在一个单一的组织因此您可以在一个位置轻松授予权限并管理所有项目的访问权限。如果有新人加入您的团队,您不必一次向他们授予对每个 Firebase 或 GCP 项目的访问权限,您可以通过向组织资源。

More: 授予、更改和撤销对资源的访问权限 https://cloud.google.com/iam/docs/granting-changing-revoking-access

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用没有组织或文件夹的服务帐户创建 GCP 和 Firebase 项目 的相关文章

随机推荐