# Pod Security Standards 部署指南

> **版本**: K4.3
> **用途**: Kubernetes 內建安全機制
> **建立日期**: 2026-03-29 (台北時間)

---

## 1. 部署 Namespace Labels

```bash
# 在 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. 驗證

```bash
# 檢查 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 合規

```bash
# 測試 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 存取)                 │
└─────────────────┴───────────────────────────────────────────┘
```
