如何在GCP中为特定GKE集群配置显式拒绝权限?
在GCP中为特定资源配置显式拒绝权限的方法
针对你提到的场景——允许团队成员正常操作dev-gke集群,但禁止更新/删除qa-gke集群,这里提供两种可行的实现方式:
方案一:组织级标签 + IAM拒绝策略
你之前尝试的resource.matchTag思路是可行的,只需先完成组织级标签的配置流程:
- 在组织层级创建标签键(比如
env)和对应的标签值(比如ts-qa) - 为
qa-gke集群打上这个组织级标签 - 创建IAM拒绝策略,通过标签匹配锁定目标资源,拒绝指定操作
以下是完整的拒绝策略配置示例:
{ "name": "organizations/[你的组织ID]/denypolicies/deny-qa-gke-modify", "displayName": "Deny modifications to QA GKE cluster", "rules": [ { "denialCondition": { "title": "QA Cluster Match", "expression": "resource.matchTag('[你的组织ID]/env', 'ts-qa')" }, "deniedPermissions": [ "container.clusters.update", "container.clusters.delete" ], "deniedPrincipals": [ "group:[你的团队成员邮箱组]" ] } ] }
方案二:直接匹配资源名称(无需组织级标签)
如果不想依赖组织级标签,可以直接通过资源名称编写条件,这是更直接的方式:
{ "name": "organizations/[你的组织ID]/denypolicies/deny-qa-gke-modify", "displayName": "Deny modifications to QA GKE cluster", "rules": [ { "denialCondition": { "title": "QA Cluster Name Match", "expression": "resource.name == 'projects/[你的项目ID]/locations/[集群所在区域]/clusters/qa-gke'" }, "deniedPermissions": [ "container.clusters.update", "container.clusters.delete" ], "deniedPrincipals": [ "group:[你的团队成员邮箱组]" ] } ] }
如果需要模糊匹配名称包含qa-gke的资源,也可以将表达式改为resource.name.contains('qa-gke')。
注意:IAM拒绝策略的优先级高于允许权限,只要策略匹配,就会强制执行拒绝操作。
内容的提问来源于stack exchange,提问作者Vishwas M.R
相关产品推荐
相关产品推荐

