
关于
静态应用安全测试(SAST)工具的设置、配置和自定义规则创建,用于跨多种编程语言的全面安全扫描。
name: sast-configuration description: "静态应用安全测试(SAST)工具设置、配置和自定义规则创建,用于跨多种编程语言的全面安全扫描。" risk: unknown source: community date_added: "2026-02-27"
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 快速开始
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: Run Semgrep
uses: returntocorp/semgrep-action@v1
with:
config: >-
p/security-audit
p/owasp-top-ten
Pre-commit 钩子
# .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 secret should not be hardcoded
severity: ERROR
合规扫描
# PCI-DSS 专项扫描
semgrep --config p/pci-dss --json -o pci-scan-results.json
故障排除
高误报率
- 审查并调整规则灵敏度
- 为已知安全模式添加抑制项
- 考虑使用更具体的规则替代通用规则
兼容工具
Claude CodeCursor
标签
安全
