温馨提示×

Kubernetes在CentOS上的安全策略探讨

小樊
40
2026-01-08 06:03:57
栏目: 智能运维

Kubernetes 在 CentOS 上的安全策略

一 基础系统与内核加固

  • 身份与口令:禁用不必要的root 远程登录,仅保留sudo;为特权账户设置复杂口令并定期轮换;限制su使用范围;对关键文件如**/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow**设置不可更改属性(如 chattr +i),降低被篡改风险。
  • 服务最小化:清理并禁用不必要的系统服务与自启项,减少攻击面。
  • 日志与审计:启用并集中rsyslog,使用auditd对关键文件与系统调用进行审计追踪。
  • 防火墙:启用firewalld/iptables,仅放行控制面与节点间必需端口(如 6443、10250、2379/2380、10251/10252、30000–32767 等视组件而定),避免“全开”。
  • 时间同步:部署NTP/chrony,保证节点间与组件间时间一致性,避免证书校验与审计时序异常。
  • Swap:生产环境关闭 Swap(kubelet 默认拒绝在启用 Swap 时调度),避免影响 QoS 与稳定性。
  • SELinux:优先启用并配置 SELinux 为 enforcing,通过策略约束容器与系统调用;仅在兼容性确有问题时才考虑 permissive 或针对性例外,不建议直接 disabled。
  • 内核与网络:按需加载br_netfilter并设置bridge-nf-call-iptables/ ip6tables=1,确保容器网络流量可被 iptables 正确过滤;保持内核与系统补丁为最新稳定版本。

二 集群组件与访问控制

  • 传输加密:为API Server、kubelet、etcd、Scheduler、Controller-Manager等组件启用TLS/mTLS,确保组件间与客户端通信机密性与完整性。
  • 认证与授权:启用双向 TLS 认证;结合客户端证书、bootstrap token、OIDC、Webhook等完成身份鉴别;通过RBAC按“最小权限原则”授予Role/ClusterRoleRoleBinding/ClusterRoleBinding
  • 准入控制:启用准入控制插件(如 PodSecurity、ImagePolicyWebhook 等),在创建/更新阶段拦截不合规请求。
  • Secrets 管理:使用Kubernetes Secrets集中管理凭据,避免硬编码;结合RBAC最小化访问;生产建议对接外部密钥管理(如 KMS/Secrets Store CSI)。
  • 服务账户:为Pod绑定ServiceAccount,按需授予最小权限,避免滥用 default。
  • 节点隔离:通过Taints/Tolerations将敏感工作负载调度到受控节点,结合污点驱逐策略提升安全与稳定性。

三 容器与运行时安全

  • 镜像治理:优先使用私有镜像仓库,启用镜像扫描(如 Trivy、Clair 等),定期清理悬空/无用镜像,降低供应链风险。
  • 运行身份:在 Pod/Container SecurityContext 中设置runAsNonRoot、runAsUser/runAsGroup、fsGroup,禁止特权容器与不必要的Linux 能力(Capabilities),减少提权面。
  • 资源与 QoS:为容器设置requests/limits(CPU/内存),必要时启用PDB拓扑分散约束,避免资源耗尽与单点拥塞。
  • 运行时防护:结合容器运行时安全工具(如 Falco、Sysdig、Tetragon)进行系统调用与行为监控;在支持的集群中启用**Pod Security Admission(PSA)**或替代方案(如 Kyverno、OPA Gatekeeper)统一治理安全基线。
  • 数据面加密:对Pod 间/服务间通信启用mTLS(如 Istio、Linkerd 等服务网格),为敏感流量提供端到端加密与可观测性。

四 网络与最小暴露面

  • 网络隔离:启用NetworkPolicy,按命名空间/应用角色划分白名单通信,默认拒绝所有,仅对必需流量放通,降低横向移动风险。
  • 暴露最小化:仅将必要的Service对外暴露,优先使用ClusterIP/NodePort并通过Ingress Controller统一入口;对外域名与证书集中管理,启用HTTP→HTTPS 重定向HSTS
  • 服务网格:在需要零信任、可观测、细粒度策略的场景引入Service Mesh,以 mTLS、鉴权策略与遥测增强服务间安全。
  • 节点端口范围:仅开放NodePort所需端口段,并在云安全组/边界防火墙上做对齐收敛。

五 审计监控与持续合规

  • 审计与日志:启用Kubernetes 审计日志系统审计(auditd),集中到集中式日志平台(如 EFK/ Loki),保留合规所需周期;为API Server、kubelet、etcd等关键组件设定合适的审计级别与策略。
  • 监控与告警:部署Prometheus + Grafana监控节点资源、Pod 状态、网络与 API 异常,结合告警规则对异常行为(如 CrashLoopBackOff、频繁 403/401、节点 NotReady)进行及时响应。
  • 合规与基线:定期执行CIS/K8s 基线漏洞扫描(如 kube-bench、kube-hunter、Trivy),对发现项建立整改闭环变更记录
  • 补丁与升级:制定滚动升级回滚预案,保持Kubernetes 组件与操作系统处于受支持版本,及时修复CVE
  • 安全配置核对清单(示例):
    | 领域 | 关键动作 | 工具/机制 |
    | — | — | — | | 系统 | 关闭 Swap、启用 firewalld、时间同步 | firewalld、chrony |
    | 身份 | 禁用 root 远程、sudo 审计、口令策略 | /etc/sudoers、pam、chattr |
    | 内核 | br_netfilter、bridge-nf-call-iptables=1 | sysctl、modprobe |
    | 组件 | API/kubelet/etcd TLS、RBAC 最小权限 | kube-apiserver、kubelet、rbac.authorization.k8s.io |
    | 准入 | PSA/Kyverno/OPA 策略 | PodSecurity、准入 webhook |
    | 镜像 | 私有仓库、镜像扫描、可信源 | Trivy、Harbor |
    | 网络 | NetworkPolicy 默认拒绝、Ingress HTTPS | Calico/Cilium、Nginx Ingress |
    | 运行时 | 非 root、Capabilities 最小化、资源限额 | SecurityContext、requests/limits |
    | 审计 | API 审计、系统审计、集中日志 | auditd、kube-apiserver 审计、EFK/Loki |
    | 监控 | 指标与告警、异常检测 | Prometheus、Grafana、Alertmanager |
    | 合规 | 基线核查、漏洞扫描、定期升级 | kube-bench、kube-hunter、Trivy |
    以上清单可按业务与合规要求裁剪与扩展。

0