mcpField
G
gke-platform-security

gke-platform-security

github.com/google安全21.6k5.2k 次安装今天更新
代码仓库

关于 gke-platform-security

gke-platform-security 是面向 GKE 平台和集群运维人员的安全配置参考,汇总集群级安全默认值、加固方法与 IAM 角色建议。内容涵盖 Secret Manager、RBAC、Shielded Nodes 和 Binary Authorization 等配置。

主要功能

  1. 01列出集群安全基准配置
  2. 02说明 Secret Manager 集成与轮换
  3. 03检查并加固 RBAC 绑定
  4. 04介绍 Binary Authorization 与 Shielded Nodes
  5. 05提供常见 GKE IAM 角色建议

适用场景

  1. 01核查集群是否符合安全基准
  2. 02限制过宽的 RBAC 授权
  3. 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.googDay-0为集群 Pod 启用 Workload Identity 联合
secretManagerConfig.enabledtrueDay-1集成 Google Secret Manager 集群附加组件
secretManagerConfig.rotationConfigenabled: true, rotationInterval: 120sDay-1在集群级别自动轮换密钥
rbacBindingConfig.enableInsecureBindingSystemAuthenticatedfalseDay-0阻止旧版 system:authenticated 绑定
rbacBindingConfig.enableInsecureBindingSystemUnauthenticatedfalseDay-0阻止旧版 system:unauthenticated 绑定
nodeConfig.shieldedInstanceConfig.enableSecureBoottrueDay-0可验证的启动完整性
nodeConfig.shieldedInstanceConfig.enableIntegrityMonitoringtrueDay-0运行时完整性检查
nodeConfig.workloadMetadataConfig.modeGKE_METADATADay-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)

评论

支持 Markdown