You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GCP中为特定GKE集群配置显式拒绝权限?

在GCP中为特定资源配置显式拒绝权限的方法

针对你提到的场景——允许团队成员正常操作dev-gke集群,但禁止更新/删除qa-gke集群,这里提供两种可行的实现方式:

方案一:组织级标签 + IAM拒绝策略

你之前尝试的resource.matchTag思路是可行的,只需先完成组织级标签的配置流程:

  1. 在组织层级创建标签键(比如env)和对应的标签值(比如ts-qa)
  2. 为qa-gke集群打上这个组织级标签
  3. 创建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:30:51