SuperAPI AI 工具集

k8s-security-policies

安全与审计

查看项目

更新于 10-15 14:56

技能介绍

用途

该技能用于在 Kubernetes 集群中实现纵深防御安全,通过网络策略、Pod 安全标准和 RBAC 等手段加固集群。适用场景包括:实现网络分段、配置 Pod 安全标准、为最小权限访问设置 RBAC、创建合规安全策略、实现准入控制、保护多租户集群。

当任务与 Kubernetes 安全策略无关,或需要本范围之外的其它领域或工具时,不应使用该技能。

主要能力

Pod Security Standards

提供三种命名空间级安全标准的标签配置示例:

  • Privileged(不受限):pod-security.kubernetes.io/enforce: privileged
  • Baseline(最小限制):pod-security.kubernetes.io/enforce: baseline
  • Restricted(最严格):pod-security.kubernetes.io/enforce: restricted

每种标准同时配置 audit 与 warn 标签。

Network Policies

提供网络策略示例,包括:

  • 默认拒绝全部(default-deny-all):对 Ingress 与 Egress 均拒绝
  • 允许前端访问后端(allow-frontend-to-backend):基于 podSelector 与端口 8080
  • 允许 DNS(allow-dns):放行到 kube-system 命名空间的 UDP 53 端口

RBAC 配置

提供 Role(命名空间级)、ClusterRole(集群级)与 RoleBinding 示例,涵盖对 pods 的 get/watch/list 权限、对 secrets 的读取权限,以及将用户或 ServiceAccount 绑定到角色的方式。

Pod Security Context

提供受限 Pod 示例,包含 runAsNonRoot: true、runAsUser: 1000、fsGroup: 1000、seccompProfile: RuntimeDefault,以及容器级 allowPrivilegeEscalation: false、readOnlyRootFilesystem: true、capabilities.drop: [ALL]。

准入控制(OPA Gatekeeper)

提供 ConstraintTemplate 与 Constraint 示例,用于强制要求 Deployment 带有指定标签(如 app、environment)。

服务网格安全(Istio)

提供 PeerAuthentication(mTLS 模式 STRICT)与 AuthorizationPolicy(基于 principals 的 ALLOW 规则)示例。

使用方式

该技能以指导性说明与 YAML 示例的形式提供,用户需根据自身集群环境调整命名空间、标签、端口、镜像等参数后应用。技能本身不包含自动化执行脚本。

最佳实践

  • 在命名空间级别实施 Pod Security Standards
  • 使用 Network Policies 进行网络分段
  • 为所有 ServiceAccount 应用最小权限 RBAC
  • 启用准入控制(OPA Gatekeeper/Kyverno)
  • 以非 root 用户运行容器
  • 使用只读根文件系统
  • 除非必要,丢弃所有 capabilities
  • 实施资源配额与 LimitRange
  • 为安全事件启用审计日志
  • 定期对镜像进行安全扫描

合规框架

  • CIS Kubernetes Benchmark:使用 RBAC 授权、启用审计日志、使用 Pod Security Standards、配置网络策略、实施静态加密、启用节点认证
  • NIST Cybersecurity Framework:实施纵深防御、使用网络分段、配置安全监控、实施访问控制、启用日志与监控

故障排查

  • NetworkPolicy 不生效:检查 CNI 是否支持 NetworkPolicy(kubectl get nodes -o wide、kubectl describe networkpolicy <name>)
  • RBAC 权限被拒:检查有效权限(kubectl auth can-i list pods --as system:serviceaccount:default:my-sa、kubectl auth can-i '*' '*' --as system:serviceaccount:default:my-sa)

限制

  • 仅在任务明确匹配上述范围时使用该技能。
  • 输出不能替代针对具体环境的验证、测试或专家评审。
  • 若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。
  • 本目录副本包含内联指导,但不包含以下外部支撑路径:<support-root>/assets/pod-security-template.yaml。这些是外部前置条件,并非捆绑文件。在依赖这些路径的步骤之前,需获取原始支撑材料或已有安装;本目录未标识经过验证的下载来源。应相对于该安装解析每个路径、检查其内容,并核实适用的许可证与执行前置条件。在所需文件存在之前,不要运行命令或声称已遵循所引用的流程。不要伪造缺失的脚本,也不要把同名的无关文件视为等价。此处完整记录的独立步骤可在用户授权范围内进行;任何依赖步骤应报告为不可用。
  • 参考文件包括:assets/network-policy-template.yaml(网络策略示例)、assets/pod-security-template.yaml(Pod 安全策略)、references/rbac-patterns.md(RBAC 配置模式)。
  • 相关技能:k8s-manifest-generator(用于创建安全清单)、gitops-workflow(用于自动化策略部署)。