Files
awoooi/docs/adr/ADR-122-owasp-agentic-ai-iso42001-alignment.md
Your Name 13e51802fe feat(awooop): Phase 0 全 ADR + Phase 1 control plane schema(含 critic 四項修正)
## Phase 0(文件層,全部 Accepted)
- ADR-106/107:AwoooP 平台架構 + 儲存策略
- ADR-111~118:Bootstrap → RLS 七項核心 ADR
- ADR-119~124:SAGA → Singleton Decomposition 六項 ADR
- ADR-UI-01~04:Operator Console 四個 UI ADR

## Phase 1(DB schema + migration)
- awooop_phase1_control_plane_2026-05-04.sql:7 張新表 + trigger + RLS
  - Step 1:三角色(platform_admin/migration BYPASSRLS,awooop_app 受 RLS)
  - Step 13:GRANT awooop_app 最小權限(7 條)
  - Step 14:RLS fail-closed,移除 __platform__ 後門
- awooop_phase1_batch1_rls_2026-05-04.sql:高流量四表三步式 ADD COLUMN
- awooop_phase1_batch1_backfill.py:SKIP LOCKED 分批回填腳本
- awooop_models.py:7 個 SQLAlchemy 2.x models

## Critic 修正(4 Critical + 3 Major)
- C-1:ADD CONSTRAINT IF NOT EXISTS → DO 塊 + pg_constraint 查詢
- C-2:__mapper_args__ 字串 list → primary_key=True on mapped_column
- C-3:__platform__ RLS 後門 → 全移除,改用 BYPASSRLS role
- C-4:awooop_app role 從未建立 → Step 1 + 7 條 GRANT
- M-1:active_pointer_guard SECURITY DEFINER(FORCE RLS 跨租戶保護)
- M-2:pg_partman create_parent 加冪等防護
- M-3:immutability trigger 新增身份欄位保護(project_id/family/contract_id)

## Task 1.2 修補
- agent_loader.py:硬編碼 Mac 路徑 → AGENTS_DIR 環境變數
- Dockerfile:補 COPY .claude/agents/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 13:37:11 +08:00

206 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADR-122: OWASP Agentic AI Top 10 & ISO 42001 Alignment
**狀態**Accepted
**日期**2026-05-03台北
**決策者**:統帥
**範圍**:行業標準映射到 AwoooP 控制項、合規差距識別
**關聯**ADR-116security hardening、ADR-117Confused Deputy、ADR-120budget
---
## 背景
2025 年起OWASP 發布了 **Agentic AI Top 10**OAI-01 到 OAI-10定義了 AI Agent 系統的十大安全風險。同期 ISO/IEC 42001AI Management System Standard也開始被企業採納。
AwoooP 作為 AI Agent 平台,需要對應這兩個標準,確保架構設計符合行業期望。本 ADR 記錄每個風險點的控制狀態。
---
## OWASP Agentic AI Top 10 映射
### OAI-01Prompt Injection提示注入
**風險**:攻擊者透過惡意 prompt 操控 Agent 行為。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| Input sanitization | ⚠️ Partial | `decision_manager.py`(需加強)|
| System prompt isolation | ⚠️ Partial | Agent contract `system_prompt` 欄位Phase 3|
| Output validation | ✅ | `requires_approval` 改 policy-derivedADR-116 D3|
| Injection detection pattern | ❌ TODO | Phase 5injection pattern 規則庫 |
**差距**:需要在 LLM input 加 injection pattern 偵測層。
---
### OAI-02Insecure Output Handling不安全輸出處理
**風險**Agent 輸出被用於執行命令而不驗證。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| Tool call parameter validation | ⚠️ Partial | `mcp_bridge.py`(需加 schema 驗證)|
| Output schema enforcement | ❌ TODO | Phase 3Agent contract output_schema |
| Structured output onlyno free-form exec| ✅ | MCP Gateway 強制 tool_id + params 結構 |
---
### OAI-03Excessive Agency過度授權
**風險**Agent 被賦予超出必要的工具和資源存取權限。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| Per-run allowed_tools allowlist | ✅ | ADR-117 D2 |
| Agent contract tool restriction | ✅ | ADR-106allowed_tools 欄位)|
| HIGH risk tool requires approval | ✅ | ADR-116 D4 + ADR-117 |
| Namespace restriction in K8s ops | ✅ | ADR-117 D2contract-derived|
**狀態COMPLIANT**Phase 3 實作後)
---
### OAI-04Resource Exhaustion資源耗盡
**風險**Agent 呼叫無限 LLM 或工具,耗盡計算/費用資源。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| Token budget hard kill | ✅ | ADR-120 D2 |
| LLM call count limit per run | ✅ | ADR-120 D6llm_call_limit_per_run|
| Tenant budget isolation | ✅ | ADR-120 D1 |
| Emergency kill switch | ✅ | ADR-120 D2 防線 3 |
**狀態COMPLIANT**Phase 2 實作後)
---
### OAI-05Supply Chain Vulnerabilities供應鏈漏洞
**風險**:使用的 AI 模型、工具或 SDK 有未修補的漏洞。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| Model version tracking | ✅ | `ai_provider_version_history` 表 |
| Dependency scanningpip-audit| ⚠️ Partial | CI/CD 需要加入 pip-audit |
| Container image scanning | ⚠️ Partial | Harbor 有 Trivy但未開啟 |
| SBOM generation | ❌ TODO | Phase 5 |
**差距**CI/CD 需要加入 pip-audit + Harbor Trivy 掃描啟用。
---
### OAI-06Data Privacy Violation資料隱私違規
**風險**Agent 處理或洩漏敏感使用者資料。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| Tenant data isolationRLS| ✅ | ADR-118 |
| PII detection before LLM | ❌ TODO | Phase 5PII filter middleware |
| Audit log for sensitive operations | ✅ | ADR-112 D7 |
| K8s Secret 不進 DB | ✅ | INV-4 已確認 |
**差距**PII filter 在 Phase 5 實作Phase 1~4 期間靠 RLS 隔離。
---
### OAI-07Memory Poisoning記憶體污染
**風險**:攻擊者透過操控 Agent 記憶KM影響未來決策。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| KM write requires approval (HIGH risk) | ⚠️ Partial | `knowledge_write` 已在 approval gateADR-116 D3|
| KM entry source tracking | ✅ | `knowledge_entries.source` 欄位 |
| KM poisoning detection | ❌ TODO | Phase 5KM 異常寫入頻率監控 |
| Human review for critical KM | ⚠️ Partial | 目前只有 approval沒有 review UI |
---
### OAI-08Unauthorized Actions未授權操作
**風險**Agent 在沒有授權的情況下執行影響系統的操作。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| Principal mappingwho sent this run?| ✅ | ADR-115platform_subjects 表)|
| Approval workflow | ✅ | ADR-114 + ADR-116 |
| requires_approval not from LLM | ✅ | ADR-116 D3P0-04 修補)|
| SAGA compensation on rejection | ✅ | ADR-119 |
**狀態COMPLIANT**Phase 2 實作後)
---
### OAI-09Access Control Bypass存取控制繞過
**風險**:攻擊者繞過 Agent 的存取控制機制。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| Callback nonce HMAC防偽造| ✅ | ADR-116 D1P0-05 修補)|
| Webhook replay 防護 | ✅ | ADR-116 D2P0-06 修補)|
| JWT / approval_token HS256 | ✅ | ADR-116 D4 |
| RLS 防 cross-tenant | ✅ | ADR-118 |
| Confused Deputy prevention | ✅ | ADR-117 D2 |
**狀態COMPLIANT**Phase 2 實作後)
---
### OAI-10Observability Deficiency可觀測性不足
**風險**AI Agent 的行為無法被審計和追蹤。
| 控制項 | 狀態 | 實作位置 |
|--------|------|---------|
| OTel GenAI spans | ✅ | ADR-121 |
| run_id / trace_id 全鏈路 | ✅ | ADR-111contextvars|
| Audit log for all contract ops | ✅ | ADR-112 D7 |
| Token usage telemetry | ✅ | ADR-120 D2 + ADR-121 D2 |
| Background loop 31 個 tagging | ⚠️ Partial | PR-10Phase 2|
---
## ISO 42001 映射
| 條款 | 要求 | AwoooP 控制項 |
|------|------|-------------|
| 6.1 風險評估 | AI 系統風險識別 | ADR 系列111~124= 正式風險評估文件 |
| 6.2 目標與計畫 | AI 目標量化 | DETAILED-IMPLEMENTATION-PLAN Phase DoD |
| 8.4 AI 系統生命週期 | 版本管理、審批流程 | ADR-112contract governance|
| 9.1 監控與量測 | 效能指標追蹤 | ADR-121OTel+ SignOz dashboard |
| 10.1 不符合項與矯正 | 問題追蹤與改善 | ADR + INV 系統 |
---
## 差距摘要(需後續 Phase 解決)
| OWASP Item | 差距項目 | 目標 Phase |
|-----------|---------|-----------|
| OAI-01 | Injection detection pattern 規則庫 | Phase 5 |
| OAI-02 | Agent contract output_schema 驗證 | Phase 3 |
| OAI-05 | pip-audit CI + Harbor Trivy | Phase 4 |
| OAI-06 | PII filter middleware | Phase 5 |
| OAI-07 | KM 異常寫入頻率監控 | Phase 5 |
| OAI-10 | 31 個 background loop taggingPR-10| Phase 2 |
---
## 驗收標準
- [ ] OWASP OAI-03/04/08/09Phase 2 實作後 vuln-verifier PoC 全過
- [ ] OWASP OAI-1031 個 background loop 全部 taggedPR-10 完成)
- [ ] ISO 42001 映射表展示給統帥確認Phase 2 收尾)
- [ ] 差距清單進入 Phase 4/5 backlog
## 關聯
- ADR-116security hardeningP0-04/05/06
- ADR-117Confused DeputyOAI-03/09
- ADR-118RLSOAI-06/09
- ADR-119SAGAOAI-08
- ADR-120budget hard killOAI-04
- ADR-121OTelOAI-10