限設(shè)計(jì)構(gòu)建只讀安全審計(jì) Agent)
claude-howto 的 secure-reviewer 子代理用最小權(quán)限設(shè)計(jì)構(gòu)建只讀安全審計(jì) Agent【免費(fèi)下載鏈接】claude-howtoA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto本文以 claude-howto 倉(cāng)庫(kù)中的 secure-reviewer 子代理 為核心完整解析這個(gè)最小權(quán)限安全審計(jì) Agent的設(shè)計(jì)與配置從 YAML frontmatter 的權(quán)限聲明、五類(lèi)安全審查焦點(diǎn)、可直接復(fù)制的漏洞檢索命令到標(biāo)準(zhǔn)化的漏洞報(bào)告輸出格式。讀完之后你可以把它復(fù)制到自己的項(xiàng)目.claude/agents/目錄中立即在 Claude Code 里獲得一個(gè)只能讀、不能改、不能執(zhí)行的安全審查員。角色定位一個(gè)被鎖死權(quán)限的安全專(zhuān)家secure-reviewer是一個(gè) Claude Code 子代理subagent的完整定義文件它由 YAML frontmatter 加 Markdown 系統(tǒng)提示詞兩部分構(gòu)成。frontmatter 聲明了 Agent 的身份與能力邊界--- name: secure-reviewer description: Security-focused code review specialist with minimal permissions. Read-only access ensures safe security audits. tools: Read, Grep model: inherit ---幾個(gè)關(guān)鍵字段的含義可對(duì)照倉(cāng)庫(kù)中 子代理完全參考指南 的配置字段表name: secure-reviewer唯一標(biāo)識(shí)符遵循小寫(xiě)字母加連字符的命名規(guī)范調(diào)用時(shí)用它指名道姓。description自然語(yǔ)言說(shuō)明該 Agent 何時(shí)被調(diào)用。description不僅描述用途還會(huì)影響 Claude 的自動(dòng)委派判斷——在 claude-howto 的其他示例中description里寫(xiě)入 use PROACTIVELY 之類(lèi)的措辭可以促進(jìn)自動(dòng)調(diào)用。本例的 description 強(qiáng)調(diào)最小權(quán)限 只讀點(diǎn)明了它的審計(jì)屬性。tools: Read, Grep這是整個(gè)設(shè)計(jì)的靈魂。根據(jù)子代理參考文檔tools字段省略時(shí)會(huì)繼承全部工具而這里顯式收窄為僅兩個(gè)只讀工具。model: inherit繼承主會(huì)話的模型避免為一個(gè)純審查任務(wù)單獨(dú)指定模型。系統(tǒng)提示詞部分開(kāi)宗明義地聲明了能力清單原文即是一份權(quán)限說(shuō)明書(shū)你是一名只專(zhuān)注于識(shí)別漏洞的安全專(zhuān)家。本 Agent 按設(shè)計(jì)只擁有最小權(quán)限可以讀取文件進(jìn)行分析可以搜索模式不能執(zhí)行代碼不能修改文件不能運(yùn)行測(cè)試這確保審查者在安全審計(jì)期間不會(huì)意外破壞任何東西。為什么要把權(quán)限鎖死從源碼結(jié)構(gòu)看子代理在獨(dú)立于主會(huì)話的上下文窗口中運(yùn)行其工具集完全由 frontmatter 決定。安全審計(jì)是典型的長(zhǎng)流程任務(wù)——要逐個(gè)文件地讀、逐條模式地搜一旦 Agent 被賦予Write、Edit、Bash等工具就存在兩類(lèi)風(fēng)險(xiǎn)一是審計(jì)過(guò)程中誤改代碼污染了本應(yīng)原樣取證的代碼庫(kù)二是審查工具本身可能被被審代碼中的陷阱內(nèi)容誤導(dǎo)而執(zhí)行危險(xiǎn)操作。把工具面收窄到ReadGrep等于從機(jī)制上排除了這兩類(lèi)風(fēng)險(xiǎn)——這也是 ja/04-subagents/README.md 在最佳實(shí)踐中強(qiáng)調(diào)的工具訪問(wèn)要限制——只授予 Agent 目的所需的工具這一原則的落地范例。安全審查的五大焦點(diǎn)系統(tǒng)提示詞給secure-reviewer劃定了五個(gè)審查領(lǐng)域這基本對(duì)齊 OWASP 的經(jīng)典分類(lèi)。以下是原文檔的完整清單認(rèn)證問(wèn)題Authentication Issues弱密碼策略缺少多因素認(rèn)證MFA會(huì)話管理缺陷授權(quán)問(wèn)題Authorization Issues破損的訪問(wèn)控制權(quán)限提升缺失的角色檢查數(shù)據(jù)暴露Data Exposure日志中的敏感數(shù)據(jù)未加密的存儲(chǔ)API 密鑰暴露PII個(gè)人身份信息處理注入漏洞Injection VulnerabilitiesSQL 注入命令注入XSS跨站腳本LDAP 注入配置問(wèn)題Configuration Issues生產(chǎn)環(huán)境開(kāi)啟調(diào)試模式默認(rèn)憑據(jù)不安全的默認(rèn)值這五個(gè)類(lèi)別覆蓋了安全審計(jì)中人和配置層面的多數(shù)入口認(rèn)證與授權(quán)決定誰(shuí)能動(dòng)數(shù)據(jù)暴露決定秘密藏得深不深注入決定輸入邊界守不守得住配置問(wèn)題則是最常見(jiàn)也最容易被忽視的低垂果實(shí)。審查時(shí)按此清單逐項(xiàng)過(guò)能保證報(bào)告不遺漏常見(jiàn)類(lèi)別。漏洞檢索模式可直接運(yùn)行的 grep 命令包原文檔給出了一組針對(duì)硬編碼密鑰、SQL 注入與命令注入的檢索命令。這些命令同時(shí)服務(wù)于兩種場(chǎng)景Claude 的Grep工具內(nèi)部檢索時(shí)的模式參考以及開(kāi)發(fā)者手動(dòng)對(duì)倉(cāng)庫(kù)做快速掃描時(shí)的現(xiàn)成腳本# 硬編碼密鑰Hardcoded secrets grep -r password\s* --include*.js --include*.ts grep -r api_key\s* --include*.py grep -r SECRET --include*.env* # SQL 注入風(fēng)險(xiǎn) grep -r query.*\$ --include*.js grep -r execute.*% --include*.py # 命令注入風(fēng)險(xiǎn) grep -r exec( --include*.js grep -r os.system --include*.py逐條拆解這些模式背后的意圖命令目標(biāo)語(yǔ)言命中的風(fēng)險(xiǎn)信號(hào)grep -r password\s* --include*.js --include*.tsJS/TS源碼里直接給密碼變量賦值而非從環(huán)境變量讀取grep -r api_key\s* --include*.pyPython硬編碼 API key 的賦值語(yǔ)句grep -r SECRET --include*.env*環(huán)境文件.env系列文件中的密鑰定義用于核對(duì)是否被提交進(jìn)了版本庫(kù)grep -r query.*\$ --include*.jsJS字符串拼接構(gòu)造查詢(xún)\$匹配美元符號(hào)即模板插值/拼接痕跡SQL 注入的經(jīng)典形態(tài)grep -r execute.*% --include*.pyPython用%格式化直接拼進(jìn)execute參數(shù)未走占位符綁定grep -r exec( --include*.jsJSexec/execSync類(lèi)調(diào)用輸入不可信時(shí)即命令注入grep -r os.system --include*.pyPythonos.system直接走 shell 解析是注入高發(fā) API需要說(shuō)明適用前提這些模式是高召回、低精度的初篩——例如password 空值、測(cè)試夾具里的假密鑰都會(huì)命中最終定性要結(jié)合上下文由 Agent或人判斷。這正是secure-reviewer采用ReadGrep雙工具的原因Grep負(fù)責(zé)快速縮小包圍圈Read負(fù)責(zé)打開(kāi)命中的文件確認(rèn)上下文。標(biāo)準(zhǔn)化的漏洞報(bào)告輸出格式一個(gè)只讀審查 Agent 的最終產(chǎn)物是報(bào)告。原文檔為每條漏洞規(guī)定了固定的六字段輸出結(jié)構(gòu)Severity嚴(yán)重度Critical / High / Medium / LowType類(lèi)型OWASP 分類(lèi)Location位置文件路徑與行號(hào)Description描述該漏洞是什么Risk風(fēng)險(xiǎn)被利用后的潛在影響Remediation修復(fù)建議如何修復(fù)這套格式的價(jià)值在于可機(jī)讀、可排序按 Severity 降序排列即可得到修復(fù)優(yōu)先級(jí)Location 字段讓每條發(fā)現(xiàn)都能直接跳轉(zhuǎn)定位Type 字段則讓不同審查報(bào)告可以按 OWASP 類(lèi)別聚合統(tǒng)計(jì)。對(duì)團(tuán)隊(duì)來(lái)說(shuō)這意味著安全審計(jì)結(jié)果可以直接進(jìn)入 issue 跟蹤流程而不是散落在自由文本里。安裝與調(diào)用方式根據(jù) ja/04-subagents/README.md 的安裝步驟把該子代理用起來(lái)有三種途徑推薦前兩種方式一復(fù)制進(jìn)項(xiàng)目項(xiàng)目級(jí)作用域# 進(jìn)入你的項(xiàng)目 cd /path/to/your/project mkdir -p .claude/agents cp /path/to/claude-howto/ja/04-subagents/secure-reviewer.md .claude/agents/方式二復(fù)制進(jìn)用戶目錄全局作用域mkdir -p ~/.claude/agents cp /path/to/claude-howto/ja/04-subagents/secure-reviewer.md ~/.claude/agents/驗(yàn)證安裝在 Claude Code 中運(yùn)行/agents應(yīng)能看到secure-reviewer與內(nèi)置代理一同列出。同名代理同時(shí)存在于多級(jí)作用域時(shí)加載優(yōu)先級(jí)為CLI--agents定義僅當(dāng)前會(huì)話 項(xiàng)目級(jí).claude/agents/ 用戶級(jí)~/.claude/agents/ 插件級(jí)agents/高優(yōu)先級(jí)覆蓋低優(yōu)先級(jí)claude agents命令還會(huì)標(biāo)出被覆蓋override的項(xiàng)。三種調(diào)用方式自動(dòng)委派——主 Agent 根據(jù)任務(wù)描述與description字段自行決定是否轉(zhuǎn)交顯式指名——對(duì)話中直接說(shuō)用 secure-reviewer 子代理審查這個(gè)模塊-mention 強(qiáng)制調(diào)用——secure-reviewer可繞過(guò)自動(dòng)委派的啟發(fā)式判斷確保該 Agent 被喚起。此外還可以用claude --agent secure-reviewer把整個(gè)會(huì)話跑成以它為主代理的模式或ctrlscrollback場(chǎng)景下把長(zhǎng)審計(jì)任務(wù)CtrlB轉(zhuǎn)入后臺(tái)執(zhí)行。倉(cāng)庫(kù)縱深與它配套的兩類(lèi)安全組件在 claude-howto 倉(cāng)庫(kù)中secure-reviewer并不是孤立存在還有兩個(gè)值得對(duì)照的安全組件分別代表更寬的權(quán)限面和更自動(dòng)的觸發(fā)時(shí)機(jī)。1. pr-review 插件中的 security-reviewer權(quán)限更寬pr-review 插件 自帶一個(gè) security-reviewer 代理frontmatter 為tools: Read, Grep, Bash——比secure-reviewer多了一個(gè)Bash。它的審查清單與本文介紹的五大焦點(diǎn)一致認(rèn)證/授權(quán)、數(shù)據(jù)暴露、注入、安全配置配套的 check-security 命令 還會(huì)追加加密弱點(diǎn)與日志中的敏感數(shù)據(jù)兩項(xiàng)??梢酝茢喽喑龅腂ash是為了讓代理在 PR 審查時(shí)運(yùn)行 git diff、調(diào)用外部掃描器之類(lèi)需要命令行的動(dòng)作。這正好構(gòu)成一組對(duì)照做純靜態(tài)只讀審計(jì)用secure-reviewerRead, Grep做需要執(zhí)行檢測(cè)工具的 PR 安全門(mén)禁用插件版Read, Grep, Bash——權(quán)限面與任務(wù)需求精確匹配這正是子代理設(shè)計(jì)的核心紀(jì)律。2. security-scan.shPostToolUse 鉤子時(shí)機(jī)更早security-scan.sh 是一個(gè)綁定在PostToolUsematcher 為Write事件上的鉤子腳本在每次文件寫(xiě)入之后自動(dòng)運(yùn)行與事后審查的secure-reviewer形成互補(bǔ)。它的檢測(cè)面更細(xì)可以對(duì)照原文檔的 grep 包來(lái)看硬編碼密碼同時(shí)匹配 JSON 形式password: value與代碼形式password valueAPI 密鑰匹配api_key/apikey/access_token的 JSON 賦值通用 secret/token 賦值私鑰文件BEGIN.*PRIVATE KEY特征AWS 訪問(wèn)密鑰AKIA[0-9A-Z]{16}格式若環(huán)境中裝有semgrep或trufflehog還會(huì)靜默調(diào)用它們做深度掃描。發(fā)現(xiàn)可疑內(nèi)容時(shí)腳本按 Claude Code 鉤子協(xié)議輸出hookSpecificOutput.additionalContext的 JSON向 Agent 注入一條非阻斷式警告提示改用環(huán)境變量而不是中斷流程。腳本開(kāi)頭還刻意跳過(guò)二進(jìn)制文件與node_modules、.git、dist、build等目錄避免噪音。兩者組合起來(lái)是一條完整的安全防線security-scan.sh在寫(xiě)入瞬間攔截新引入的密鑰secure-reviewer在審計(jì)時(shí)點(diǎn)對(duì)整個(gè)代碼庫(kù)做結(jié)構(gòu)化深查pr-review 插件則把審查動(dòng)作固化進(jìn) PR 流程。設(shè)計(jì)啟示最小權(quán)限如何落到一行 frontmatter回到secure-reviewer這個(gè)文件本身它示范了子代理安全設(shè)計(jì)的三個(gè)要點(diǎn)能力即聲明tools: Read, Grep一行就把不能執(zhí)行、不能改、不能跑測(cè)試從口頭約定變成了機(jī)制約束——Agent 連嘗試破壞的入口都沒(méi)有提示詞即審計(jì)清單五大審查焦點(diǎn) 檢索模式 六字段輸出格式讓每次審計(jì)的范圍和產(chǎn)物格式都確定可預(yù)期不同項(xiàng)目間結(jié)果可比審計(jì)者與被審者隔離審計(jì)過(guò)程對(duì)代碼庫(kù)零寫(xiě)入保證審查不留痕與主會(huì)話的上下文也相互隔離長(zhǎng)審計(jì)不污染主對(duì)話。如果你需要在自己的項(xiàng)目里落地這套實(shí)踐最直接的路徑就是把 ja/04-subagents/secure-reviewer.md 復(fù)制為項(xiàng)目?jī)?nèi).claude/agents/secure-reviewer.md用/agents驗(yàn)證加載再按需追加 OWASP 之外與你技術(shù)棧相關(guān)的檢索模式——權(quán)限聲明保持Read, Grep不動(dòng)這是它全部安全性的來(lái)源。【免費(fèi)下載鏈接】claude-howtoA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考