使用oauth流程创建GCP服务帐户?

时间:2017-09-29 16:43:08

标签: oauth-2.0 google-cloud-platform gcp

我希望为使用GCP的人提供服务。

鉴于我将从我的服务器访问他们的GCP监控API,看起来最好使用服务帐户。这样,它就不依赖于单个用户,并且如果该用户从其组织中删除,则不会停止工作。

手动创建服务帐户并不复杂,但绝对比向用户提供oauth权限流更复杂。

有没有办法使用oauth流创建GCP服务帐户,这样我就不必强迫用户使用正确的权限手动创建一个?

我环顾四周,找不到任何关于此的文件,这让我相信这是不可能的。

1 个答案:

答案 0 :(得分:0)

您可以使用projects.serviceAccounts.create API调用以编程方式创建服务帐户。此调用必须由使用iam.serviceAccounts.create权限(例如owner或iam.serviceAccountAdmin角色)授权的用户进行。执行此操作的代码如下所示:

import googleapiclient.discovery
import httplib2
credentials = GET_YOUR_USER_CREDS()
http_auth = credentials.authorize(httplib2.Http())
iam_client = googleapiclient.discovery.build('iam', 'v1', http=http_auth())
iam_client.projects().serviceAccounts().create(name="projects/PROJECT_ID", body={"accountId":"SERVICE-ACCOUNT-ID"}).execute()