Kubernetes 叢集安全加固最佳實踐
Kubernetes
Security
DevOps
在雲原生時代,Kubernetes 已成為容器編排的事實標準。然而,預設配置的 K8s 叢集往往存在安全隱患。本文將分享生產環境中的 K8s 安全加固經驗。
一、API Server 安全配置
API Server 是 K8s 的控制中心,也是攻擊者的主要目標。建議採取以下措施:
- 啟用 RBAC(Role-Based Access Control)
- 禁用匿名訪問和未授權端點
- 使用 TLS 證書加密通訊
- 限制 API Server 的網路訪問
二、Pod 安全策略
使用 Pod Security Policy(或 Pod Security Standards)限制容器特權:
# 限制容器以 root 用戶運行
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000
# 禁止特權容器
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
三、網路隔離
使用 Network Policy 實現微隔離,確保 Pod 之間的最小權限通訊:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
四、映像檔安全
掃描容器映像漏洞,僅使用官方或受信任的映像來源:
- 使用 Trivy 掃描漏洞
- 設定映像簽名驗證(cosign)
- 定期更新基礎映像
五、監控與審計
部署 Falco 進行執行時安全監控,啟用審計日誌追蹤所有 API 請求:
# Falco 規則示例
- rule: Shell in container
desc: A shell was spawned in a container
condition: >
spawned_process
and container
and shell_procs
and not user_expected_shell_spawned_processes
安全是一個持續的過程,而非一次性配置。定期進行安全評估和滲透測試,才能確保叢集的安全性。