我希望使用云功能创建、列出和删除服务帐户密钥。
我们确实有客户端库来执行python中的这些操作,但是如何使用关联的服务帐户对云函数进行身份验证以执行这些操作?
正式文件中的示例代码如下:
import os
from google.oauth2 import service_account
import googleapiclient.discovery
def list_keys(service_account_email):
"""Lists all keys for a service account."""
credentials = service_account.Credentials.from_service_account_file(
filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'],
scopes=['https://www.googleapis.com/auth/cloud-platform'])
service = googleapiclient.discovery.build(
'iam', 'v1', credentials=credentials)
keys = service.projects().serviceAccounts().keys().list(
name='projects/-/serviceAccounts/' + service_account_email).execute()
for key in keys['keys']:
print('Key: ' + key['name'])在这段代码中,我希望使用关联的服务帐户,而不是在代码段下面。
credentials = service_account.Credentials.from_service_account_file(
filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'],
scopes=['https://www.googleapis.com/auth/cloud-platform'])如有任何建议,将不胜感激。
发布于 2021-02-09 12:00:23
运行云函数时,默认情况下使用App默认服务帐户(PROJECT_ID@appspot.gserviceaccount.com),如GCP 文档中所示
在运行时,云函数默认使用App默认服务帐户(PROJECT_ID@appspot.gserviceaccount.com),该帐户在项目中具有编辑器角色。可以更改此服务帐户的角色,以限制或扩展运行函数的权限。还可以根据每个函数提供非默认服务帐户,从而更改所使用的服务帐户。
尽管,如果有必要,您可以使用按每个函数提供非默认服务帐户。 (由于所需权限的性质,遵循这种方法创建一个特定的服务帐户可能很方便,而不是使用默认的App )。
若要使用此服务帐户,请在构建服务时去掉credentials参数:
service = googleapiclient.discovery.build('iam', 'v1')要执行所需的服务帐户管理操作,必须授予为运行云函数而配置的服务帐户roles/iam.serviceAccountAdmin IAM角色。请参阅相关的文档。
https://stackoverflow.com/questions/66117626
复制相似问题