ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

给你的 AI Agent 装上防篡改“黑匣子“:Agent 治理审计与 OWASP ASI 2026 实战指南

给你的 AI Agent 装上防篡改“黑匣子“:Agent 治理审计与 OWASP ASI 2026 实战指南 给你的 AI Agent 装上防篡改黑匣子Agent 治理审计与 OWASP ASI 2026 实战指南【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit想象审计员打开工单把销售 Agent 当天的全部操作拉出来每一步谁批准的如果你只能交出一堆事后可改的文本日志对话到此为止。Agent 治理审计真正需要的是建在 Merkle 链上的防篡改审计日志记录删不掉、改不了还能让外人独立验证。Agent Governance Toolkit 里的agt命令行把 OWASP ASI 2026 的十项安全控制逐项查一遍结果可以直接挂进 CI/CD 门禁让合规从口号变成可执行的检查项。本文把两条线走一遍先把审计链立起来再让它可验证最后接进流水线。五分钟拿到一条防篡改审计链先装包再落一条记录然后验证pip install agentmesh-platform之后下面这段就能跑。from agentmesh.governance.audit import AuditLog audit AuditLog() # 纯内存链 entry audit.log( event_typetool_invocation, agent_diddid:web:sales-assistant.example.com, actionallow, resource/crm/contacts, data{tool: crm_lookup}, outcomesuccess, trace_idtrace-7f3a, ) print(entry.entry_id, entry.entry_hash) # UUID 与 SHA-256 ok, err audit.verify_integrity() assert ok, err # 全链哈希校验verify_integrity()返回两个值布尔结果与错误原因。True表示整条链每一环的哈希都衔接无误。一次log()调用就把活儿干完了先构造AuditEntry再由MerkleAuditChain.add_entry()完成哈希链接并更新 Merkle 树配置了外部 sink 时同步落盘随后按agent_did与event_type建好反向索引查询即插即用。一条审计记录长什么样字段与查询方式字段速览每条AuditEntry的核心字段如下字段含义entry_id唯一 UUIDtimestampUTC 时间戳event_typetool_invocation/tool_blocked/policy_evaluation/policy_violation/rogue_detection/agent_invocationagent_did行为 Agent 的 DIDactionallow/deny/audit/quarantine/warningresource访问的资源target_did目标 Agent委派场景outcomesuccess/failure/denied/errorprevious_hash/entry_hash上一条哈希与本条 SHA-256trace_id/session_id跨环节关联标识data放任意元数据敏感信息写入时会被剥掉。log()还接受一组仅限关键字的高级参数issued_at、completed_at、approver_did、arguments_hash、policy_version用来记录决策-执行时间线与审批链身份防的是参数静默篡改和策略降级重放。怎么查query()的过滤条件可任意组合结果恒为按时间升序的最近limit条内部取results[-limit:]时间比较一律基于 UTCdenied audit.query( event_typetool_blocked, outcomedenied, start_timeyesterday, # UTC 时间窗起点 limit200, )只有单一条件时用get_entries_for_agent()或get_entries_by_type()两者都走反向索引返回最近的limit条适合某 Agent 最近 100 次操作这类高频运维提问。导出侧export()返回含merkle_root与条目列表的字典export_cloudevents()则把每条包成 CloudEvents v1.0 信封如tool_invocation→ai.agentmesh.tool.invoked信封里带agentmeshentryhash与agentmeshprevioushash消费端也能独立核验链完整性。Merkle 链如何做到防篡改root 哈希与包含性证明链的结构不复杂root / \ H(AB) H(CD) / \ / \ H(A) H(B) H(C) H(D) 叶子 SHA-256(entry)新条目先拿到上一条的entry_hash填进previous_hash再算出自己的entry_hash增量更新树路径容量不够时叶层翻倍补0*64占位节点父层自底向上重算。由此得到三条性质只增不改条目无法删除或重排篡改可见动任何一条root 哈希立刻变化证明高效证明某条存在只需 O(log n) 个哈希不用拖整本日志。get_proof()从叶子往上爬用兄弟节点索引异或idx ^ 1收集 (hash, position) 对verify_proof()按position决定拼接顺序——right是current siblingleft是sibling current——逐层重算直到抵达 root。proof audit.get_proof(entry.entry_id) print(proof[merkle_root], proof[verified]) # 根哈希与自检结果 # 外部验证者只需条目哈希、证明与公布的 root from agentmesh.governance.audit import MerkleAuditChain ok MerkleAuditChain.verify_proof( entry_hashabc123..., proof[(def456..., left), (789aaa..., right)], root_hashexpected-root..., ) print(在链中:, ok)这套设计的价值在于角色分离持有日志的一方无法事后偷改记录——任何改动都会被 root 哈希的变化暴露外部审计员不用读完整日志就能验证任意一条的存在性。定期公布 root 哈希就有了对外的验证锚点。让审计轨迹落盘签名的 FileAuditSink 与自定义 SinkFileAuditSink带 HMAC 签名的文件内存链适合开发生产要持久化开箱即用的是FileAuditSinkfrom agentmesh.governance.audit_backends import FileAuditSink sink FileAuditSink( pathaudit_trail.jsonl, secret_keybchange-me-to-a-real-secret, max_file_size50 * 1024 * 1024, # 50MB 自动轮转 ) audit AuditLog(sinksink) audit.log(event_typetool_invocation, agent_diddid:web:agent.example.com, actionallow, resource/api/data, outcomesuccess) print(sink.verify_integrity()) # (True, None) for se in sink.read_entries(): # 读回带签名的条目 print(se.entry_id, se.content_hash[:16], se.signature[:16]) sink.close()文件里每行一个 JSON 对象文件级完整性比内存链更硬content_hash是对规范 JSON 载荷排除content_hash、signature与执行上下文字段的 SHA-256再对 content hash 用调用方密钥做HMAC-SHA256签名verify()哈希与签名双查。写入走O_APPEND | O_CREAT | O_NOFOLLOW加0600权限拒绝跟随符号链接审计内容不对外可读。文件达到max_file_size时自动轮转重命名为带 UTC 时间戳的*.jsonl并重置链也兼容 logrotate 式外部替换按(st_dev, st_ino)察觉文件被换走重新续链。⚠️ 恢复续链时若既有链无法用当前密钥验证FileAuditSink直接拒绝启动——fail-closed不在未经验证的文件上追加。实现自己的 SinkAuditSink是个runtime_checkable协议可用isinstance直接校验实现把它实现掉条目就能推给数据库或消息队列class PostgresSink: def __init__(self, dsn): self._conn psycopg2.connect(dsn) def write(self, entry): # INSERT INTO audit_log (entry_id, entry_hash, ...) VALUES (...) self._conn.commit() def verify_integrity(self): return True, None # 对 DB 行实现链校验 def close(self): self._conn.close()仓库另附StdoutAuditSink每行一个 JSON 打到 stdout用类级锁串行化写入适合容器与日志采集侧车消费但它不做签名与链校验要密码学完整性就用FileAuditSink。OWASP ASI 2026 合规检查把 agt verify 接进流水线agt verify逐项核对控制项agent-governance-toolkit包负责验证部署对 OWASP ASI 2026 十项控制的覆盖pip install agent-governance-toolkit agt verifyOWASP ASI 2026 Governance Verification OK ASI-01 Prompt Injection PromptInjectionDetector ... OK ASI-10 Behavioral Anomaly ComplianceEngine Coverage: 10/10 (100%)十项控制与满足它的组件编号风险治理组件ASI-01提示注入PromptInjectionDetectorASI-02不安全工具使用ToolAliasRegistryASI-03过度授权NativeAdapterRuntimeASI-04越权升级EscalationPolicyASI-05信任边界破坏CardRegistryASI-06日志不足AuditChainASI-07不安全身份AgentIdentityASI-08策略绕过PolicyConflictResolverASI-09供应链完整性IntegrityVerifierASI-10行为异常ComplianceEngine验证器逐个导入控制模块并查找组件类能导入即视为该控制已部署动态导入被限制在 AGT 专属模块前缀白名单内防止验证流程本身变成任意代码执行入口。任一控制缺失命令以退出码1结束流水线步骤随之失败。 机器可读模式下错误是脱敏的已知异常输出ValidationError未知异常保持 opaque 的InternalError仅AGENTOS_DEBUG1才暴露底层消息——避免流水线日志泄露内部细节。agt integrity查文件与字节码篡改agt integrity --generate integrity.json # 生成基线清单 agt integrity --manifest integrity.json --json # 对照清单验证它查两层文件哈希治理模块源文件的 SHA-256与函数字节码哈希——对PolicyEngine.evaluate、AuditChain.add_entry、CardRegistry.is_verified等关键函数做marshal.dumps(func.__code__)覆盖co_code、co_names、co_consts与嵌套 code 对象防的是同 opcode 但改名引用的热修补绕过。语义是 fail-closed配置了清单后缺某模块条目即失败损坏的清单直接抛错拒绝启动——堵死了删条目掩盖篡改的后门。流水线门禁失败即阻断# .github/workflows/compliance.yml精简 jobs: compliance: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - run: pip install agentmesh-platform agent-governance - run: agt integrity --generate integrity.json - run: agt verify --json asi_report.json - run: agt integrity --manifest integrity.json --json integrity_report.json - if: always() uses: actions/upload-artifactv4 with: name: compliance-reports path: | asi_report.json integrity_report.json程序化场景用GovernanceVerifier拿 attestation可与审计导出、链校验拼成一份完整的审计员证据包from agent_compliance.verify import GovernanceVerifier att GovernanceVerifier().verify() print(att.passed, att.coverage_pct(), att.attestation_hash) # compliance_grade() 给 A-F 等级verify_evidence() 对 # 运行时 agt-evidence.json 逐项检查证据失败默认强制 passedFalse三句话收尾记录防篡改靠 Merkle 链加可选的 HMAC 文件签名root 哈希就是验证锚点合规可检查agt verify逐项核对十项 ASI 控制退出码 1 自动阻断部署供应链可核验agt integrity用清单盯住源文件与字节码。核心源码入口仓库相对路径AuditLog 与 MerkleAuditChain 实现FileAuditSink 与 AuditSink 协议GovernanceVerifier 与 ASI 控制表IntegrityVerifier 供应链完整性agt CLI 入口【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表