如何通过IAM Conditions按前缀限制ServiceAccount User角色授权范围
解决方案
根因说明
你之前配置的条件不生效的核心原因是:iam.serviceAccounts.actAs权限校验时,resource.name字段返回的是服务账号的数字唯一ID格式资源路径,格式为projects/{PROJECT_ID}/serviceAccounts/{UNIQUE_ID},不包含服务账号的邮箱前缀,因此无法通过匹配resource.name实现前缀筛选。
可行的条件配置
直接匹配服务账号的邮箱前缀即可实现需求,对应的条件规则如下:
{ "expression": "resource.email.startsWith('prefix-@')", "title": "match-sa-prefix" }
可选优化项
- 如果需要限制仅匹配当前项目的服务账号,可以补充后缀校验,避免其他项目同名前缀的SA被意外命中:
{ "expression": "resource.email.startsWith('prefix-@') && resource.email.endsWith('@你的项目ID.iam.gserviceaccount.com')", "title": "match-project-sa-prefix" } - 如果你有更复杂的筛选需求,可以给服务账号添加自定义标签,通过
resource.labels.自定义标签键 == '自定义标签值'的规则和前缀规则组合使用,灵活度更高。
内容的提问来源于stack exchange,提问作者dinvlad
相关产品推荐
相关产品推荐

