首页 > 解决方案 > 如何从应用程序默认凭据生成的凭据中模拟 GCP 服务帐户

问题描述

我有一个服务帐户,并且我正在将此服务帐户上的“ServiceAccountUser”角色授予真实用户之一。用户将应用程序默认凭据设置为他的配置的一部分,以避免每次运行时出现登录屏幕。我不确定该用户运行代码以操作仅对服务帐户可访问的某些资源的最佳方式是什么。出于安全原因,我不想使用服务帐户密钥 JSON 文件。我正在尝试以下代码

import google.auth
service_account_email='my-service-account@my-project.iam.gserviceaccount.com'
adc_credentials,adc_project=google.auth.default()

delegated_credentials=adc_credentials.with_subject(service_account_email)

我收到错误:AttributeError:'Credentials' 对象没有属性'with_subject'

标签: google-cloud-platformservice-accounts

解决方案


正如此处指定的,服务帐户用户角色授予您使用服务帐户部署资源的权限,而不是授予该帐户的权限。

如果担心长期的凭证很容易被泄露,那么您可以使用短期凭证

要模拟服务帐户,您需要服务帐户令牌创建者的角色。是一篇解释此模拟过程的文章。


推荐阅读