# Kali 資訊安全網藍圖 > 日期:2026-05-06(台北時間) > 範圍:`192.168.0.112` Kali 資安主機、所有 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. 目標資料流 ```text 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. 護欄 1. 預設不做破壞性掃描。 2. 未經明確批准與維護窗口,不對 production 執行 exploit。 3. 未定義 credential source、scope、audit trail 前,不做 credentialed scanning。 4. Telegram、logs、KM 不得存 raw secret、token、cookie、key、exploit payload。 5. Phase 0-2 不自動修改 firewall、RBAC、CORS、NetworkPolicy、route 或 secret rotation。 6. 開發主機 `192.168.0.168` 與 `192.168.0.111` 初期為 `observe-only`,不是 compliance blocker。 7. Security findings 必須用 stable fingerprint 去重後才能告警。 8. 每個 finding 必須有 asset owner、severity、confidence、evidence pointer、next action。 9. Blocking gate 必須有可量測 false-positive rate 與 override workflow。 10. 長期授權由 AwoooP policy 負責;scanner 只提供 evidence。 ## 7.1 2026-05-13 Live 整合狀態 `192.168.0.112` 已經完成第一波 live 盤點與低風險更新,正式記錄於 `docs/security/KALI-INTEGRATION-STATUS.md`。 已確認: 1. `kali-scanner.service` active / enabled。 2. `/health` healthy。 3. `nmap`、`nikto`、`nuclei`、`curl`、`openssl`、CA 套件已做 targeted update。 4. 已安裝 `jq`。 5. 主機時區已調整為 `Asia/Taipei`。 6. 更新後 SSH / cron / docker / scanner service 都 active,且不需 reboot。 7. `security_finding_v1` sample snapshot 已建立。 8. `kali_scan_scope_approval_v1` approval package 已建立,111/168 已納入 observe-only scope。 仍然不能做: 1. 不直接啟動 active scan。 2. 不做 credentialed scan。 3. 不讓 AwoooP 直接呼叫 Kali `/execute` endpoint。 4. 不保存 API key、SSH 密碼或任何 secret value。 5. 不做 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`。 已確認: 1. 既有 SSH key 可只讀連線。 2. `kali-scanner.service` 仍為 active / enabled。 3. `127.0.0.1:8080/health` 仍回 `200 healthy`。 4. `node-exporter` 與 `wg-easy` 容器仍在運作。 5. 主機時區維持 `Asia/Taipei`。 6. `failed_systemd_unit_count=1`,目前為 `networking.service`。 7. `upgradable_package_count=1994`。 8. 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 | 低 | 本波不得部署自動封鎖或自動修復。