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

时间:2018-11-13 16:03:49

标签: firebase google-cloud-platform

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

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

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

尝试使用空的父项将项目创建为服务帐户会产生400错误的请求响应,内容为“请求包含无效的参数”。

尝试使用类型为“ organization”且没有ID的父级创建服务项目项目时,会产生400 Bad Request响应,提示“父级id必须为数字”。

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

1 个答案:

答案 0 :(得分:2)

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

A:您不能。


gmail.com的实际用户可以在无组织中创建项目,但是服务帐户必须将organizationfolder指定为项目创建时的parent

您当前以用户身份进行操作的解决方案可能是唯一真正的解决方法。为此,您将使用 OAuth2 ClientID Secret 为具有offline范围的用户获取https://www.googleapis.com/auth/cloud-platform凭据。然后,您可以使用该refresh_token生成access_tokens,用于调用Cloud Resource Manager APIcreate projects

但是,我会为组织提出一个 strong案。如果可以获取域,则可以使用该域来设置Cloud Identityget an Organization resource。然后,您可以在组织资源上授予服务帐户 项目创建者角色,它将能够以编程方式创建项目。

这里的好处是,您使用此服务帐户创建的所有项目都将在一个组织下,因此您可以轻松地授予权限并管理所有项目在一个地方。一个新成员加入您的团队,而不必一次授予他们对您的每个Firebase或GCP项目的访问权限,您可以通过向 Organization 组织添加一个权限来做到这一点。

更多:Granting, Changing, and Revoking Access to Resources