如何在服务账户上启用"iam.serviceAccounts.actAs"权限?

34

我尝试按照这个指南使用一个非默认的服务账号部署一个服务,但是它说我需要在正在部署的服务账号上拥有“iam.serviceAccounts.actAs”权限。我正在使用的服务账号是@cloudbuild.gserviceaccount.com,但是我在项目的“权限”页面上没有看到添加它的选项。

3个回答

42
服务账号是一种资源,你需要为你的身份添加IAM角色到服务账号(这个资源)中。这将在资源(服务账号)上授予你权限。
  • 打开Google Cloud Console。前往IAM & Admin -> 服务账号。

  • 找到服务账号。勾选左侧的服务账号框。

  • 在右侧的"Permissions"面板中,点击 ADD MEMBER

  • 添加你的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


2
针对Cloud Run,我需要为[PROJECT_NUMBER]-compute@developer.gserviceaccount.com添加权限(参考此指南),但我在服务账号页面上找不到这个选项,但我在IAM页面上找到了。我已经为我的Cloud Build服务账号添加了Secret Manager Admin角色,但我的部署容器无法访问Secret Manager。 - sdfsdf
2
那个服务账户是“计算引擎默认服务账户”。它必须在“服务账户”下面。这是由Google为您创建的。返回并再次查看。如果您已删除它,请联系Google支持。在“IAM”下的条目是针对项目的(授予服务账户对项目中资源的权限),而不是服务账户资源。https://cloud.google.com/compute/docs/access/service-accounts#default_service_account - John Hanley
2
由于某种原因,答案中的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
3
@kmonsoor - 你的评论是正确的。对于用户,请在电子邮件地址前加上“user:”,对于服务帐户,请在前面加上“serviceAccount:”等。还有其他类型,例如组,域等。这在我的答案链接中有记录。 - John Hanley
显然界面已经改变,因为即使作为组织管理员,我也找不到“权限”面板和“添加成员”。我可以看到“管理权限”,但它几乎将我重定向到具有“权限”的主页面。 - Greg Wozniak
1
@GregWozniak - 在"权限"选项卡中,寻找GRANT ACCESS(位于主体列表上方、视图按主体下方的左侧)。请记住,此屏幕修改的是服务账号的IAM策略,而不是项目的IAM策略。 - John Hanley

3

0
TL;DR:将“Service Account User”角色添加到您正在进行部署的服务帐号中。至少在我的用例中是有效的:gcloud run deploy <SERVICE> 长答案: 撇开我完全不同意当前答案的开头部分,
关键点在于服务帐号是一个资源,就像在我的情况下,资源是一个Cloud Run服务,而不是一个SA,并且除了GCP的IAM控制台搜索引擎无法搜索技术名称(如iam.serviceAccounts.actAs)之外,而是搜索英文名称(如“Service Account User”)之外,这个想法是您已经验证身份以进行部署的SA可能需要扮演计算引擎的用户或任何其他服务的用户来执行某些任务,因此需要模拟该帐号。
我们需要注意的是,如果您在IAM角色的自由搜索文本中快速输入“服务帐号”,则不会出现相关目标,因为是复数形式...这是一种遗憾,因为很少有线索可以找到“Service Account User”是解决iam.serviceAccounts.actAs的英文名称。
我们还要注意,输入“扮演”或“冒充”并没有任何结果,因为特权描述并没有被搜索引擎索引...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接