name: sast-configuration description: 配置静态应用安全测试(SAST)工具,用于应用程序代码中的自动化漏洞检测。在设置安全扫描、实施DevSecOps实践或自动化代码漏洞检测时使用。
SAST配置
静态应用安全测试(SAST)工具的设置、配置和自定义规则创建,用于跨多种编程语言的全面安全扫描。
概述
本技能提供设置和配置SAST工具(包括Semgrep、SonarQube和CodeQL)的全面指导。在以下情况下使用此技能:
- 在CI/CD管道中设置SAST扫描
- 为代码库创建自定义安全规则
- 配置质量门和合规策略
- 优化扫描性能并减少误报
- 集成多个SAST工具以实现深度防御
核心能力
1. Semgrep配置
- 使用模式匹配创建自定义规则
- 特定语言的安全规则(Python、JavaScript、Go、Java等)
- CI/CD集成(GitHub Actions、GitLab CI、Jenkins)
- 误报调整和规则优化
- 组织政策执行
2. SonarQube设置
- 质量门配置
- 安全热点分析
- 代码覆盖率和技术债务跟踪
- 语言的自定义质量配置文件
- 与LDAP/SAML的企业集成
3. CodeQL分析
- GitHub高级安全集成
- 自定义查询开发
- 漏洞变体分析
- 安全研究工作流
- SARIF结果处理
快速入门
初始评估
- 识别代码库中的主要编程语言
- 确定合规要求(PCI-DSS、SOC 2等)
- 根据语言支持和集成需求选择SAST工具
- 审查基线扫描以了解当前安全状况
基本设置
# Semgrep快速入门
pip install semgrep
semgrep --config=auto --error
# 使用Docker的SonarQube
docker run -d --name sonarqube -p 9000:9000 sonarqube:latest
# CodeQL CLI设置
gh extension install github/gh-codeql
codeql database create mydb --language=python
参考文档
- Semgrep规则创建 - 基于模式的安全规则开发
- SonarQube配置 - 质量门和配置文件
- CodeQL设置指南 - 查询开发和工作流
模板与资产
- semgrep-config.yml - 生产就绪的Semgrep配置
- sonarqube-settings.xml - SonarQube质量配置文件模板
- run-sast.sh - 自动化SAST执行脚本
集成模式
CI/CD管道集成
# GitHub Actions示例
- name: 运行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
自定义规则开发
# 参见references/semgrep-rules.md获取详细示例
rules:
- id: hardcoded-jwt-secret
pattern: jwt.encode($DATA, "...", ...)
message: JWT密钥不应硬编码
severity: ERROR
合规扫描
# PCI-DSS焦点扫描
semgrep --config p/pci-dss --json -o pci-scan-results.json
故障排除
高误报率
- 审查和调整规则敏感性
- 添加路径过滤器以排除测试文件
- 对嘈杂模式使用nostmt元数据
- 创建组织特定的规则例外
性能问题
- 启用增量扫描
- 跨模块并行化扫描
- 优化规则模式以提高效率
- 缓存依赖项和扫描结果
集成失败
- 验证API令牌和凭据
- 检查网络连接和代理设置
- 审查SARIF输出格式兼容性
- 验证CI/CD运行器权限
相关技能
工具比较
| 工具 | 最佳用途 | 语言支持 | 成本 | 集成 |
|---|---|---|---|---|
| Semgrep | 自定义规则,快速扫描 | 30+种语言 | 免费/企业版 | 优秀 |
| SonarQube | 代码质量 + 安全 | 25+种语言 | 免费/商业版 | 良好 |
| CodeQL | 深度分析,研究 | 10+种语言 | 免费(开源) | GitHub原生 |
后续步骤
- 完成初始SAST工具设置
- 运行基线安全扫描
- 为组织特定模式创建自定义规则
- 集成到CI/CD管道中
- 建立安全门政策
- 培训开发团队关于发现和修复