关于 sast-configuration
为需要配置静态应用安全测试的开发团队提供操作指南,涵盖 Semgrep、SonarQube 和 CodeQL 的规则、扫描及 CI/CD 集成。
主要功能
- 01配置 Semgrep、SonarQube 和 CodeQL
- 02编写自定义安全规则
- 03将扫描接入 CI/CD
- 04调整误报与扫描性能
- 05设置质量门禁和合规策略
适用场景
- 01在 CI/CD 流水线加入 SAST 扫描
- 02为代码库创建定制安全规则
- 03按合规要求设置扫描策略
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill sast-configuration安装后在 Claude Code 中输入/sast-configuration确认已加载。
详细介绍
SAST 配置
静态应用程序安全测试(SAST)工具的设置、配置和自定义规则创建,用于对多种编程语言进行全面安全扫描。
适用场景
- 在 CI/CD 流水线中设置 SAST 扫描
- 为代码库创建自定义安全规则
- 配置质量门禁和合规策略
- 优化扫描性能并减少误报
- 集成多个 SAST 工具,构建纵深防御
不适用场景
- 只需要 DAST 或手动渗透测试方面的指导
- 无法访问源代码或 CI/CD 流水线
- 需要的是组织政策决策,而非工具设置
说明
- 确定编程语言、代码库和合规要求。
- 选择工具并制定基线策略。
- 将扫描集成到 CI/CD 中,并设置门禁阈值。
- 根据误报调整规则和抑制项。
- 跟踪修复进度并验证修复结果。
安全
- 未经批准,请勿使用第三方服务扫描敏感代码库。
- 防止扫描产物和日志泄露机密信息。
概述
本技能提供设置和配置 SAST 工具的全面指导,包括 Semgrep、SonarQube 和 CodeQL。
核心功能
1. Semgrep 配置
- 使用模式匹配创建自定义规则
- 特定语言的安全规则(Python、JavaScript、Go、Java 等)
- CI/CD 集成(GitHub Actions、GitLab CI、Jenkins)
- 误报调优和规则优化
- 执行组织策略
2. SonarQube 设置
- 配置质量门禁
- 分析安全热点
- 跟踪代码覆盖率和技术债务
- 为各语言定制质量配置文件
- 通过 LDAP/SAML 进行企业集成
3. CodeQL 分析
- 集成 GitHub Advanced Security
- 开发自定义查询
- 漏洞变体分析
- 安全研究工作流
- 处理 SARIF 结果
快速入门
初步评估
- 确定代码库中主要使用的编程语言
- 确定合规要求(PCI-DSS、SOC 2 等)
- 根据语言支持和集成需求选择 SAST 工具
- 查看基线扫描,了解当前安全态势
基本设置
# Semgrep quick start
pip install semgrep
semgrep --config=auto --error
# SonarQube with Docker
docker run -d --name sonarqube -p 127.0.0.1:9000:9000 sonarqube:REPLACE_WITH_REVIEWED_VERSION
# CodeQL CLI setup
gh extension install github/gh-codeql
codeql database create mydb --language=python
参考文档
- Semgrep 规则创建 - 基于模式开发安全规则
- SonarQube 配置 - 质量门禁和配置文件
- CodeQL 设置指南 - 查询开发和工作流
模板与资源
以下模板、脚本和引用的 Semgrep 规则并未随此目录提供。使用依赖这些内容的命令前,请获取并检查实际的上游材料;请勿声称这些内容已通过此目录运行。以下历史操作引用和工具版本需要替换为受维护且不可变的版本。
- semgrep-config.yml - 适用于生产环境的 Semgrep 配置
- sonarqube-settings.xml - SonarQube 质量配置文件模板
- run-sast.sh - 自动化 SAST 执行脚本
集成模式
CI/CD 流水线集成
# GitHub Actions example
- name: Run Semgrep
uses: returntocorp/semgrep-action@v1
with:
config: >-
p/security-audit
p/owasp-top-ten
提交前钩子
# .pre-commit-config.yaml
- repo: https://github.com/returntocorp/semgrep
rev: v1.45.0
hooks:
- id: semgrep
args: ['--config=auto', '--error']
最佳实践
-
从基线开始
- 运行初始扫描,建立安全基线
- 优先处理严重和高危问题
- 制定修复路线图
-
逐步采用
- 从安全重点规则开始
- 逐步添加代码质量规则
- 仅针对严重问题实施阻断
-
误报管理
- 记录合理的抑制项
- 为已知安全模式创建允许列表
- 定期检查已抑制的问题
-
性能优化
- 排除测试文件和生成代码
- 对大型代码库使用增量扫描
- 在 CI/CD 中缓存扫描结果
-
团队赋能
- 为开发人员提供安全培训
- 为常见模式编写内部文档
- 建立安全倡导者计划
常见用例
新项目设置
./scripts/run-sast.sh --setup --language python --tools semgrep,sonarqube
自定义规则开发
# See references/semgrep-rules.md for detailed examples
rules:
- id: hardcoded-jwt-secret
pattern: jwt.encode($DATA, "...", ...)
message: JWT secret should not be hardcoded
severity: ERROR
languages: [python]
合规扫描
# PCI-DSS focused scan
semgrep --config p/pci-dss --json -o pci-scan-results.json
故障排查
误报率过高
- 检查并调整规则敏感度
- 添加路径筛选器以排除测试文件
- 仅对有证据支持的误报使用有文档记录的规则/路径排除项;记录理由和到期时间
- 创建组织专属的规则例外
性能问题
- 启用增量扫描
- 并行扫描各模块
- 优化规则模式以提高效率
- 缓存依赖项和扫描结果
集成失败
- 验证 API 令牌和凭据
- 检查网络连接和代理设置
- 检查 SARIF 输出格式兼容性
- 验证 CI/CD 运行器权限
相关技能
- OWASP Top 10 检查清单
- 容器安全
- 依赖项扫描
工具对比
| 工具 | 适用场景 | 语言支持 | 成本 | 集成 |
|---|---|---|---|---|
| Semgrep | 自定义规则、快速扫描 | 30+ 种语言 | 免费/企业版 | 优秀 |
| SonarQube | 代码质量 + 安全 | 25+ 种语言 | 免费/商业版 | 良好 |
| CodeQL | 深度分析、研究 | 10+ 种语言 | 免费(OSS) | GitHub 原生 |
后续步骤
- 完成 SAST 工具的初始设置
- 运行基线安全扫描
- 为组织专属模式创建自定义规则
- 集成到 CI/CD 流水线
- 制定安全门禁策略
- 培训开发团队了解发现的问题及其修复方法
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必要的输入、权限、安全边界或成功标准,请暂停并请求澄清。
评论
支持 Markdown