ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

使用 DefectDojo 构建集中式漏洞管理仪表盘:Anthropic-Cybersecurity-Skills 实战指南

2026/9/11 4:09:29 拓冰建站 浏览量
使用 DefectDojo 构建集中式漏洞管理仪表盘:Anthropic-Cybersecurity-Skills 实战指南 使用 DefectDojo 构建集中式漏洞管理仪表盘Anthropic-Cybersecurity-Skills 实战指南【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本文基于 Anthropic-Cybersecurity-Skills 仓库中skills/building-vulnerability-dashboard-with-defectdojo/SKILL.md技能文档展开系统讲解如何部署 DefectDojo 作为企业级集中式漏洞管理平台将来自 200 安全扫描器的结果统一聚合、去重、追踪修复进度并输出执行层仪表盘。读完本文你将掌握 Docker Compose 部署、REST API v2 自动化、扫描结果导入、Jira/Slack 集成以及基于仓库配套 Python 脚本生成漏洞指标报表的完整实操能力。DefectDojo 在漏洞管理生态中的定位DefectDojo 是 OWASP 旗下的开源应用漏洞管理平台核心价值在于把分散在各安全工具中的发现Finding收敛到一个统一视图它聚合来自 200 安全工具的扫描结果、自动去重、追踪修复进度并提供面向管理层的执行仪表盘。它同时支持基于 OWASP 分类法的漏洞归类暴露 REST API 供自动化流程调用。在SKILL.md的 YAML frontmatter 中该技能被标注为vulnerability-management子领域并映射到 NIST CSF 2.0 的ID.RA-01资产脆弱性识别、ID.RA-02威胁与脆弱性接收、ID.IM-02评估结果改进、ID.RA-06风险响应行动以及 MITRE ATTCK 的T1190面向公网的漏洞利用、T1203客户端漏洞利用、T1068利用提权——也就是说构建该仪表盘的核心目的之一正是为这些攻击面暴露出来的漏洞提供可度量、可追踪的闭环管理。适用场景在环境中部署或配置 DefectDojo 驱动的漏洞管理仪表盘能力建立对齐合规要求的安全控制如 NIST RA-5、PCI DSS 漏洞管理要求构建或改进本领域的安全架构在执行安全评估时需要可落地的集中化实现方案。部署前准备SKILL.md明确列出的前置条件如下Docker 与 Docker Compose4GB 内存、2 CPU 核心、20GB 磁盘空间PostgreSQL 12Docker 部署中已内置Python 3.9用于编写 API 集成脚本Jira 实例可选用于工单集成。配套的references/standards.md进一步给出了部署资源的推荐配置CPU 最低 2 核、推荐 4 核内存最低 4GB、推荐 8GB磁盘最低 20GB、推荐 50GBPostgreSQL 最低 12、推荐 15Docker 最低 20.10Docker Compose 最低 2.0。在正式生产环境接入多个扫描器与长期保留扫描数据时建议按推荐档位配置。Docker Compose 部署与初始化启动服务按照SKILL.md的标准流程克隆官方仓库并用 Docker Compose 启动# 克隆 DefectDojo 仓库 git clone https://github.com/DefectDojo/django-DefectDojo.git cd django-DefectDojo # 以生产模式启动使用项目提供的封装脚本 ./dc-up-d.sh # 备选手动执行 Docker Compose docker compose up -d # 查看服务状态 docker compose ps # 查看初始化器生成的初始管理员密码 docker compose logs initializer 21 | grep Admin password # 访问 DefectDojo Web 界面 # http://localhost:8080首次登录后应立即修改默认管理员密码这是后续所有自动化集成的安全前提。关键环境变量SKILL.md给出了docker-compose.yml中的核心环境变量配置DD_DATABASE_ENGINEdjango.db.backends.postgresql DD_DATABASE_HOSTpostgres DD_DATABASE_PORT5432 DD_DATABASE_NAMEdefectdojo DD_DATABASE_USERdefectdojo DD_DATABASE_PASSWORDsecure_password DD_ALLOWED_HOSTS* DD_SECRET_KEYrandom_64_char_key DD_CREDENTIAL_AES_256_KEYrandom_128_bit_key DD_SOCIAL_AUTH_GOOGLE_OAUTH2_ENABLEDTrue其中DD_SECRET_KEY与DD_CREDENTIAL_AES_256_KEY必须使用足够强度的随机值DD_CREDENTIAL_AES_256_KEY用于加密存储的凭据如 Jira/扫描器凭据一旦丢失将无法解密已存的凭据。DD_ALLOWED_HOSTS在生产环境应显式收窄为实际域名避免使用通配符。组织数据模型Product Type → Product → Engagement → Test → FindingDefectDojo 的组织层级决定了仪表盘的聚合维度。SKILL.md给出的层级如下Product Type (业务单元) └── Product (应用/服务) └── Engagement (评估/Sprint) └── Test (扫描器运行) └── Finding (单个漏洞)这一层级设计让企业可以从业务单元 → 应用 → 某次评估 → 某次扫描 → 具体漏洞逐层下钻也正是执行层报表中按产品汇总的基础。配套的assets/template.md建议按业务单元划分 Product Type例如Product Type描述Web Applications面向客户的 Web 应用Mobile ApplicationsiOS 与 Android 应用Internal Tools员工使用的内部应用Infrastructure网络与云基础设施APIsREST 与 GraphQL API 服务通过 REST API 建立组织骨架SKILL.md展示了用 Python 脚本创建 Product Type、Product、Engagement 的过程import requests DD_URL http://localhost:8080/api/v2 API_KEY your_api_key_here HEADERS {Authorization: fToken {API_KEY}, Content-Type: application/json} # 创建 Product Type业务单元 resp requests.post(f{DD_URL}/product_types/, headersHEADERS, json{ name: Web Applications, description: Customer-facing web application portfolio }) product_type_id resp.json()[id] # 创建 Product应用/服务 resp requests.post(f{DD_URL}/products/, headersHEADERS, json{ name: Customer Portal, description: Main customer-facing web application, prod_type: product_type_id, sla_configuration: 1, }) product_id resp.json()[id] # 创建 Engagement评估周期 resp requests.post(f{DD_URL}/engagements/, headersHEADERS, json{ name: Q1 2024 Security Assessment, product: product_id, target_start: 2024-01-01, target_end: 2024-03-31, engagement_type: CI/CD, status: In Progress, }) engagement_id resp.json()[id]仓库配套脚本scripts/process.py将这些调用封装为命令行工具setup子命令一步完成三级结构创建# 创建 Product Type Product Engagement默认 Engagement 名为 CI/CD python3 process.py --url http://localhost:8080/api/v2 --api-key KEY \ setup --product-type Web Applications --product Customer Portal --engagement CI/CD脚本中的create_product_type()、create_product()、create_engagement()分别对应上述三个 POST 请求并打印返回的对象 ID便于后续导入扫描时引用。扫描结果导入与去重通过 reimport-scan 上传扫描结果SKILL.md的核心实操环节是使用reimport-scan接口批量导入扫描结果且支持auto_create_contexttrue自动创建缺失的上下文Product/Engagement以及deduplication_on_engagementtrue在同一 Engagement 范围内去重# 上传 Nessus 扫描结果 curl -X POST ${DD_URL}/reimport-scan/ \ -H Authorization: Token ${API_KEY} \ -F scan_typeNessus Scan \ -F filenessus_report.csv \ -F product_nameCustomer Portal \ -F engagement_nameQ1 2024 Security Assessment \ -F auto_create_contexttrue \ -F deduplication_on_engagementtrue # 上传 OWASP ZAP 结果 curl -X POST ${DD_URL}/reimport-scan/ \ -H Authorization: Token ${API_KEY} \ -F scan_typeZAP Scan \ -F filezap_report.xml \ -F product_nameCustomer Portal \ -F engagement_nameQ1 2024 Security Assessment \ -F auto_create_contexttrue # 上传 Trivy 容器扫描结果 curl -X POST ${DD_URL}/reimport-scan/ \ -H Authorization: Token ${API_KEY} \ -F scan_typeTrivy Scan \ -F filetrivy_results.json \ -F product_nameCustomer Portal \ -F engagement_nameQ1 2024 Security Assessment \ -F auto_create_contexttrue配套的scripts/process.py将import-scan封装为import子命令并额外默认携带close_old_findingstrue关闭在本次扫描中已消失的旧发现与deduplication_on_engagementtruepython3 process.py import \ --file trivy_results.json \ --scan-type Trivy Scan \ --product Customer Portal \ --engagement CI/CD导入成功后脚本会打印Test ID以及统计信息created / closed / reactivated这些统计正是后续去重效果与修复进度的直接度量。支持的扫描器类型SKILL.md给出的部分扫描器映射表如下扫描器类型字符串格式NessusNessus ScanCSV/XMLOpenVASOpenVAS CSVCSVQualysQualys ScanXMLOWASP ZAPZAP ScanXML/JSONBurp SuiteBurp XMLXMLTrivyTrivy ScanJSONSemgrepSemgrep JSON ReportJSONSnykSnyk ScanJSONSonarQubeSonarQube ScanJSONCheckovCheckov ScanJSONassets/template.md补充了 BanditBandit ScanJSON、QualysQualys ScanXML等更多映射references/api-reference.md还列出了Nuclei Scan、SARIF、Burp REST API等取值scripts/agent.py中的SUPPORTED_SCAN_TYPES常量也印证了Anchore Grype、Generic Findings Import等通用导入方式。导入时必须使用与扫描器输出格式严格匹配的scan_type字符串否则解析器无法正确识别。API 查询参数与认证references/api-reference.md汇总了 Token 认证方式与核心端点# Token 认证示例 curl -H Authorization: Token $DEFECTDOJO_TOKEN \ http://localhost:8080/api/v2/findings/方法端点说明GET/api/v2/findings/列出漏洞发现GET/api/v2/products/列出产品GET/api/v2/engagements/列出评估GET/api/v2/tests/列出测试POST/api/v2/import-scan/导入扫描结果POST/api/v2/reimport-scan/重新导入/更新结果查询 findings 时支持以下过滤参数severityCritical/High/Medium/Low/Info、active仅活跃发现、verified仅已验证发现、duplicate包含重复项、product按产品 ID 过滤、limit每页条数、offset分页偏移。注意import-scan与reimport-scan的区别前者用于全新导入后者用于对同一 Test 的增量更新是 CI/CD 场景下避免产生重复发现的关键接口。CI/CD 流水线集成SKILL.md给出了 GitHub Actions 中的完整集成示例# .github/workflows/security-scan.yml name: Security Scan on: [push] jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Run Semgrep run: | pip install semgrep semgrep --config auto --json -o semgrep_results.json . - name: Upload to DefectDojo run: | curl -X POST ${{ secrets.DD_URL }}/api/v2/reimport-scan/ \ -H Authorization: Token ${{ secrets.DD_API_KEY }} \ -F scan_typeSemgrep JSON Report \ -F filesemgrep_results.json \ -F product_name${{ github.event.repository.name }} \ -F engagement_nameCI/CD \ -F auto_create_contexttrueassets/template.md提供了与 CI 工具无关的通用片段可直接嵌入 GitLab CI、Jenkins 等任意流水线注意其中的close_old_findingstrue参数确保流水线复跑时关闭已修复项# 通用 CI/CD 上传步骤 - name: Upload scan results to DefectDojo env: DD_URL: ${{ secrets.DEFECTDOJO_URL }} DD_API_KEY: ${{ secrets.DEFECTDOJO_API_KEY }} run: | curl -X POST ${DD_URL}/api/v2/reimport-scan/ \ -H Authorization: Token ${DD_API_KEY} \ -F scan_type${SCAN_TYPE} \ -F file${SCAN_FILE} \ -F product_name${PRODUCT_NAME} \ -F auto_create_contexttrue \ -F close_old_findingstrue生产实践中应将DD_URL与DD_API_KEY放入 CI 平台的 Secret 管理如 GitHub Actions Secrets并限定 API Key 的最小权限范围。Jira 工单集成当扫描发现需要进入修复流程时DefectDojo 可将新发现自动推送为 Jira 工单。SKILL.md给出了在 DefectDojo 设置中的 Jira 集成配置jira_config { url: https://company.atlassian.net, username: jira-botcompany.com, password: jira_api_token, default_issue_type: Bug, critical_mapping_severity: Blocker, high_mapping_severity: Critical, medium_mapping_severity: Major, low_mapping_severity: Minor, finding_text: **Vulnerability**: {{ finding.title }}\n**Severity**: {{ finding.severity }}\n**CVE**: {{ finding.cve }}\n**Description**: {{ finding.description }}, accepted_mapping_resolution: Done, close_status_key: 6, }assets/template.md补充了完整设置场景Jira URL 指向https://company.atlassian.net项目 Key 为SEC工单类型Bug优先级映射为 Critical→Blocker、High→Critical、Medium→Major、Low→Minor并建议开启当 DefectDojo 中发现被关闭时自动关闭对应 Jira 工单Auto-close配合accepted_mapping_resolution: Done实现修复闭环。finding_text模板中的{{ finding.cve }}等变量会在建单时被实际发现数据填充因此模板化描述可在所有工单中保持统一格式。指标查询与仪表盘构建核心指标 API 查询SKILL.md展示了三类典型指标查询# 按严重级别统计活跃发现数 resp requests.get(f{DD_URL}/findings/?limit0activetrue, headersHEADERS) findings resp.json() # 统计 SLA 违约发现数 resp requests.get(f{DD_URL}/findings/?limit0activetruesla_breachedtrue, headersHEADERS) # 获取产品级指标 resp requests.get(f{DD_URL}/products/{product_id}/, headersHEADERS) product_data resp.json()limit0表示返回全部结果便于在客户端完成聚合统计。用仓库脚本生成仪表盘报表仓库配套脚本提供了两条生成报表的路径。其一为scripts/agent.py中的build_dashboard_data()函数它对 findings 结果集计算总活跃发现数、按严重级别分布by_severity、按产品分布 Top 10by_product、发现平均年龄avg_age_days、超期数量overdue_count以及 SLA 合规率sla_compliance_pct。其中 SLA 判定按严重级别使用不同的修复天数阈值Critical 7 天、High 30 天、Medium 90 天、Low 180 天与assets/template.md中的 SLA 配置表Critical 7 / High 30 / Medium 90 / Low 120Info 无 SLA口径一致——接入时应确保脚本阈值与平台 SLA 配置保持一致。其二为scripts/process.py提供的dashboard与findings子命令# 生成产品级仪表盘 JSON 报表 python3 process.py dashboard --product-id 1 --output defectdojo_dashboard.json # 按严重级别列出发现 python3 process.py findings --product-id 1 --severity Critical --limit 20generate_dashboard_report()会逐级统计 Critical/High/Medium/Low/Info 的活跃计数与总活跃数输出结构化 JSON 并打印摘要可直接作为执行层报表的数据源。脚本通过DEFECTDOJO_URL/DEFECTDOJO_API_KEY环境变量读取连接信息也可用--url/--api-key参数覆盖。仪表盘自动化流程references/workflows.md将完整使用过程组织为四个工作流工作流 1初始设置与配置——克隆并部署 DefectDojo配置管理员账号并改密按业务单元创建 Product Type为每个应用/服务创建 Product配置 Jira 集成配置 Slack/Teams Webhook 通知为每个严重级别设置 SLA 策略为扫描器集成创建 API Key。工作流 2CI/CD 扫描集成——在流水线GitHub Actions / GitLab CI / Jenkins中添加扫描步骤运行安全扫描器Semgrep、Trivy、ZAP 等通过 reimport-scan API 上传结果DefectDojo 与已有数据去重新发现触发 Jira 工单创建关闭的发现自动关闭关联 Jira 工单流水线依据发现严重级别获得 pass/fail 状态。工作流 3漏洞分类Triage——安全分析师在仪表盘上审查新发现逐条验证、设置严重级别与风险接受状态确认为有效漏洞的推送到 Jira 跟踪修复误报则标注 false positive 并附理由风险接受的记录补偿控制并设置过期时间通过 DefectDojo 指标跟踪修复进度。工作流 4执行层汇报——通过 API 拉取报告期指标计算总发现数、新增 vs 关闭、SLA 合规率生成产品级与业务单元级汇总按严重级别跟踪平均修复时间MTTR导出仪表盘数据用于管理层演示。合规对齐从 RA-5 到 PCI DSS构建 DefectDojo 仪表盘不仅是工程实践也是合规控制落地。结合references/standards.md与SKILL.md的 frontmatterNIST SP 800-53 Rev 5 RA-5漏洞监控与扫描DefectDojo 的集中化漏洞追踪正是 RA-5 要求的落地载体对应 NIST CSF 2.0 的ID.RA-01/ID.RA-02/ID.RA-06与ID.IM-02PCI DSS v4.0 要求 6DefectDojo 对应用安全发现的跟踪可直接支撑持卡人数据环境的漏洞管理取证OWASP ASVSDefectDojo 使用 OWASP 分类法对发现进行归类与应用安全验证标准对齐MITRE ATTCKT1190/T1203/T1068所覆盖的漏洞利用入口正是仪表盘中需要优先度量与 SLA 追踪的对象。使用限制与注意事项本文档描述的部署、命令与 API 参数均以当前仓库内容为准DefectDojo 实际版本的行为可能略有差异接入前应以部署实例的 API 响应为准reimport-scan的auto_create_context会在目标缺失时自动创建 Product/Engagement适合 CI/CD 场景但建议在正式环境中预先通过 API 或 CLI 建立完整的组织层级避免产生命名不一致的自动创建项SLA 阈值Critical 7 天等在不同文档中的 Low 级别略有差异assets/template.md为 120 天scripts/agent.py为 180 天实施时应统一为组织实际的 SLA 策略环境变量中的密钥类配置DD_SECRET_KEY、DD_CREDENTIAL_AES_256_KEY、API Key应纳入组织的密钥管理体系避免硬编码。继续深入若需进一步深入可在当前仓库中继续阅读以下资源技能主文档skills/building-vulnerability-dashboard-with-defectdojo/SKILL.md配置模板产品层级 / SLA / Jira / CI/CD 片段skills/building-vulnerability-dashboard-with-defectdojo/assets/template.mdAPI 参考端点 / 参数 / Python 客户端skills/building-vulnerability-dashboard-with-defectdojo/references/api-reference.md标准与合规参考部署要求 / RA-5 / PCI DSSskills/building-vulnerability-dashboard-with-defectdojo/references/standards.md四个核心工作流skills/building-vulnerability-dashboard-with-defectdojo/references/workflows.md仪表盘数据构建脚本skills/building-vulnerability-dashboard-with-defectdojo/scripts/agent.py自动化 CLI 脚本skills/building-vulnerability-dashboard-with-defectdojo/scripts/process.py【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考