Zenn Semgrep Gitleaks Security
バイブコーディングが怖いので、全PJにSemgrep + gitleaksの自動セキュリティスキャンを仕込んだ話
- URL: https://zenn.dev/zittiandbuoni/articles/632ff0709247f6
- 日付: 2026-06-07
- Tier: Tier 3
- 要旨: Claude Codeで個人開発する際の「AIが書いた危険なコード・漏れたシークレットに気づけないリスク」に対し、Semgrep(SAST)+gitleaks(シークレット検出)をpre-commit hook+GitHub Actionsで二層防御として全PJに導入した記録。
詳細
ツールの役割分担:
- Semgrep:コードの静的解析(SAST)→
subprocess.call(cmd, shell=True)・SQL文字列結合等の危険パターン検出 - gitleaks:シークレットスキャン→AWSキー・Slackトークン・Stripeシークレット等のハードコード検出
- 守備範囲が異なるため二段構えが有効
二層防御構成:
- ローカル(pre-commit hook):
git commitのたびにスキャン、危険コードをリポジトリに入れさせない - CI(GitHub Actions):push/PRのたびに再スキャン、
--no-verifyスキップ分を拾う
.pre-commit-config.yaml設定:
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.30.1
hooks:
- id: gitleaks
- repo: https://github.com/semgrep/semgrep
rev: v1.165.0
hooks:
- id: semgrep
args: ['--config', 'auto', '--error']Semgrepの--config autoでリポジトリの言語構成に合わせてコミュニティルールセットを自動選択。最初はautoで様子を見て調整するアプローチを推奨。
gitleaksはロックファイル・テストフィクスチャ・.env.exampleをallowlistに追加して誤検知を抑制。