使用Google Cloud Platform中的服务帐户进行身份验证

时间:2019-06-14 11:51:41

标签: google-cloud-platform google-oauth google-oauth2 service-accounts

我正在用Python开发自己的CLI,以通过GCP API / Python客户端库管理Google Cloud Platform服务中的某些操作。

更具体地说,我将管理资源管理器,云存储,BigQuery和部署管理器。

我创建了一个中央GCP项目和一个在组织节点中具有完全权限的服务帐户,该帐户将代表任何用户运行以管理那些服务并执行操作,例如通过Deployment Manager API创建/删除部署打电话。

我的问题是我应该如何处理每个API /客户端调用中的身份验证。由于CLI将代表人类用户调用不同的服务,因此我想使用服务帐户。 我知道我们可以为服务帐户生成密钥并使用service_account.Credentials.from_service_account_file(key.json)之类的功能读取其内容,但是如果另一个同事想要运行我的CLI,则必须将生成的密钥json文件发送给他们,并在本地指向它,显然我不想将密钥公开到github存储库中。

我已经尝试使用以下功能,并且可以正常工作,但是我需要将key.json文件作为参数传递,以强制其他任何用户将文件本地放置并指向路径:

from google.oauth2 import service_account
from googleapiclient import discovery
credentials = service_account.Credentials.from_service_account_file(
        'service_account_key.json')
service = discovery.build('cloudresourcemanager', 'v1', credentials=credentials)
request = service.projects().list()
response = request.execute()

是否可以通过编程方式对服务帐户进行身份验证,而不必将密钥json文件发送给将运行CLI的人员?

0 个答案:

没有答案