如何专门为服务帐户而不是用户帐户启用 API 服务?
上下文:我正在使用 Python 脚本在本地测试云函数(查询 BQ、将结果转换为 json、放入 GCS 存储桶)。我可以使用我自己的测试帐户来完成这项工作,我可以在其中启用服务,但不确定我将如何为客户的服务帐户执行此操作(或客户将如何执行此操作)。这是我为自己的服务帐户执行此操作的方式:
gcloud auth activate-service-account --key-file="/path/to/json-todd-credentials.json" --project="json-todd"
gcloud enable --account="json-todd@json-todd.iam.gserviceaccount.com" cloudfunctions.googleapis.com pubsub.googleapis.com etc.
我有客户端的服务帐户 json,我可以 auth activate-service-account
服务帐户,但我无法启用,因为我没有权限 - 但是客户端如何专门为 GCP 上的服务帐户启用 API无需以上述方式安装/初始化/授权服务帐户?
答案 0 :(得分:3)
我认为有一个误解。 API 是为项目启用的,而不是为服务帐户(或用户帐户)启用的。然后,您有权访问您已激活的 API。
如果您在新项目上有一个服务帐户,但没有启用 API,则使用 roles/serviceusage.serviceUsageAdmin
授予此服务帐户没有问题。像这样,服务帐户将能够激活项目上的 API,可能是所有 API。 但是如果服务帐户只有访问 BigQuery 的权限(例如)并且服务帐户激活了计算引擎 API,它将无法访问 VM,即使 API已启用。
相反,如果项目已经启用了 API,则服务帐号不需要授予 roles/serviceusage.serviceUsageAdmin
角色,只需要使用已激活 API 的权限即可。