如何配置Google Secrets角色使用户仅可管理自身创建的密钥?
Google Secret Manager 权限配置方案:仅允许用户管理自身创建的密钥
可以实现该需求,无需授予全局Secret Admin权限,核心通过条件化IAM绑定配合资源标签规则实现,具体配置步骤如下:
1. 授予基础创建权限
在项目层级为目标用户/用户组授予roles/secretmanager.secretCreator角色,该角色仅包含密钥创建权限,默认不提供任何已有密钥的访问、编辑权限。
2. 配置条件化管理权限
在项目层级为同一用户/用户组授予你需要的密钥操作权限(如查看、编辑、共享等),添加IAM条件限制权限仅对用户自己创建的密钥生效:
- 可选绑定的角色:
- 仅需查看、读取密钥值:绑定
roles/secretmanager.secretAccessor - 需要编辑密钥版本、修改密钥配置:绑定
roles/secretmanager.secretEditor - 需要共享密钥、管理密钥的IAM权限:绑定
roles/secretmanager.secretAdmin
- 仅需查看、读取密钥值:绑定
- IAM条件表达式(需提前配置密钥创建时自动打标规则):
resource.type == "secretmanager.googleapis.com/Secret" && request.auth.token.email == resource.labels["creator_email"]
3. 配置自动打标规则
提前配置Cloud Function或者组织级别的资源创建触发规则,用户创建Secret时系统自动为其添加creator_email标签,值为创建者的登录邮箱,确保条件匹配生效。如果不想配置自动规则,也可以在创建密钥的规范中要求用户手动填写该标签,表达式无需调整。
最终权限效果
- 用户可正常创建属于自己的密钥
- 用户仅能对自己创建的密钥执行对应绑定角色的操作,包括查看、编辑、共享
- 用户无法访问、修改其他用户创建的所有密钥,不会出现越权访问项目全量密钥的问题
内容的提问来源于stack exchange,提问作者Tomas Romero
相关产品推荐
相关产品推荐

