在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集群的安全性,保護集群免受潛在威脅。