我正在用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的人员?