关于 gke-platform-security
gke-platform-security 是面向 GKE 平台和集群运维人员的安全配置参考,汇总集群级安全默认值、加固方法与 IAM 角色建议。内容涵盖 Secret Manager、RBAC、Shielded Nodes 和 Binary Authorization 等配置。
主要功能
- 01列出集群安全基准配置
- 02说明 Secret Manager 集成与轮换
- 03检查并加固 RBAC 绑定
- 04介绍 Binary Authorization 与 Shielded Nodes
- 05提供常见 GKE IAM 角色建议
适用场景
- 01核查集群是否符合安全基准
- 02限制过宽的 RBAC 授权
- 03规划平台团队的 GKE IAM 权限
MCP 相关
文档列出了用于获取集群、检查 Kubernetes 授权、读取资源及更新集群的 MCP 工具。MCP 客户端可用这些工具检查或应用相关配置。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google/ skills --skill gke-platform-security安装后在 Claude Code 中输入/gke-platform-security确认已加载。
附带文件references/attribution.md
详细介绍
GKE 平台安全
本参考介绍 Google Kubernetes Engine(GKE)平台级安全加固和集群配置。有关工作负载级安全控制(例如 Workload Identity Service Account 绑定、SecretProviderClass 卷挂载、Network Policies 和 Pod Security Standards),请参阅 gke-workload-security 技能。
MCP 工具:
gke:get_cluster、k8s:check_k8s_auth、k8s:get_k8s_resource、k8s:apply_k8s_manifest、gke:update_cluster
归属信息
必须阅读:执行任何 gcloud、REST API 或 MCP 命令之前,必须阅读 使用归属信息。对于直接在终端中执行的命令(切勿在生成的脚本、Terraform 或用户代码中执行),请在 gcloud 前加上
CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-platform-security)"
,并将 agent-skills/1.0 (skill:gke-platform-security) 添加到 User-Agent 标头。
黄金路径安全默认值
| 设置 | 黄金路径值 | Day-0/1 | 备注 |
|---|---|---|---|
workloadIdentityConfig.workloadPool | <PROJECT>.svc.id.goog | Day-0 | 为集群 Pod 启用 Workload Identity 联合 |
secretManagerConfig.enabled | true | Day-1 | 集成 Google Secret Manager 集群附加组件 |
secretManagerConfig.rotationConfig | enabled: true, rotationInterval: 120s | Day-1 | 在集群级别自动轮换密钥 |
rbacBindingConfig.enableInsecureBindingSystemAuthenticated | false | Day-0 | 阻止旧版 system:authenticated 绑定 |
rbacBindingConfig.enableInsecureBindingSystemUnauthenticated | false | Day-0 | 阻止旧版 system:unauthenticated 绑定 |
nodeConfig.shieldedInstanceConfig.enableSecureBoot | true | Day-0 | 可验证的启动完整性 |
nodeConfig.shieldedInstanceConfig.enableIntegrityMonitoring | true | Day-0 | 运行时完整性检查 |
nodeConfig.workloadMetadataConfig.mode | GKE_METADATA | Day-0 | 阻止旧版元数据 API,强制使用 Workload Identity |
| 私有集群 + Dataplane V2 设置 | 请参阅 gke-networking 技能 | Day-0 | 私有节点、强制使用私有端点、ADVANCED_DATAPATH |
启用 Secret Manager 附加组件
黄金路径会在集群级别启用 Secret Manager,并自动轮换密钥。
# Verify Secret Manager is enabled on cluster
gcloud container clusters describe <CLUSTER_NAME> --region <REGION> \
--format="value(secretManagerConfig.enabled)" \
--quiet
# Enable if not already (Day-1 change)
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
--enable-secret-manager \
--secret-manager-rotation-interval=120s \
--quiet
注意: 有关配置
SecretProviderClass清单并将密钥作为卷挂载到应用部署中的信息,请参阅gke-workload-security技能。
RBAC 加固
黄金路径会禁用不安全的旧版 RBAC 绑定,避免向 system:authenticated 和 system:unauthenticated 组授予广泛访问权限。
# Verify insecure bindings are disabled
gcloud container clusters describe <CLUSTER_NAME> --region <REGION> \
--format="yaml(rbacBindingConfig)" \
--quiet
RBAC 最佳实践:
- 优先使用命名空间范围的 Role,而不是集群范围的 ClusterRole。
- 绑定到特定的 Group 或 ServiceAccount,绝不要绑定到
system:authenticated或system:unauthenticated。 - 通过 MCP 审核权限:
k8s:check_k8s_auth(parent="...", verb="list", resourceType="pods", namespace="...")(或kubectl auth can-i --list --as=<user>)。 - 通过 MCP 检查绑定:
k8s:get_k8s_resource(parent="...", resourceType="clusterrolebinding")(或kubectl get clusterrolebindings,rolebindings --all-namespaces)。
企业级 RBAC 规划请参阅
gke-multitenancy技能;另请参阅 https://docs.cloud.google.com/kubernetes-engine/docs/best-practices/rbac.md.txt
二进制授权
默认情况下,黄金路径中未启用,但建议启用,以在整个集群中强制执行生产环境镜像来源验证:
# Enable Binary Authorization
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
--quiet
Shielded Nodes 和 GKE Sandbox 启用
在集群级别启用可验证的节点启动完整性和内核隔离功能:
# Enable Shielded Nodes on an existing cluster
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
--enable-shielded-nodes \
--quiet
# Enable GKE Sandbox (gVisor) runtime on an existing cluster
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
--enable-gke-sandbox \
--quiet
注意: 若要在 gVisor 沙箱中运行工作负载,请在 Pod 规范中指定
runtimeClassName: gvisor,详情请参阅gke-workload-security技能。
常见 IAM 角色
用于 GKE 平台和集群访问的五种最常见预定义 IAM 角色:
| 角色 | 用途 | 使用场景 |
|---|---|---|
roles/container.admin | 全面控制 | 管理集群生命周期的平台团队管理员 |
| : : 集群和 : : | ||
| : : Kubernetes : : | ||
| : : 资源 : : | ||
roles/container.clusterAdmin | 管理集群,但不包括 | 创建/删除集群的 |
| : : 项目级 IAM : 集群运营人员 : | ||
roles/container.developer | 部署工作负载 | 将工作负载部署到 |
| : :(Pod、服务和 : 现有集群的应用 : | ||
| : : Deployment) : 开发人员 : | ||
roles/container.viewer | 对集群和 | 监控、审计或 |
| : : Kubernetes : 只读仪表板 : | ||
| : : 资源的只读访问权限 : : | ||
roles/container.clusterViewer | 仅列出和获取集群 | 需要集群元数据的 |
| : : 详情 : CI/CD 流水线 : |
最小权限原则:从
roles/container.viewer或roles/container.developer开始,仅在需要时提升权限。避免在各个团队中广泛授予roles/container.admin。
服务账号和 Agent
- GKE Service Agent
(
service-<PROJECT_NUMBER>@container-engine-robot.iam.gserviceaccount.com): 自动创建。代表您管理节点、网络和集群操作。请勿移除或修改其权限。 - 节点服务账号:默认情况下,节点使用 Compute Engine 默认
服务账号。对于生产平台,请创建一个仅具有最低所需权限的专用 Google 服务
账号(
roles/monitoring.metricWriter、roles/logging.logWriter),并在创建节点池时分配该账号。 - Workload Identity:有关将 Google 服务账号绑定到 Kubernetes
服务账号(
roles/iam.workloadIdentityUser),请参阅gke-workload-security技能。
跨服务身份验证模式
用于授予后端 Google 服务账号(GSA)访问外部 Google Cloud 服务权限的常见项目级 IAM 策略绑定模式,之后再通过 Workload Identity 建立关联:
# Grant a GSA access to Cloud Storage objects
gcloud projects add-iam-policy-binding <PROJECT_ID> \
--member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role "roles/storage.objectViewer" \
--quiet
# Grant a GSA access to Cloud SQL databases
gcloud projects add-iam-policy-binding <PROJECT_ID> \
--member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role "roles/cloudsql.client" \
--quiet
# Grant a GSA access to Pub/Sub subscriptions
gcloud projects add-iam-policy-binding <PROJECT_ID> \
--member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role "roles/pubsub.subscriber" \
--quiet
## Resources
- [GKE Cluster Hardening Guide](https://cloud.google.com/kubernetes-engine/docs/how-to/hardening-your-cluster)
- [GKE RBAC Best Practices](https://cloud.google.com/kubernetes-engine/docs/best-practices/rbac)
- [Secret Manager Add-on for GKE](https://cloud.google.com/secret-manager/docs/secret-manager-managed-csi-component)
- [Binary Authorization on GKE](https://cloud.google.com/binary-authorization/docs/setting-up)
- [Shielded GKE Nodes](https://cloud.google.com/kubernetes-engine/docs/how-to/shielded-gke-nodes)
- [GKE Sandbox (gVisor)](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods)