保障CentOS上K8s安全可从系统、集群、网络、镜像等多层面入手,具体措施如下:
-
系统基础安全
- 关闭不必要的服务(如FTP、邮件服务),使用
systemctl管理服务状态。
- 配置防火墙(
iptables/firewalld)限制端口访问,仅开放必要端口。
- 禁用SELinux或配置为宽松模式,避免权限冲突。
- 关闭Swap分区,减少攻击面。
- 同步系统时间,使用NTP服务确保时间一致性。
-
集群组件安全
- 升级组件:定期更新K8s到最新稳定版本,修复已知漏洞。
- API服务器安全:启用TLS双向认证,限制访问IP,禁用匿名访问。
- etcd安全:使用TLS加密存储和传输,定期备份数据并测试恢复流程。
- RBAC权限控制:遵循最小权限原则,为不同用户/服务账户分配精准权限,启用审计日志记录操作。
-
网络与流量控制
- 网络策略:通过
NetworkPolicy限制Pod间通信,禁止未授权的跨命名空间访问。
- 服务隔离:使用命名空间划分资源,结合网络策略实现逻辑隔离。
-
镜像与容器安全
- 镜像扫描:部署前使用Trivy、Clair等工具扫描镜像漏洞,禁止未通过扫描的镜像入集群。
- 非特权运行:容器以非root用户运行,限制特权模式,通过
securityContext配置权限。
- 镜像来源可信:使用私有仓库并启用签名验证(如cosign),避免使用公共仓库的未验证镜像。
-
运行时与监控
- 运行时防护:启用Pod安全策略(如Baseline/Restricted),限制容器资源使用和系统调用。
- 入侵检测:部署Falco等工具监控异常行为,如容器逃逸、敏感文件访问。
- 日志与审计:收集API Server、节点日志,通过ELK或Prometheus分析异常。
-
数据与备份安全
- 敏感信息管理:使用Kubernetes Secrets存储密码、密钥,避免硬编码在配置中。
- 定期备份:备份etcd数据、集群配置,测试恢复流程确保数据可恢复。
-
其他高级措施
- 服务网格集成:使用Istio、Linkerd实现流量加密、服务间认证。
- 节点访问控制:通过SSH密钥认证限制节点访问,结合堡垒机实现操作审计。
参考来源: