首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用云功能执行服务帐户管理操作(创建、列表、删除)?

如何使用云功能执行服务帐户管理操作(创建、列表、删除)?
EN

Stack Overflow用户
提问于 2021-02-09 10:59:32
回答 1查看 134关注 0票数 0

我希望使用云功能创建、列出和删除服务帐户密钥。

我们确实有客户端库来执行python中的这些操作,但是如何使用关联的服务帐户对云函数进行身份验证以执行这些操作?

正式文件中的示例代码如下:

代码语言:javascript
复制
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'])

在这段代码中,我希望使用关联的服务帐户,而不是在代码段下面。

代码语言:javascript
复制
credentials = service_account.Credentials.from_service_account_file(
    filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'],
    scopes=['https://www.googleapis.com/auth/cloud-platform'])

如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 12:00:23

运行云函数时,默认情况下使用App默认服务帐户(PROJECT_ID@appspot.gserviceaccount.com),如GCP 文档中所示

在运行时,云函数默认使用App默认服务帐户(PROJECT_ID@appspot.gserviceaccount.com),该帐户在项目中具有编辑器角色。可以更改此服务帐户的角色,以限制或扩展运行函数的权限。还可以根据每个函数提供非默认服务帐户,从而更改所使用的服务帐户。

尽管,如果有必要,您可以使用按每个函数提供非默认服务帐户。 (由于所需权限的性质,遵循这种方法创建一个特定的服务帐户可能很方便,而不是使用默认的App )。

若要使用此服务帐户,请在构建服务时去掉credentials参数:

代码语言:javascript
复制
service = googleapiclient.discovery.build('iam', 'v1')

要执行所需的服务帐户管理操作,必须授予为运行云函数而配置的服务帐户roles/iam.serviceAccountAdmin IAM角色。请参阅相关的文档

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66117626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档