运维部署
加固 GKE 集群平台级安全(Secret Manager…
在需要为 Google Kubernetes Engine 集群做平台级安全加固与配置时使用,涵盖集群插件、RBAC、Binary Authorization、Shielded Nodes、GKE Sandbox 与 IAM 角色。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
加固 GKE 集群平台级安全(Secre特定
解决思路
- 按 Golden Path 安全默认值配置集群:workloadIdentityConfig.workloadPool 设为 <PROJECT>.svc.id.goog(Day-0);secretManagerConfig.enabled 设为 true(Day-1);secretManagerConfig.rotationConfig 设为 enabled: true、rotationInterval: 120s(Day-1);rbacBindingConfig.enableInsecureBindingSystemAuthenticated 设为 false(Day-0);rbacBindingConfig.enableInsecureBindingSystemUnauthenticated 设为 false(Day-0);nodeConfig.shieldedInstanceConfig.enableSecureBoot 设为 true(Day-0);nodeConfig.shieldedInstanceConfig.enableIntegrityMonitoring 设为 true(Day-0);nodeConfig.workloadMetadataConfig.mode 设为 GKE_METADATA(Day-0);私有集群与 Dataplane V2 设置参见 gke-networking 技能。
- 验证 Secret Manager 是否已在集群启用:gcloud container clusters describe <CLUSTER_NAME> --region <REGION> --format="value(secretManagerConfig.enabled)" --quiet。
- 若未启用则启用 Secret Manager 并设置自动轮换:gcloud container clusters update <CLUSTER_NAME> --region <REGION> --enable-secret-manager --secret-manager-rotation-interval=120s --quiet。
- 验证不安全 RBAC 绑定已禁用: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)。
- 启用 Binary Authorization(Golden Path 默认未启用,但推荐用于生产镜像来源强制):gcloud container clusters update <CLUSTER_NAME> --region <REGION> --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE --quiet。
- 在现有集群启用 Shielded Nodes:gcloud container clusters update <CLUSTER_NAME> --region <REGION> --enable-shielded-nodes --quiet。
- 在现有集群启用 GKE Sandbox(gVisor)运行时:gcloud container clusters update <CLUSTER_NAME> --region <REGION> --enable-gke-sandbox --quiet。
- 使用常见 GKE IAM 角色:roles/container.admin 用于平台团队管理员管理集群生命周期;roles/container.clusterAdmin 用于创建/删除集群但不管理项目级 IAM 的集群操作员;roles/container.developer 用于向现有集群部署工作负载的应用开发者;roles/container.viewer 用于监控、审计或只读仪表盘;roles/container.clusterViewer 用于仅需集群元数据的 CI/CD 流水线。
- 遵循最小权限原则:从 roles/container.viewer 或 roles/container.developer 开始,仅在需要时升级;避免在团队中广泛授予 roles/container.admin。
- 不要移除或修改 GKE Service Agent(service-<PROJECT_NUMBER>@container-engine-robot.iam.gserviceaccount.com)的权限,它自动创建并代表你管理节点、网络和集群操作。
- 为生产平台创建专用 Google Service Account 作为节点服务账号,仅授予最小权限(roles/monitoring.metricWriter、roles/logging.logWriter),并在创建节点池时分配,而非使用 Compute Engine 默认服务账号。
- 跨服务认证:为后端 GSA 授予 Cloud Storage 对象访问权限 gcloud projects add-iam-policy-binding <PROJECT_ID> --member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" --role "roles/storage.objectViewer" --quiet。
- 跨服务认证:为后端 GSA 授予 Cloud SQL 数据库访问权限 gcloud projects add-iam-policy-binding <PROJECT_ID> --member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" --role "roles/cloudsql.client" --quiet。
- 跨服务认证:为后端 GSA 授予 Pub/Sub 订阅访问权限 gcloud projects add-iam-policy-binding <PROJECT_ID> --member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" --role "roles/pubsub.subscriber" --quiet。
适用边界 · 注意事项
- 不要用于工作负载级安全(Workload Identity、SecretProviderClass、PSS、NetPol、gVisor pod runtimeClassName),这些应使用 gke-workload-security 技能。
- 私有集群与 Dataplane V2 的具体设置应参考 gke-networking 技能。
- 企业级 RBAC 规划应参考 gke-multitenancy 技能。