通过服务帐户使用 serviceusage API 启用 APIs
Enable APIs using serviceusage API with a service account
我想为客户端创建自动部署 GCP。
为此,我打开了一个页面供他们使用 google 登录,然后启用了 IAM API 和服务使用 API.
然后我创建了一个服务帐户,我想从现在开始使用它,以便按需启用其他所需的 API,而不是一次全部启用。
当我尝试启用 cloudkms API 时,我得到
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://serviceusage.googleapis.com/v1/projects/x-y-z/services/cloudkms.googleapis.com?alt=json returned "The caller does not have permission"
我尝试使用我根据创建服务帐户的响应创建的服务帐户凭据 (google.auth.jwt.Credentials),并且我已经添加了所有必需的权限。我不想将角色所有者授予服务帐户,因为我希望该帐户具有尽可能少的权限。
当我尝试使用用户权限获取 cloudkms API 的状态时,它起作用了。
我看到一些解决方案解决了我需要在此处为服务帐户创建凭据的问题:https://console.developers.google.com/apis/credentials 但我确实也需要以编程方式执行此操作。
我的代码:
credentials = jwt.Credentials.from_service_account_file(service_account_info['email'] + '.json', audience="https://www.googleapis.com/auth/cloud-platform")
# credentials = GoogleCredentials.get_application_default() - it works with this
service_usage = googleapiclient.discovery.build('serviceusage', 'v1', credentials=credentials)
service_usage.services().get(name="projects/<project_id>/services/cloudkms.googleapis.com").execute()
上面提到的错误。
您需要 Cloud IAM 权限 serviceusage.services.enable
才能启用服务。根据您需要的功能,例如列表服务,您需要 serviceusage.services.list
.
通常您添加角色 roles/serviceusage.serviceUsageAdmin
,其中包括以下权限:
- serviceusage.services.get
- serviceusage.services.list
- serviceusage.services.enable
- serviceusage.services.disable
- 转到 IAM
- 编辑所选用户
- 添加新角色
- 类型服务使用管理员
- 保存
我想为客户端创建自动部署 GCP。
为此,我打开了一个页面供他们使用 google 登录,然后启用了 IAM API 和服务使用 API.
然后我创建了一个服务帐户,我想从现在开始使用它,以便按需启用其他所需的 API,而不是一次全部启用。
当我尝试启用 cloudkms API 时,我得到
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://serviceusage.googleapis.com/v1/projects/x-y-z/services/cloudkms.googleapis.com?alt=json returned "The caller does not have permission"
我尝试使用我根据创建服务帐户的响应创建的服务帐户凭据 (google.auth.jwt.Credentials),并且我已经添加了所有必需的权限。我不想将角色所有者授予服务帐户,因为我希望该帐户具有尽可能少的权限。
当我尝试使用用户权限获取 cloudkms API 的状态时,它起作用了。
我看到一些解决方案解决了我需要在此处为服务帐户创建凭据的问题:https://console.developers.google.com/apis/credentials 但我确实也需要以编程方式执行此操作。
我的代码:
credentials = jwt.Credentials.from_service_account_file(service_account_info['email'] + '.json', audience="https://www.googleapis.com/auth/cloud-platform")
# credentials = GoogleCredentials.get_application_default() - it works with this
service_usage = googleapiclient.discovery.build('serviceusage', 'v1', credentials=credentials)
service_usage.services().get(name="projects/<project_id>/services/cloudkms.googleapis.com").execute()
上面提到的错误。
您需要 Cloud IAM 权限 serviceusage.services.enable
才能启用服务。根据您需要的功能,例如列表服务,您需要 serviceusage.services.list
.
通常您添加角色 roles/serviceusage.serviceUsageAdmin
,其中包括以下权限:
- serviceusage.services.get
- serviceusage.services.list
- serviceusage.services.enable
- serviceusage.services.disable
- 转到 IAM
- 编辑所选用户
- 添加新角色
- 类型服务使用管理员
- 保存