feat(security): Phase 20 CSRF 防護實作
Phase 19 首席架構師審查指出: 核鑰 UX 安全性缺 CSRF 防護 後端: - 新增 src/core/csrf.py (Double Submit Cookie 模式) - 新增 src/api/v1/csrf.py (GET /api/v1/csrf/token) - 新增 src/models/csrf.py (CSRFTokenResponse) - 修改 approvals.py sign/reject/bulk 端點加入 CSRFToken 驗證 前端: - 新增 hooks/useCSRF.ts (React Hook) - 修改 approval.store.ts 整合 CSRF Token 參數 安全特性: - 256-bit Token (secrets.token_hex) - 時序安全比較 (secrets.compare_digest) - SameSite=Strict Cookie - 1 小時 Token 有效期 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,24 +5,86 @@
|
||||
|
||||
---
|
||||
|
||||
## 📍 當前狀態 (2026-03-28 21:30 台北)
|
||||
## 📍 當前狀態 (2026-03-28 19:00 台北)
|
||||
|
||||
| 項目 | 狀態 |
|
||||
|------|------|
|
||||
| **當前 Phase** | ✅ **Phase 19.6 測試文檔完成** |
|
||||
| **當前 Phase** | ✅ **Phase 20 CSRF 防護完成** |
|
||||
| **Day** | Day 10 |
|
||||
| **AI Fallback** | ✅ **Ollama → Gemini → Claude** (已切回) |
|
||||
| **LLM 模型** | `llama3.2:3b` (CPU 約 2-3 分鐘) |
|
||||
| **K3s 優化** | ✅ **Phase K0 + K-NET 已完成** |
|
||||
| **VIP** | ✅ **192.168.0.125 (keepalived)** |
|
||||
| **K3s 優化** | ✅ **Phase K0 + K-NET + K-CLEAN 全部完成** |
|
||||
| **VIP** | ✅ **192.168.0.125 (keepalived + CI/CD 整合)** |
|
||||
| **Phase 16** | ✅ **首席架構師審查 50/50 OUTSTANDING** |
|
||||
| **Phase 19** | ✅ **47/50 (P0-P2 全部修復,~95% 完成)** |
|
||||
| **Phase 19** | ✅ **47/50 (100% 完成)** |
|
||||
| **ADR** | ✅ ADR-031 + ADR-032 + **ADR-033 (K3s HA)** |
|
||||
| **首席架構師審查** | ✅ **綜合審查 8.8/10 Strong Pass** |
|
||||
| **Sentry Replay** | ✅ **已配置 (10% Session + 100% Error)** |
|
||||
|
||||
---
|
||||
|
||||
### ✅ 2026-03-28 Phase 20 CSRF 防護完成 (Day 10 傍晚 19:00)
|
||||
|
||||
**狀態**: ✅ **Phase 20 CSRF 防護實作完成**
|
||||
|
||||
**Phase 19 首席架構師審查指出**: 核鑰 UX 安全性 9/10 (缺 CSRF 防護)
|
||||
|
||||
**實作內容**:
|
||||
|
||||
| 項目 | 說明 |
|
||||
|------|------|
|
||||
| `src/core/csrf.py` | CSRF Token 生成/驗證模組 |
|
||||
| `src/api/v1/csrf.py` | GET /api/v1/csrf/token 端點 |
|
||||
| `src/models/csrf.py` | CSRFTokenResponse Pydantic 模型 |
|
||||
| `approvals.py` | sign/reject/bulk 端點加入 CSRF 驗證 |
|
||||
| `useCSRF.ts` | 前端 React Hook |
|
||||
| `approval.store.ts` | Zustand store 整合 CSRF Token |
|
||||
|
||||
**安全機制**:
|
||||
- Double Submit Cookie 模式
|
||||
- 時序安全比較 (`secrets.compare_digest`)
|
||||
- SameSite=Strict Cookie
|
||||
- 1 小時 Token 有效期
|
||||
|
||||
**保護端點**:
|
||||
- `POST /api/v1/approvals/{id}/sign` (核鑰簽核)
|
||||
- `POST /api/v1/approvals/{id}/reject` (拒絕請求)
|
||||
- `POST /api/v1/approvals/bulk-approve` (批次處理)
|
||||
|
||||
**下一步**: Git commit + 部署驗證
|
||||
|
||||
---
|
||||
|
||||
### ✅ 2026-03-28 K3s K-CLEAN + K-VIP CI/CD 整合完成 (Day 10 傍晚 18:20)
|
||||
|
||||
**狀態**: ✅ **K3s 優化 K0 + K-NET + K-CLEAN 全部完成**
|
||||
|
||||
**K-VIP CI/CD 整合**:
|
||||
|
||||
| 項目 | 說明 |
|
||||
|------|------|
|
||||
| GitHub Secret | `KUBE_CONFIG_PROD` 更新為 VIP 192.168.0.125 |
|
||||
| daily-e2e-health.yaml | API URL 改用 VIP 端點 |
|
||||
| reference_four_hosts.md | 已更新五主機架構 (含 VIP) |
|
||||
|
||||
**K-CLEAN 環境清理**:
|
||||
|
||||
| 類型 | 清理數量 |
|
||||
|------|----------|
|
||||
| 孤立 ReplicaSet | 9 個 (awoooi-prod) |
|
||||
| Failed Job | 1 個 (wooo-aiops-uat) |
|
||||
|
||||
**清理後狀態**:
|
||||
- awoooi-api: 1 RS, 2/2 Pods Running
|
||||
- awoooi-web: 1 RS, 2/2 Pods Running
|
||||
- awoooi-worker: 1 RS, 1/1 Pod Running
|
||||
|
||||
**首席架構師審查**: 46/50 (92%) - Phase K0 + K-NET
|
||||
|
||||
**下一步**: CSRF 防護 (P1) 或 K-HA 另案規劃
|
||||
|
||||
---
|
||||
|
||||
### ✅ 2026-03-28 Phase 19.6 測試文檔完成 (Day 10 晚間 21:30)
|
||||
|
||||
**狀態**: ✅ **Phase 19 全部完成** (Wave 0-6)
|
||||
|
||||
@@ -101,6 +101,14 @@
|
||||
| K-NET.2 | 配置 VIP 192.168.0.125 | 🟡 需協調 |
|
||||
| K-NET.3 | 更新 CI/CD kubeconfig | 🔴 影響部署 |
|
||||
|
||||
### Phase K-CLEAN: 環境清理 (✅ 已完成 2026-03-28)
|
||||
|
||||
| 任務 | 內容 | 風險 |
|
||||
|------|------|------|
|
||||
| K-CLEAN.1 | 清理孤立 ReplicaSet | 🟢 低 |
|
||||
| K-CLEAN.2 | 清理 Failed Job | 🟢 低 |
|
||||
| K-CLEAN.3 | 驗證 Pod 狀態 | 🟢 低 |
|
||||
|
||||
### Phase K-HA: HA 升級 (📋 另案規劃)
|
||||
|
||||
| 任務 | 內容 | 風險 |
|
||||
@@ -203,3 +211,4 @@ sudo systemctl disable keepalived
|
||||
|------|------|--------|----------|
|
||||
| 1.0 | 2026-03-28 | Claude Code | 初始建立,Phase K0 批准 |
|
||||
| 1.1 | 2026-03-28 | Claude Code | Phase K0 + K-NET 完成,首席架構師審查 46/50 |
|
||||
| 1.2 | 2026-03-28 | Claude Code | Phase K-CLEAN 完成 (9 RS + 1 Job 清理) + K-VIP CI/CD 整合 |
|
||||
|
||||
Reference in New Issue
Block a user