我希望为使用GCP的人提供服务。
鉴于我将从我的服务器访问他们的GCP监控API,看起来最好使用服务帐户。这样,它就不依赖于单个用户,并且如果该用户从其组织中删除,则不会停止工作。
手动创建服务帐户并不复杂,但绝对比向用户提供oauth权限流更复杂。
有没有办法使用oauth流创建GCP服务帐户,这样我就不必强迫用户使用正确的权限手动创建一个?
我环顾四周,找不到任何关于此的文件,这让我相信这是不可能的。
答案 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()