四個工具,四個不同的責任
學員登入教學閘道後,伺服器從登入狀態取得學員身分。瀏覽器不能指定另一位學員的資料 schema 或授權 store。固定的 Agent 工作流程會讀目錄、做授權、取得憑證、執行查詢,最後撤銷租約。
學員 → Tailscale HTTPS → 教學閘道 ├─ OpenMetadata:資料的定義 ├─ OpenFGA:這個人能否讀這筆資源 ├─ OpenBao:短效 PostgreSQL 角色 └─ PostgreSQL:只讀自己的 schema │ OTel SDK → Collector → Jaeger不要混淆的邊界
Section titled “不要混淆的邊界”| 元件 | 負責 | 仍需要別人負責 |
|---|---|---|
| OpenMetadata | 欄位描述、資料目錄與語意脈絡 | 不會自動替所有查詢執行資料庫權限 |
| OpenFGA | 根據關係模型作授權判定 | 應用程式必須執行判定,不能收到拒絕後照樣查詢 |
| OpenBao | 發出與撤銷憑證、限制生命週期 | 帳密授予哪些 SQL 權限,要由資料庫角色落實 |
| OpenTelemetry | 統一產生及傳送 trace/span | 儲存與查詢由後端承擔,本課使用 Jaeger |
| 教學閘道 | 身分綁定、控制順序與學員隔離 | 正式部署仍要設計 SSO、核准、可用性與營運責任 |
這套沙盒的具體選擇
Section titled “這套沙盒的具體選擇”50 位學員共用服務,但各有獨立 OpenFGA store、PostgreSQL schema、OpenMetadata 表定義及操作紀錄。內部管理 API 不發布給學員;學員從受控操作台觀察真實 API 結果。這是應用層與資料庫權限的隔離,不是惡意程式碼執行平台。
本課的 Agent 是可重現的固定流程,沒有 LLM 推論。這讓大家在相同輸入下比較控制是否有效;把 LLM 加回正式系統時,也應讓模型經過相同的伺服器端檢查。
所有服務在同一台 5090 主機,沒有跨機高可用。內部 Docker 網路使用 HTTP,入口由 Tailscale 提供 HTTPS;正式環境應按威脅模型補上服務身分、傳輸保護、金鑰管理與持久稽核。
入侵之後的設計
Section titled “入侵之後的設計”接著用 時事與韌性架構 檢查工作負載失守、供應商中斷、付款狀態不明與恢復營運。四項工具之外,還需要備份隔離、受保護稽核、服務降級與應變責任。