谷歌云 gcloud 为服务帐户电子邮件启用 API 服务

时间:2020-12-23 17:53:38

标签: google-cloud-platform service-accounts

如何专门为服务帐户而不是用户帐户启用 API 服务?

上下文:我正在使用 Python 脚本在本地测试云函数(查询 BQ、将结果转换为 json、放入 GCS 存储桶)。我可以使用我自己的测试帐户来完成这项工作,我可以在其中启用服务,但不确定我将如何为客户的服务帐户执行此操作(或客户将如何执行此操作)。这是我为自己的服务帐户执行此操作的方式:

  1. 以 json 形式获取服务帐户凭据
  2. 关注 gcloud cloud sdk 的安装
  3. 问题:gcloud auth activate-service-account --key-file="/path/to/json-todd-credentials.json" --project="json-todd"
  4. 像这样启用 API 服务:gcloud enable --account="json-todd@json-todd.iam.gserviceaccount.com" cloudfunctions.googleapis.com pubsub.googleapis.com etc.

我有客户端的服务帐户 json,我可以 auth activate-service-account 服务帐户,但我无法启用,因为我没有权限 - 但是客户端如何专门为 GCP 上的服务帐户启用 API无需以上述方式安装/初始化/授权服务帐户?

1 个答案:

答案 0 :(得分:3)

我认为有一个误解。 API 是为项目启用的,而不是为服务帐户(或用户帐户)启用的。然后,您有权访问您已激活的 API。

如果您在新项目上有一个服务帐户,但没有启用 API,则使用 roles/serviceusage.serviceUsageAdmin 授予此服务帐户没有问题。像这样,服务帐户将能够激活项目上的 API,可能是所有 API。 但是如果服务帐户只有访问 BigQuery 的权限(例如)并且服务帐户激活了计算引擎 API,它将无法访问 VM,即使 API已启用。

相反,如果项目已经启用了 API,则服务帐号不需要授予 roles/serviceusage.serviceUsageAdmin 角色,只需要使用已激活 API 的权限即可。