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

ZAC*_*ndo 2 firebase google-cloud-platform

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

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

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

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

尝试使用类型为“组织”而没有 ID 的父级创建项目即服务帐户会产生 400 错误请求响应,说“父级 ID 必须是数字”。

由于我没有组织(调用 organizations.list return {})并且我无法在没有域的情况下创建一个组织,因此我不确定如何沿着这条道路前进。

luk*_*wam 5

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

答:你不能。


实际的 gmail.com 用户可以在No Organization 中创建项目,但服务帐户必须指定 anorganization或 afolder作为parent项目创建时间。

您当前作为用户执行此操作的解决方案可能是唯一真正的解决方法。为此,您将使用OAuth2 ClientIDSecret来获取offline具有https://www.googleapis.com/auth/cloud-platform范围的用户的凭据。然后,您可以使用它refresh_token来生成access_tokens用于调用Cloud Resource Manager API创建项目的内容

但是,我会为本组织提出强有力的理由。如果您可以获得域,则可以使用该域来设置Cloud Identity获取组织资源。然后,您可以授予服务帐户对您的组织资源的项目创建者角色,它就能够以编程方式创建项目。

这里的优势在于,您使用此服务帐户创建的所有项目都将位于一个组织下,因此您可以在一个位置轻松授予权限并管理所有项目的访问权限。新人加入您的团队,而不必一次授予他们对您的每个 Firebase 或 GCP 项目的访问权限,您可以通过向组织资源添加单个权限来实现。

更多:授予、更改和撤销对资源的访问权限

  • 这很简单。您无需在服务账户设置下在项目内授予权限,只需在组织的 IAM 设置中使用服务账户的电子邮件地址,并在那里授予其项目创建者角色。您可以向您组织中的任何 Google 用户、群组、域或服务帐户授予项目创建者角色。 (2认同)