16 KiB
Kali 資訊安全網藍圖
日期:2026-05-06(台北時間) 範圍:
192.168.0.112Kali 資安主機、所有 AWOOOI/AwoooP 資產、開發主機192.168.0.168與192.168.0.111姿態:先建框架、預設只觀測、後續分階段收攏
0. 核心決策
將 192.168.0.112 建置為整個架構的資安感測與驗證節點,但初期不採用高強度封鎖。
初期模式如下:
| 層級 | 初期姿態 | 後續姿態 |
|---|---|---|
| 資產發現 | 唯讀盤點與可達性確認 | 持續資產漂移偵測 |
| 掃描 | 低噪音排程掃描 | 依風險與批准執行深度掃描 |
| 發現項 | 寫入證據、評分、路由 | SLA、責任歸屬、政策閘門 |
| 修復 | 僅提出建議 | dry-run、批准後受控執行 |
| 封鎖 | 除確認的機密外,不讓 CI/CD 強制失敗 | 逐步推進 P0/P1 閘門 |
這遵守 MASTER 自主化飛輪規則:不建立靜態黑白名單決策引擎,不硬編修復動作,不在缺少 dry-run 與批准證據時執行破壞性操作。
1. 目前盤點結論
已經存在
| 面向 | 目前證據 | 缺口 |
|---|---|---|
| Kali 主機 | 192.168.0.112:8080 已出現在 docs/reference/SERVICE-ENDPOINTS.md、KALI_SCANNER_URL、NetworkPolicy egress、blackbox probe、KaliScannerDown 告警;2026-05-13 已確認 live /health healthy 並完成第一波 targeted scanner package update |
目前只監控存活,尚未形成完整掃描結果治理閉環 |
| 資產資料庫地基 | ADR-090 migration 已定義 asset_inventory、asset_discovery_run、asset_coverage_snapshot、asset_compliance_snapshot |
目前 scanner 以 K8s 為主;Docker、Gitea repos、網站、主機套件、Kali findings 還不完整 |
| AIOps KPI | /api/v1/aiops/kpi 會彙整資產、覆蓋率、規則品質、容量與自動化流量 |
資安姿態尚未成為 KPI 的一級區塊 |
| 合規掃描 | 已寫入 7 個 compliance 維度,SSL 與 Secret 年齡有部分檢查 | cve_scan、audit_log_enabled、access_reviewed、encryption_at_rest 多數仍是 unknown |
| 資安 Agent | 已有 SecurityAgent、vuln-verifier、security_interceptor、AwoooP security ADR |
尚未接成以 Kali 為核心的資安網 |
| 監控 | 已有 Prometheus/Alertmanager、SignOz、Sentry、blackbox、node exporter、Docker textfile exporter | 資安 finding 尚未正規化為 Prometheus metrics 與 incident taxonomy |
| 網路護欄 | k8s/awoooi-prod/02-network-policy.yaml 已 default-deny,並明確允許到 112/110/188/120/121/111 的必要 egress |
168 不是架構資產;111 主要被視為 Ollama fallback,尚未成為完整資安資產 |
明顯缺口
| 缺口 | 影響 | 第一個修正方向 |
|---|---|---|
192.168.0.168 沒進 inventory |
開發工作站對資安覆蓋不可見 | 加入資安資產登錄,初期只觀測 |
192.168.0.111 主要被當成 Ollama fallback |
Local AI/dev host 可能有模型、SSH、套件風險,但尚未以主機姿態納管 | 加入 host posture、service、model、package、access-review 檢查 |
| Kali findings 沒有標準 schema | 結果會變成一次性報告,不能成為 AI 飛輪證據 | 正規化為 asset_compliance_snapshot 與 security event envelope |
| 程式碼資安與 runtime 資安分離 | repo 漏洞、secrets、containers、live services 無法關聯 | 將 SAST、secret、SBOM、container scan 結果接到 asset_inventory |
| 缺少階段性 enforcement 表 | 初期容易過度收緊 | 使用 observe -> warn -> approve -> block 的推進閘門 |
2. 資安資產地圖
| 類別 | 資產 | 需要的資安覆蓋 |
|---|---|---|
| 資安感測 | 192.168.0.112 Kali Scanner API |
scanner health、scan job state、工具版本、結果匯出、保存週期 |
| DevOps 金庫 | 192.168.0.110 Harbor、Gitea、runners、Sentry、Langfuse、Grafana、Prometheus、Ollama proxy |
registry image scan、runner hardening、暴露 port、TLS、secrets、CI workflow risk |
| K3s 控制面 | 192.168.0.120、192.168.0.121、VIP 192.168.0.125 |
kube-bench 類姿態、RBAC、NetworkPolicy、Pod Security、API exposure、node health |
| AI/Web/Data | 192.168.0.188 PostgreSQL、Redis、OpenClaw、SignOz、MinIO、momo services |
DB exposure、backup restore proof、Redis ACL、web/API DAST、storage access、model endpoint exposure |
| Local AI/開發 | 192.168.0.111 Ollama local fallback 與開發主機職責 |
host packages、Ollama API exposure、SSH policy、model inventory、fallback readiness |
| 開發工作站 | 192.168.0.168 local development origin |
dev-only CORS origin、repo secrets hygiene、local service exposure、least-privilege access |
| 公開網站 | awoooi.wooo.work、aiops.wooo.work、mo.wooo.work、stock.wooo.work、bitan.wooo.work 與其他 active product domains |
TLS、headers、auth、公開攻擊面、endpoint inventory、uptime/security correlation |
| 程式碼/專案 | AWOOOI、AwoooP、MOMO、Tsenyang、Stock、Bitan、future tenants | SAST、dependency/SBOM、secret scan、IaC scan、container scan、contract/policy drift |
| Source Control / CI/CD | Gitea 現有 repos、GitHub primary 候選、branches、tags、workflows、webhooks、runner secrets 名稱 | 供應鏈盤點、版本完整性比對、權限審查、GitHub primary / Gitea mirror 遷移 |
| 可觀測工具 | Prometheus、Alertmanager、SignOz、Sentry、Grafana、Langfuse | admin exposure、token hygiene、alert route integrity、audit export |
| 自動化工具 | MCP Gateway、SSH provider、K8s provider、GitOps、repair bots | tool grants、approval boundaries、command safety、audit and replay |
3. 目標資料流
Kali 112 掃描 / 驗證
-> 資安結果 envelope
-> AWOOOI API ingestion
-> asset_inventory / asset_compliance_snapshot / asset_change_event
-> Prometheus metrics + Alertmanager secops taxonomy
-> incidents / timeline_events / automation_operation_log
-> SecurityAgent + Critic + Reviewer triage
-> Telegram / AwoooP Channel Event
-> 僅建議修復
-> 後續 dry-run + approval + 受控執行
第一個生產級契約應該是 security_finding envelope:
| 欄位 | 意義 |
|---|---|
finding_id |
由 scanner、target、rule id、evidence 產生的穩定 hash |
scan_run_id |
Kali run id,可在可能時連到 asset_discovery_run |
asset_key |
既有 ADR-090 asset key |
target |
Host、URL、repo、image、K8s object、package 或 tool |
category |
exposure、cve、secret、misconfig、auth、tls、web、code、supply_chain、network |
severity |
AI review 前的 scanner severity |
confidence |
AI review 前的 scanner confidence |
evidence_ref |
已脫敏證據指標,不存 raw secret 或完整 exploit output |
recommended_mode |
observe、warn、approve_required、block_candidate |
human_required |
破壞性或權限變更類 action 必須為 true |
4. 分階段推進
Phase 0 - 基線與責任歸屬
目標:讓所有資產可見,但不執行 enforcement。
| 動作 | 主責 Agent | 完成證據 |
|---|---|---|
| 將 112/111/168 加進資安資產登錄 | Asset Cartographer | asset_inventory 有 host rows 與 tags |
| 依資產類型定義安全 scan scope | Security Orchestrator | scope file 含 observe_only=true |
| 保持 Kali 可達性告警為 health-only | SRE Sentinel | KaliScannerDown 仍是 warning,不 auto repair |
| 盤點公開網站與內部 endpoint | Web Perimeter Agent | website/api assets 有 TLS metadata |
| 盤點 Gitea 全量版本與 GitHub 對應目標 | Source Control Migration Steward | repo/branch/tag/workflow/webhook 對照表 |
閘門:不封鎖、不做破壞性掃描、不在未批准時做 credentialed scan。
Phase 1 - 被動與低噪音掃描
目標:不干擾服務地收集 findings。
| 面向 | 初期檢查 |
|---|---|
| 主機 | port inventory、若 SSH-approved 則 OS/package inventory、SSH banner/config posture |
| 網站 | TLS expiry、headers、基本 auth/session 檢查、安全 DAST crawl |
| K8s | RBAC、Pod Security labels、NetworkPolicy coverage、exposed Services |
| 容器 | image tag inventory、SBOM、已知 CVE scan、registry metadata |
| 程式碼 | secret scan、dependency scan、IaC scan、SAST warning inventory |
| 可觀測工具 | admin exposure、unauthenticated endpoints、token/config drift |
閘門:findings 只進 observe 或 warn;只有確認的 hardcoded secret 可立即升為 P0。
Phase 2 - 資安分類與告警
目標:把重複性 findings 轉成有用告警,而不是製造噪音。
新增告警分類:
| 分類 | 範例 | 初期路由 |
|---|---|---|
secops_exposure |
非預期 open port、公開 admin UI | Telegram security summary |
secops_cve |
critical vulnerable image/package | incident + owner |
secops_secret |
committed token、暴露 env、弱 secret handling | P0 human review |
secops_web |
TLS/header/auth weakness | warning ticket |
secops_k8s |
privileged pod、弱 RBAC、缺 NetworkPolicy | SRE + Security review |
secops_supply_chain |
unsigned image、unpinned dependency、runner risk | DevOps review |
閘門:alert rule 先 warning-only;除既有 hard rules 外,不自動封鎖。
Phase 3 - 建議與批准模式
目標:AI 提出修復,人類批准高風險變更。
| 動作 | 模式 |
|---|---|
| 建立 issue / Telegram card / AwoooP work item | automatic |
| 針對 headers、dependency bumps、NetworkPolicy additions 草擬 PR | automatic draft |
| rotate secret | approval required |
| 關閉 public port | approval required |
| 修改 RBAC / firewall / CORS | approval required |
| 執行更深層 active scan | approval required |
閘門:每個建議都必須有 evidence、blast radius、rollback 與 owner。
Phase 4 - 逐步 enforcement
目標:將低噪音且已驗證的控制項提升為 gate。
推進順序:
| Gate | 推進條件 |
|---|---|
| Secret scan gate | 14 天低 false positives,且 confirmed sanitizer |
| Container critical CVE gate | owner mapping 與 override workflow 已存在 |
| IaC dangerous pattern gate | dry-run 可抓問題且不阻擋有效部署 |
| Public exposure gate | inventory 完整且 approved exceptions 已存在 |
| K8s security gate | Pod Security/NetworkPolicy evidence 穩定 |
除非 false-positive rate、owner routing、override、rollback path 都可量測,否則不得提升為 blocking gate。
5. 12 Agent 作業模型
| # | Agent | 責任 | 第一個 ownership |
|---|---|---|---|
| 1 | Security Commander | 資安網優先順序與 phase gates | 本藍圖、promotion criteria |
| 2 | Asset Cartographer | 主機、服務、repos、網站、網路、工具 | 112/111/168 的 ADR-090 asset keys |
| 3 | Kali Orchestrator | 掃描 scope、排程、工具 output normalization | KALI_SCANNER_URL、security finding envelope |
| 4 | Network Mapper | Port/service/topology drift | 110/112/120/121/188/111/168 + public domains |
| 5 | Web Perimeter Agent | DAST-safe website 與 API posture | public sites、AWOOOI web/API |
| 6 | Code Guardian | SAST、secrets、dependency、SBOM | repo 與 package scan evidence |
| 6A | Source Control Migration Steward | Gitea 全量版本盤點、GitHub primary 遷移、安全權限 | Gitea/GitHub repos、branches、tags、workflows、webhooks |
| 7 | Container Supply Agent | Harbor images、SBOM、image CVEs | registry 與 runtime image mapping |
| 8 | K8s Guard | RBAC、Pod Security、NetworkPolicy、API exposure | k8s/awoooi-prod、k8s/pod-security |
| 9 | Dev Host Steward | 168 與 111 developer host posture | observe-only host inventory |
| 10 | Observability Sentinel | Prometheus/SignOz/Sentry/Grafana security signals | metrics、alert rules、dashboards |
| 11 | Policy Gatekeeper | AwoooP policy、approval、exception handling | suggest/approve/block promotion |
| 12 | Evidence Archivist | 脫敏證據、audit、KM、timeline | automation_operation_log、KM、LOGBOOK |
這是責任分工,不代表一定要同時啟動 12 個 coding session;只有在寫入範圍互不衝突時才並行。
6. 需要建置的整合點
| 整合 | 目前 anchor | 需要工作 |
|---|---|---|
| Kali API health | KALI_SCANNER_URL、KaliScannerDown、docs/security/KALI-INTEGRATION-STATUS.md |
新增 scan run/result endpoint 或 adapter |
| 資產盤點 | asset_scanner_job.py |
從 K8s 擴展到 hosts、Docker、Gitea/GitHub、websites、dev hosts |
| 合規 | compliance_scanner_job.py |
補上 cve_scan、audit_log_enabled、access_reviewed、encryption_at_rest |
| KPI | AiopsKpiService |
新增 security_posture 區塊 |
| 告警 | alert_rules.yaml、alerts-unified.yml |
result schema 穩定後新增 secops taxonomy |
| AwoooP | ADR-106/107 contracts | enforcement 前先 mirror findings 到 Channel/Runtime events |
| 前端 | /security-compliance |
顯示 API 產生的真實 security posture,不用靜態 widgets |
| 知識 | KM/RAG + playbooks | 資安修復 outcomes 成為可檢索 evidence |
7. 護欄
- 預設不做破壞性掃描。
- 未經明確批准與維護窗口,不對 production 執行 exploit。
- 未定義 credential source、scope、audit trail 前,不做 credentialed scanning。
- Telegram、logs、KM 不得存 raw secret、token、cookie、key、exploit payload。
- Phase 0-2 不自動修改 firewall、RBAC、CORS、NetworkPolicy、route 或 secret rotation。
- 開發主機
192.168.0.168與192.168.0.111初期為observe-only,不是 compliance blocker。 - Security findings 必須用 stable fingerprint 去重後才能告警。
- 每個 finding 必須有 asset owner、severity、confidence、evidence pointer、next action。
- Blocking gate 必須有可量測 false-positive rate 與 override workflow。
- 長期授權由 AwoooP policy 負責;scanner 只提供 evidence。
7.1 2026-05-13 Live 整合狀態
192.168.0.112 已經完成第一波 live 盤點與低風險更新,正式記錄於 docs/security/KALI-INTEGRATION-STATUS.md。
已確認:
kali-scanner.serviceactive / enabled。/healthhealthy。nmap、nikto、nuclei、curl、openssl、CA 套件已做 targeted update。- 已安裝
jq。 - 主機時區已調整為
Asia/Taipei。 - 更新後 SSH / cron / docker / scanner service 都 active,且不需 reboot。
security_finding_v1sample snapshot 已建立。kali_scan_scope_approval_v1approval package 已建立,111/168 已納入 observe-only scope。
仍然不能做:
- 不直接啟動 active scan。
- 不做 credentialed scan。
- 不讓 AwoooP 直接呼叫 Kali
/executeendpoint。 - 不保存 API key、SSH 密碼或任何 secret value。
- 不做 full-upgrade、autoremove 或 reboot,除非先排維護窗口。
7.2 2026-06-04 只讀重驗證狀態
192.168.0.112 已於 2026-06-04 08:55(台北)重新完成只讀 SSH 快照,沒有啟動掃描、沒有呼叫 /execute、沒有執行套件更新、沒有調整設定、沒有重啟。最新證據正式記錄於 docs/security/KALI-INTEGRATION-STATUS.md 與 docs/security/kali-integration-status.snapshot.json。
已確認:
- 既有 SSH key 可只讀連線。
kali-scanner.service仍為 active / enabled。127.0.0.1:8080/health仍回200 healthy。node-exporter與wg-easy容器仍在運作。- 主機時區維持
Asia/Taipei。 failed_systemd_unit_count=1,目前為networking.service。upgradable_package_count=1994。- scanner service hardening 仍是
0 / 4,NoNewPrivileges、PrivateTmp、ProtectSystem、ProtectHome尚未啟用。
結論:Kali 112 已經從「文件與 5/13 盤點」推進到「6/4 再驗證的 live read-only evidence」,但仍不代表 full-upgrade、autoremove、reboot、主動掃描、憑證掃描、服務 hardening override 或 AwoooP /execute 已被批准。
8. 第一波實作建議
建議下一波程式實作:
| 步驟 | 變更 | 風險 |
|---|---|---|
| 1 | security_finding_v1 schema / sample 已建立;下一步只需在批准後補 adapter contract / ingestion path |
低 |
| 2 | 建立 Gitea 全量版本盤點與 GitHub primary / Gitea mirror 遷移清單,先只盤點與比對,不切主控 | 低 |
| 3 | 111/168/112 已有 scan scope 草案;批准後再加進 asset discovery seed | 低 |
| 4 | 新增 Kali result ingestion endpoint,只存脫敏 findings | 中 |
| 5 | 擴充 compliance scanner,消費 Kali findings 到 cve_scan 與 secops_exposure |
中 |
| 6 | 在 /api/v1/aiops/kpi 新增 security_posture |
低 |
| 7 | 從 normalized finding counts 輸出 warning-only Prometheus metrics | 中 |
| 8 | 新增前端 /security-compliance 真實資料 panel |
低 |
本波不得部署自動封鎖或自動修復。