K4.3 Pod Security Standards: - awoooi-prod: baseline - kube-state-metrics: baseline - kured: privileged (hostPID required) - descheduler: restricted - velero: baseline - argocd: baseline Grafana Dashboard: - K3s Cluster Overview (9 panels) - Nodes, Pods, HPA, Velero, Alerts Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Pod Security Standards 部署指南
版本: K4.3 用途: Kubernetes 內建安全機制 建立日期: 2026-03-29 (台北時間)
1. 部署 Namespace Labels
# 在 K3s Master (192.168.0.120) 執行
kubectl apply -f k8s/pod-security/namespace-labels.yaml
# 或從本機透過 kubeconfig
kubectl --kubeconfig=/path/to/k3s.yaml apply -f k8s/pod-security/namespace-labels.yaml
2. 驗證
# 檢查 namespace labels
kubectl get ns -o custom-columns='NAME:.metadata.name,ENFORCE:.metadata.labels.pod-security\.kubernetes\.io/enforce'
# 預期結果:
# awoooi-prod baseline
# kube-state-metrics baseline
# kured privileged
# descheduler restricted
# velero baseline
# argocd baseline
3. PSS 級別說明
| 級別 | 說明 | 適用場景 |
|---|---|---|
privileged |
無限制 | Kured (hostPID + 重啟) |
baseline |
基本限制 | 大多數應用 |
restricted |
最嚴格 | 無特權需求的工具 |
4. 標籤說明
| 標籤 | 作用 |
|---|---|
enforce |
違反時拒絕 Pod |
warn |
違反時發出警告 |
audit |
記錄到審計日誌 |
5. 驗證 Pod 合規
# 測試 Pod 是否合規
kubectl auth can-i create pod --namespace=awoooi-prod --as=system:serviceaccount:default:default
# 檢查是否有警告
kubectl get events -n awoooi-prod --field-selector reason=FailedCreate
架構圖
┌─────────────────────────────────────────────────────────────┐
│ K3s Cluster PSS │
├─────────────────────────────────────────────────────────────┤
│ privileged │ kured (hostPID + node reboot required) │
├─────────────────┼───────────────────────────────────────────┤
│ baseline │ awoooi-prod, kube-state-metrics, │
│ │ velero, argocd │
├─────────────────┼───────────────────────────────────────────┤
│ restricted │ descheduler (純 API 存取) │
└─────────────────┴───────────────────────────────────────────┘