如何在服务帐户上启用“iam.serviceAccounts.actAs”权限?
Posted
技术标签:
【中文标题】如何在服务帐户上启用“iam.serviceAccounts.actAs”权限?【英文标题】:How do you enable "iam.serviceAccounts.actAs" permissions on a sevice account? 【发布时间】:2020-08-03 16:01:20 【问题描述】:我正在尝试按照this guide 使用非默认服务帐户部署服务,它说我需要“正在部署的服务帐户的iam.serviceAccounts.actAs
权限”。我使用的服务帐户是 @cloudbuild.gserviceaccount.com
,但我在项目的权限页面上没有看到添加它的选项。
【问题讨论】:
【参考方案1】:关键是服务帐户是一种资源。您需要将您的身份的 IAM 角色添加到服务账户(资源)。这会授予您对资源(服务帐户)的权限。
打开Google Cloud Console。转到 IAM 和管理员 -> 服务帐户。
找到服务帐户。勾选服务帐户左侧的框。
在右侧的“权限”面板中,点击添加成员
添加您的 IAM 成员电子邮件地址。对于角色,选择服务帐户 -> 服务帐户用户。
点击保存
您也可以使用 CLI:
gcloud iam service-accounts add-iam-policy-binding [SERVICE_ACCOUNT] --member [MEMBER_EMAIL] --role roles/iam.serviceAccountUser
gcloud iam service-accounts add-iam-policy-binding
【讨论】:
对于 Cloud Run,我需要将权限添加到[PROJECT_NUMBER]-compute@developer.gserviceaccount.com
(根据 this guide),我在服务帐户页面上看不到,但我在 IAM 上看到了页。我已经向我的云构建服务帐户添加了Secret Manager Admin
角色,但是我部署的容器无法访问 Secret Manager
该服务帐号是“Compute Engine 默认服务帐号”。它必须在“服务帐户”下。这是由 Google 为您创建的。回去再看一遍。如果您删除了它,请联系 Google 支持。 “IAM”下的条目用于项目(授予服务帐户对项目中资源的权限)而不是服务帐户资源。 cloud.google.com/compute/docs/access/…
由于某种原因,答案中的 CLI 命令在我的 Ubuntu 中失败。这有效:gcloud iam service-accounts add-iam-policy-binding 89random-compute@developer.gserviceaccount.com --member='user:kmonsoor@example.com' --role='roles/iam.serviceAccountUser'
注意额外的“=user:”。
@kmonsoor - 您的评论是正确的。对于用户,请在电子邮件地址前面加上user:
,对于服务帐户,在前面加上serviceAccount:
等。还有其他类型,例如组、域等。这在我的答案中的链接中有记录。以上是关于如何在服务帐户上启用“iam.serviceAccounts.actAs”权限?的主要内容,如果未能解决你的问题,请参考以下文章