温馨提示×

Linux环境下Kubernetes的安全策略是什么

小樊
37
2025-12-20 09:10:18
栏目: 智能运维

Linux 环境下 Kubernetes 的安全策略框架

在 Linux 节点上,Kubernetes 的安全策略应覆盖运行时权限网络分段身份与授权准入控制主机加固五个层面,目标是实现最小权限最小暴露面,并在出现问题时具备可观测与审计能力。

一 运行时与内核安全

  • 以非 root 运行并收紧能力集:设置 runAsNonRoot: true、指定非 root runAsUser/runAsGroup,按需仅添加必要能力,推荐默认 drop: [“ALL”] 后再按需 add;同时关闭特权提升与特权容器。示例要点:

    • securityContext.runAsNonRoot / runAsUser / runAsGroup
    • securityContext.capabilities.drop: [“ALL”];必要时仅 add 如 NET_BIND_SERVICE
    • securityContext.allowPrivilegeEscalation: false
    • 避免使用 privileged: true 与共享主机命名空间(hostPID/hostIPC/hostNetwork)。
  • 启用 Linux 内核安全模块:

    • Seccomp:通过 securityContext.seccompProfile.type 设为 RuntimeDefault/Localhost/Unconfined,以白名单方式限制系统调用面。
    • AppArmor:通过 securityContext.appArmorProfile.type 设为 RuntimeDefault/Localhost/Unconfined,加载节点本地策略文件约束程序行为。
    • SELinux:通过 securityContext.seLinuxOptions 设置用户/角色/类型/级别,实现强制访问控制(如 level: “s0:c123,c456”)。
  • 落实 Pod 安全性标准(PSS) 与准入控制:在命名空间上以标签配置 enforce/audit/warn 与版本,例如:

    • pod-security.kubernetes.io/enforce: restricted
    • pod-security.kubernetes.io/warn: restricted
    • pod-security.kubernetes.io/audit-version: v1.31 并在 AdmissionConfiguration 中可设置全局默认与豁免(usernames/runtimeClasses/namespaces)。

二 网络策略与微分段

  • 默认拒绝与白名单放行:同一命名空间内未配置策略时 Pod 默认互通,应优先建立“默认拒绝”基线,再按依赖关系逐条放行,降低横向移动风险。

  • 策略要素与标签驱动:基于 podSelector / namespaceSelector / ipBlock 定义源/目的,使用 ingress/egresspolicyTypes 控制入/出站;以稳定 标签 而非易变的 Pod IP 作为选择依据,便于演进与回滚。

  • 分层策略与可见性:

    • L3/L4 基础微分段:按服务角色(如 frontend/backend/database)划分访问域,仅开放必要端口与协议。
    • 出口到外部服务:在需要时启用 FQDN 过滤(如仅允许访问特定域名的 443 端口),避免 IP 变更导致策略失效。
    • L7 策略:对 HTTP/gRPC/Kafka 等应用层协议按方法、路径、头部做细粒度控制(需支持 L7 的网络插件/数据面)。
    • 可观测:结合 Cilium Hubble / Retina 等工具绘制 Pod 间依赖关系,验证策略正确性并减少误伤。

三 身份与访问控制 RBAC

  • 最小权限与职责分离:以 Role/ClusterRole 定义细粒度权限(apiGroups/resources/verbs 及子资源如 pods/log),通过 RoleBinding/ClusterRoleBinding 将权限授予 User/Group/ServiceAccount;跨命名空间授权优先使用 ClusterRole + RoleBinding,谨慎授予 ClusterRoleBinding

  • 验证与运维:使用 kubectl auth can-i 校验主体权限,定期审计绑定关系与权限范围,避免权限蔓延与越权访问。

四 加密、审计与集群配置

  • 传输与静态加密:启用 TLS 保护 API Server、kubelet、etcd 等组件与控制面通信;对 Secrets 等敏感数据启用 加密静态(EncryptionConfiguration),并妥善管理密钥轮转。

  • 审计与监控:开启 审计日志 与指标/事件观测,结合告警规则识别异常 API 调用与权限提升;对关键命名空间与系统组件设置更严格的审计级别。

  • 漏洞与版本管理:保持 Kubernetes 与节点 Linux 处于受支持版本,及时修补 CVE;建立 镜像扫描运行时监控 流程,降低供应链与运行时风险。

五 主机与平台加固要点

  • 节点最小化:关闭不必要的内核模块、服务与端口,限制 特权用户 与直接主机访问;为容器运行时与 kubelet 配置 最小权限系统调用白名单(配合 seccomp/AppArmor/SELinux)。

  • 网络与平台策略:选择支持 NetworkPolicyCNI(如 Calico、Cilium);在云平台上可启用 eBPF 数据面L7/FQDN 策略能力,统一实施微分段与出口治理。

0