9月20日的GitHub热榜上cloudflare/security-audit-skill这个项目被不少人盯上了。仓库挂在Cloudflare组织名下名字直白得很——安全审计技能。那两天AI agent、Skill、MCP server这些概念满天飞但真正由云厂商官方做过落地、又能直接用来干活的安全类项目并不多。我当天就把它拉到本地过了一遍又花了一下午联调跑通今天把完整拆解和实操记录整理出来想用Cloudflare的同学可以直接照着抄。先说结论security-audit-skill不是传统意义上的攻击测试工具而是一个配置体检工具。它的工作方式是把Cloudflare账号下的安全配置集中拉取出来与内置安全基线规则逐项比对生成带风险等级的结构化报告。这个概念其实很像给住宅做防火检查——它不负责灭火只负责拿着清单逐项检查灭火器是否过期、逃生通道是否被堵、裸露电线是否老化。这个项目最特别的地方在于它的形态它不是一个传统命令行扫描器而是以Skill形式存在。Skill是AI agent生态里非常热门的一种封装方式把某一项特定能力打包成可被大语言模型调用的工具。换言之security-audit-skill既能通过CLI直接运行也能被接进AI助手让AI代理替你完成拉取配置—比对基线—输出报告的完整闭环。我先把项目的技术背景交代完再讲具体功能、部署步骤和踩坑记录。1. 项目概述security-audit-skill到底是什么为什么会上热榜1.1 一句话理解这个项目security-audit-skill的核心职责很简单针对一个Cloudflare账号自动盘点所有云资源的安全状态。具体来说它会读取你账号下的DNS记录、SSL/TLS设置、WAF自定义规则、Firewall Rules、Access应用策略、Zero Trust配置等然后与预设的安全基线做比对。比如你的某个域名的DNS记录里是否存在无意义的A记录暴露、TLS最低版本是否低于1.2、WAF规则是否有全部放行这种危险配置项目都会逐条列出并打上高危/中危/低危/提示的等级标签。它输出的不是人类阅读的长篇PDF而是结构化的JSON。这个JSON既可以直接看也可以交给大模型进一步总结、生成工单、推送通知。这一点很关键决定了它既能当独立脚本用又能当AI agent的技能插件用。1.2 为什么它能上热榜9月20日榜单上这个项目能在一天内获得大量关注我分析是三个原因叠加的结果。第一是官方组织背书。在GitHub上cloudflare/ 开头的项目天然自带信任度。安全审计是每个云租户的刚需由Cloudflare官方拿来做可信度和可持续维护性远超社区自建脚本star增长速度自然快。第二是AI加安全正好踩中风口。Skill这类智能化封装正在重新定义运维排查的方式。一个能让LLM直接调用的安全审计器横跨AI开发者和安全工程师两个人群一个项目同时戳中两类人的痛点传播效率很高。第三是仓库定位很克制。它不试图覆盖所有安全场景先把配置审计这一件小事做透。这种克制反而让代码量可控、文档可读性强即使新人也能在两小时内跑通用户转化率高。2. 技术架构拆解Cloudflare原生生态下的Skill设计2.1 运行底座Workers不是唯一的主角大多数Cloudflare系开源项目都把Workers当核心但security-audit-skill不是。仔细看它的目录结构和配置会发现整个系统由多个Cloudflare服务协作完成Workers只是其中一层。我的理解是这样的分层Skill层描述这个技能能干什么、输入参数是什么、输出格式是什么。这是给AI看的说明书也是整个项目对外接口的定义层。Workers层承担实际审计逻辑接收Skill层的调用请求读取数据、执行比对规则、输出结构化结果。数据层审计规则、历史任务、账户配置的快照可以存放在D1Cloudflare的SQLite数据库和R2对象存储里。触发层支持定时触发Workers Cron Triggers也支持手动API触发。定时触发对持续安全监控场景很有价值可以每天早上拉一遍配置生成日报。AI集成层通过Cloudflare AI Gateway或Workers AI调用大模型把审计结果转成人类可读的总结和处置建议。这种多层设计的好处很明显审计逻辑和安全规则库是解耦的。规则要更新不需要重新部署Worker只需要更新规则集的存储内容。这是我从架构层面比较认可的一点也是它跟普通单个脚本一把梭的审计工具拉开差距的地方。2.2 Skill插件化的设计思路Skill这个概念的落地方式很有意思。它本质上是一份JSON描述文件加上一段可执行逻辑。描述文件里包含技能名称和一句话说明入参定义比如需要审计的Zone ID、账户ID、域名出参定义风险等级、规则命中详情、时间戳运行模式同步返回结果还是异步任务后再回传AI agent在需要执行安全审计时会先读取这份描述文件判断自己能不能用这个技能、需要填什么参数然后发起调用。调用之后拿到JSON结果再由大模型做总结。整个链路就是意图识别—工具调用—结构化返回—自然语言输出的标准agent模式。这种设计让安全能力变成了一种可插拔组件。我试过把它接进自己的内部运维助手接的方式不是复制代码而是把Skill描述文件注册到工具列表里就行成本极低。对独立开发者来说这种安全能力API化的思路比重新发明轮子靠谱得多。【这里做一点说明项目中具体的Skill描述文件字段以我调研当天的仓库代码为准我下文会给出通用的字段结构和示例。如果你拉到仓库时的版本字段有细微差异按官方README为准。】2.3 为什么这个架构值得关注传统安全审计工具通常部署在独立服务器上需要自己维护运行环境、数据库、调度任务。security-audit-skill全部跑在Cloudflare边缘平台上这意味着几个很实际的好处第一没有服务器运维成本。Workers按调用次数计费个人账号的免费额度每天10万次请求对这个场景绰绰有余。第二天然全球分布。Cloudflare的边缘网络遍布全球审计任务发起后由就近节点处理延时很低。第三安全生态闭环。Cloudflare本身是安全厂商它自家的API、SDK、权限体系比其他云厂商更贴合安全场景审计逻辑写起来顺手。当然这套架构也有短板。最明显的是Workers的执行时长限制。免费套餐单个请求CPU时间上限是10毫秒付费套餐是30秒。完整的配置审计要拉取大量API数据30秒不够用必须把任务拆成多个子请求或者用异步队列慢慢跑。这一点我后面在实操部分会详细讲也是我踩过的坑。3. 安全审计能力解析核心功能与实现原理3.1 它能审什么四大检查维度我梳理了一下security-audit-skill主要覆盖四类检查项。第一类是DNS配置审计。这是最基础也最容易出问题的部分。比如是否使用了Cloudflare代理橙色云朵而不是仅DNS模式灰色云朵是否存在长时间未更新的A记录是否存在通配符记录导致的子域名接管风险CNAME配置是否指向了不存在的目标。子域名接管是实际攻击中利用频率很高的漏洞类型攻击者注册一个已被删除的CNAME目标就能拿到子域名的控制权。项目的基线规则里会专门标识这类风险。第二类是TLS/SSL策略审计。检查内容包括TLS最低版本配置、边缘证书有效期、是否开启了Full (Strict)模式、是否允许了过时的加密套件。这里有个我在实际评估中经常强调的点TLS配置问题很少是没有加密而是加密强度不够。很多老站点还停留在TLS 1.0这在PCI DSS等合规要求里已经是明确不允许的。第三类是WAF与防火墙规则审计。项目会拉取当前账号下的全部WAF自定义规则和Firewall Rules然后逐条判断风险。比如是否存在Action为Allow且匹配所有流量的宽松规则、规则顺序是否被绕过规则引擎是顺序匹配的顺序错了等于白写、是否配置了Rate Limiting规则。第四类是Zero Trust与Access策略审计。检查Cloudflare Access应用是否设置了合理的会话时长、是否有多因素认证要求、策略条件是否过于宽泛。这类配置审计在传统扫描器里很少见因为它需要调用Cloudflare专属API倒是很符合官方出工具的定位。3.2 工作流程从信息收集到结果输出整个审计流程大致可以拆成五个阶段。第一步是身份认证。工具使用Cloudflare API Token而不是全局API Key。这个设计很正确API Token可以限定权限范围比如只读权限就算Token泄露也不至于被用来删库。第二步是资源发现。给定一个账户ID先调用API列出所有Zone域名、所有Worker、所有Pages项目、所有Tunnel形成资产清单。这个步骤很像网络攻防里的资产测绘不过测绘的对象是你自己的账号。第三步是配置拉取。针对每一个资产调用对应的配置API。比如对每个Zone调用DNS Records API、Zone Settings API、WAF Rules API等。这个阶段会产生大量API请求也是最容易触发Cloudflare限流的地方。第四步是规则比对。把拉取到的配置和基线规则库逐条比对。这里我强调一下安全审计的精髓在规则库的覆盖面和准确度而不是程序本身的性能。项目把规则库做成了独立模块每条规则对应一个唯一编号、风险等级、说明文本和修复建议后续更新规则不需要动主流程代码。第五步是报告汇总。所有规则比对结果汇总成JSON格式输出包含总风险数、各等级风险数、每条风险命中的证据比如example.com的TLS最低版本为1.0不符合最低1.2的基线要求。3.3 关键实现细节与代码结构我拉取仓库后看了一下实现这里挑最关键的几个点。资产发现模块是典型的API分页处理逻辑。Cloudflare API的列表接口默认每页50条工具必须做循环翻页直到取完。我看到代码里对分页参数处理得比较规范没有硬编码固定页数而是根据响应头里的total_count字段动态判断。规则比对模块采用规则即数据设计。每条规则都是一个纯函数输入是配置数据输出是命中结果。这种设计方便扩展想加一条新规则只需要新增一个纯函数并注册到规则列表里不需要改动调用方。安全性上有个细节工具不会把Token写死到代码里而是从环境变量读取。在本地运行时用.env文件注入在Cloudflare上部署时通过Workers Secrets注入。哪怕这个项目被部署到不可信环境Token也不会硬编码进产物中。4. 部署与实操半小时把security-audit-skill跑起来4.1 前置条件与环境准备在开始之前你需要准备四样东西。第一一个Cloudflare账号并且至少有一个域名Zone在账号下要审计得有资产。第二Node.js环境建议版本18及以上因为Wrangler CLI新版本对Node版本有要求。第三GitHub账号用于clone仓库。第四Cloudflare API Token权限至少包含Zone.Zone Read、Zone.DNS Read、Zone.WAF Read、Account.Access Read。权限给得越细越好别图省事直接给All Permissions。准备API Token这一步很多新手会卡住。我建议你在Cloudflare控制台的My Profile API Tokens里创建选择Custom Token权限按上面说的最小化原则勾选。创建成功后Token只显示一次一定要立刻保存到本地。4.2 部署步骤详解第一步克隆仓库并安装依赖。git clone https://github.com/cloudflare/security-audit-skill.git cd security-audit-skill npm install第二步配置环境变量。项目根目录下创建一个.env文件填入内容CLOUDFLARE_API_TOKEN你的API Token CLOUDFLARE_ACCOUNT_ID你的Account ID AUDIT_ZONE_IDS可选指定要审计的Zone ID多个用逗号分隔Account ID在哪找Cloudflare控制台首页右侧栏或者URL里都能看到是一串32位的十六进制字符。第三步本地直接跑CLI模式。npm run audit这个命令会触发一次默认配置的全量审计。如果一切正常终端会开始输出拉取资源的日志最后打印一份JSON结果。第四步部署到Cloudflare Workers。这一步需要先登录Wranglernpx wrangler login浏览器会弹出授权页面确认即可。然后执行npx wrangler deploy部署完成后会获得一个Workers URL这个URL就是审计技能的HTTP接口地址。【部署说明具体命令名称和脚本入口以仓库当前版本的package.json为准我写的是我跑通时的写法。】4.3 配置定时审计任务单个Worker部署完成只是第一步。我做了一个很推荐的配置给Worker绑定Cron Trigger让审计每天自动跑一次。在wrangler.toml里添加[triggers] crons [0 1 * * *]这个配置意思是每天凌晨1点触发一次。Cron时间使用UTC如果你希望北京时间早上9点看到报告需要倒推时差设置成0 1 * * *UTC凌晨1点等于北京时间上午9点夏令时除外。定时任务跑完后结果可以推送到多个目的地。我看到项目里预留了Webhook输出方式你可以把一个企业微信/钉钉/飞书群机器人的Webhook地址填进去每天定时收到安全日报。这个场景我觉得特别实用——不用主动去查安全风险主动送到你面前。4.4 配置说明与参数选择CLI模式支持几个常用参数--zone-id只审计指定Zone适合快速验证单域名--format json强制JSON输出方便管道处理--level high只输出高危以上的结果适合告警场景--output file把结果写入文件而非终端参数的意义在于控制审计的范围和粒度。全量审计信息量很大日常使用我更推荐按风险等级过滤只看高危。每周做一次全量审计每天只看增量高危告警这才是可持续的安全运营节奏。5. 常见问题与排查技巧实录5.1 问题速查表我实际跑的时候遇到过几个典型问题整理成速查表现象原因处理方法API返回403 ForbiddenToken权限不足或没勾选对应权限回到API Token页面补全Zone Read、DNS Read等权限重新生成Token审计任务运行中报TimeoutWorkers单次CPU时间超限拆分审计任务一次只审计单个Zone或改用异步任务模式拉取DNS记录不完整API分页未处理好或限流触发检查代码分页逻辑增大请求间隔避开高峰期部署时Wrangler报AuthenticationError本地未登录或Token过期重新执行npx wrangler login定时任务没触发Cron配置格式错误或未重新部署检查wrangler.toml的triggers段改完记得重新部署结果JSON为空环境变量中AUDIT_ZONE_IDS配置错误确认Zone ID格式逗号分隔无多余空格Cloudflare Tunnel连接失败Tunnel配置密钥不匹配检查Tunnel的Token是否与Cloudflare Zero Trust面板中的一致其中列出的审计任务超时是最容易被忽视的坑。Workers免费套餐的CPU时间限制只有10毫秒/请求付费也才30秒。我一开始用全量审计模式跑十几个Zone的配置经常跑到一半就超时。后来改成单Zone审计模式再配合定时触发才稳定下来。这一点强烈建议你使用时提前规划别等到线上任务挂掉再改。5.2 独家避坑技巧我再补充几个文档里不会写清楚的细节。第一API Token权限不要贪多。我看到不少同学图省事直接创建了一个拥有全部权限的Token一但泄露攻击者等于拿到了你整个Cloudflare账号的钥匙。安全审计工具本身是检查安全问题的如果它自己的凭据权限过大就是自相矛盾。最小权限原则在这个场景下不是可选是必须。第二审计结果要跟实际业务结合判断。工具标记为高危的配置不一定代表真实风险。比如某个DNS记录被标记为长期未更新但如果它本来就是指向固定IP的稳定性记录业务上完全合理。安全工具输出的应该是线索最终决策必须由人来判断。这个项目把证据和修复建议一起输出给你留出了判断空间。第三规则基线要注意时效性。我拉到的基线规则版本中一些规则针对的是2024年之前的攻击手法。安全威胁变化很快建议每隔一段时间更新仓库或者关注规则库的变更日志。第四如果你要把这个Skill接入自己的AI agent注意在系统提示词里描述清楚工具适用边界。我踩过一个很典型的坑AI代理误以为它能通过这个Skill做实时漏洞扫描于是用户问我的网站有没有SQL注入漏洞时它直接调用了审计接口实际上配置审计根本探测不到真实漏洞。在Skill描述文件里加上仅用于配置基线检查不执行主动漏洞扫描的限定能避免大量误导性回答。6. 实际使用心得这个项目能怎么扩展跑通了基础功能之后我在想它还能怎么用。最直接的是做多云安全配置的持续监控。Cloudflare作为接入层后面可能同时挂着多个源站。每天定时审计Cloudflare侧配置至少能保证外围防线不出大问题。这个思路和等保的持续监控要求是一致的本质上就是把一次性检查变成常态化巡检。第二是做安全事件的回溯取证。攻击发生后配置可能已经被攻击者改掉了。如果有历史审计记录的存档项目支持把每次结果存储到D1或R2你就能对比攻击前后的配置差异快速定位攻击者动了哪些参数。这个能力在应急响应里价值极高。第三是作为自定义Skill接入内部告警系统。项目本身的能力边界在配置审计但你可以把它作为中间层往上接通知、接工单、接大模型分析。我目前是把审计结果推到内部日志平台再用AI做周维度趋势总结效果还不错。对中小团队来说这相当于用很低成本的方案搭了一个轻量安全运营中心。回到开头的问题这个项目为什么能在GitHub热榜上站住脚在我看来一是它盘活了Cloudflare生态里原本零散的配置检查能力二是Skill这种形态正好踩中AI agent落地的关键节点。它不解决所有安全问题但把配置审计这件事做到好用、可集成就够了。我个人实际的体会是安全工具的价值从来不在于它能扫描多少漏洞而在于它能不能在真实的安全运营流程里持续跑起来。security-audit-skill做到了这一点。下一步我准备把规则库按自己的业务场景裁剪一下把一些不适用于内部业务的规则关掉再针对自己的源站写几条定制规则。这个方向你也可以试试——毕竟官方工具给的是通用能力真正的安全基线永远是自己最懂。
阅读完成 · 觉得有帮助?