在CentOS上部署Kubernetes(K8s)时,保障其安全性至关重要。以下是一些关键的安全措施和最佳实践:
-
镜像制作规范:
- 使用统一标准的基础镜像。
- 统一时区为Asia/Shanghai。
- 容器内使用非root用户运行主进程。
- 容器内只能运行一个主进程,禁止使用systemd管理进程。
- 镜像内不能存储凭据密钥等敏感文件。
- 镜像内不能存储大量运行时临时文件,如日志和调试文件。
- 应用镜像不可超过80层。
- 基础镜像以entrypoint或空执行结束,业务镜像以CMD结束。
-
应用部署规范:
- 使用规定的namespace部署服务,避免占用default和kube-system的namespace。
- 配置容器资源限额,设置CPU和内存的request和limit。
- 配置liveness探针、readiness探针和startup探针,确保应用服务的健康性和高可用性。
- 使用configmap挂载应用的静态配置,动态配置需由应用服务自行管理。
- 对日志进行持久化配置,并制定日志保存规范。
- 集群内服务互相调用时应使用域名而非IP+nodeport方式。
- 设置多副本无状态应用服务,副本数必须大于1,并使用反亲和性配置。
- 固定对外端口,避免使用主机名和服务端口信息绑定访问。
- 实现优雅关闭服务,通过preStopHook和GracePeriodSeconds配置。
-
系统安全配置:
- 禁用root以外的超级用户,删除不必要的账号和组。
- 设置强密码策略,定期更新密码。
- 强化SSH安全,更改默认端口,禁用root登录,使用密钥认证。
- 使用firewalld或iptables配置防火墙规则,限制对服务器的访问。
- 定期更新操作系统和软件包,修复已知漏洞。
-
网络与权限管理:
- 使用NetworkPolicy限制Pod间的网络通信。
- 利用RBAC进行基于角色的访问控制,精细管理用户和组对资源的访问权限。
- 使用PodSecurityPolicy定义集群级别的安全策略。
-
监控与日志审计:
- 启用详细的日志记录,结合Prometheus和Grafana进行监控和异常检测。
- 配置Audit Logging以跟踪集群中的所有API调用并生成审计报告。
通过上述措施,可以显著提高CentOS上Kubernetes集群的安全性,保护集群免受潜在威胁。