如何让Google Cloud服务账号继承另一账号权限并额外添加指定权限
如何让Google Cloud服务账号继承另一账号权限并额外添加指定权限
你之前的操作其实走错方向啦——给sa-2授予Service Account Admin角色到sa-1,这个权限是允许sa-2管理sa-1本身(比如修改sa-1的权限、删除sa-1),但不会让sa-2继承sa-1的现有权限,这就是为什么你还是遇到权限拒绝的原因。
在GCP里,服务账号之间没法直接设置"权限继承"关系,但有两种常用方案可以实现你的需求:
方案一:直接分配所有所需角色(最简单直接)
既然你明确知道sa-2需要A、B、C三个角色,直接给sa-2逐一添加就行:
- 打开GCP控制台的「IAM & Admin」->「IAM」页面
- 点击顶部的「+ Grant Access」按钮
- 在「New principals」输入框中填入
sa-2@myproject.iam.gserviceaccount.com - 在「Role」下拉菜单中,依次选择角色A、B、C(可以按住Ctrl/Command键多选,或者分多次添加)
- 确认信息无误后点击「Save」
这样sa-2就直接拥有了A、B、C三个角色的所有权限,和sa-1的A、B权限保持一致,同时额外获得C权限。
方案二:通过IAM组实现"动态继承"(适合sa-1权限可能变化的场景)
如果未来sa-1的权限可能新增或调整,你想让sa-2自动同步这些变化,可以用IAM组来管理:
- 创建一个新的IAM组(比如命名为
sa-shared-permissions-group) - 把sa-1和sa-2都添加到这个组中
- 给这个组分配角色A和B
- 单独给sa-2分配角色C
这样以后只要给这个组新增权限,sa-1和sa-2都会自动获得;而sa-2还额外拥有独有的角色C权限。
备选方案:服务账号模拟(Impersonation)
如果你不需要sa-2自己拥有权限,只是需要sa-2能以sa-1的身份执行操作,可以给sa-2授予「Service Account Token Creator」角色到sa-1。这样sa-2就能生成sa-1的身份令牌,模拟sa-1进行操作,同时自己再单独拥有角色C的权限。不过这个方案更适合临时操作,不是长期的权限分配。
备注:内容来源于stack exchange,提问作者engineer-x
相关产品推荐
相关产品推荐

