sast-configuration について
開発チーム向けの SAST 設定ガイドです。Semgrep、SonarQube、CodeQL の導入やカスタムルール、スキャン結果の管理を扱い、CI/CD 連携、品質ゲート、誤検知の調整、性能改善も説明します。
主な機能
- 01Semgrep、SonarQube、CodeQL の設定
- 02カスタムセキュリティルールとクエリの作成
- 03品質ゲートとコンプライアンスポリシーの設定
- 04CI/CD とコミット前チェックへの統合
- 05誤検知の調整とスキャン性能の改善
- 06設定テンプレートと自動化スクリプト
活用シーン
- 01新規プロジェクトでの SAST スキャン導入
- 02CI/CD パイプラインでのセキュリティ検査
- 03組織固有のセキュリティルール作成
- 04PCI-DSS などのコンプライアンススキャン
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ hermeticormus/ libreuiux-claude-code --skill sast-configurationインストール後、Claude Code で/sast-configurationを入力して読み込まれたか確認します。
詳細
SAST の設定
複数のプログラミング言語にわたる包括的なセキュリティスキャンのための、静的アプリケーションセキュリティテスト(SAST)ツールのセットアップ、設定、カスタムルールの作成について説明します。
概要
このスキルでは、Semgrep、SonarQube、CodeQL などの SAST ツールのセットアップと設定に関する包括的なガイダンスを提供します。次のような場合にこのスキルを使用してください。
- CI/CD パイプラインで SAST スキャンをセットアップする
- コードベース向けのカスタムセキュリティルールを作成する
- 品質ゲートとコンプライアンスポリシーを設定する
- スキャンのパフォーマンスを最適化し、誤検知を減らす
- 多層防御のために複数の SAST ツールを統合する
主な機能
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 9000:9000 sonarqube:latest
# CodeQL CLI setup
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 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
コンプライアンススキャン
# PCI-DSS focused scan
semgrep --config p/pci-dss --json -o pci-scan-results.json
トラブルシューティング
誤検知が多い
- ルールの感度を確認して調整します
- テストファイルを除外するパスフィルターを追加します
- ノイズの多いパターンには nostmt メタデータを使用します
- 組織固有のルール例外を作成します
パフォーマンスの問題
- 増分スキャンを有効にします
- モジュールごとにスキャンを並列化します
- 効率が上がるようにルールパターンを最適化します
- 依存関係とスキャン結果をキャッシュします
統合の失敗
- API トークンと認証情報を確認します
- ネットワーク接続とプロキシ設定を確認します
- SARIF 出力形式との互換性を確認します
- CI/CD ランナーの権限を検証します
関連スキル
ツールの比較
| ツール | 最適な用途 | 言語サポート | コスト | 統合 |
|---|---|---|---|---|
| Semgrep | カスタムルール、高速スキャン | 30+ 言語 | 無料/エンタープライズ | 優秀 |
| SonarQube | コード品質とセキュリティ | 25+ 言語 | 無料/商用 | 良好 |
| CodeQL | 詳細な分析、研究 | 10+ 言語 | 無料(OSS) | GitHub ネイティブ |
次のステップ
- SAST ツールの初期設定を完了する
- ベースラインのセキュリティスキャンを実行する
- 組織固有のパターンに対応するカスタムルールを作成する
- CI/CD パイプラインに統合する
- セキュリティゲートのポリシーを確立する
- 検出結果と修正方法について開発チームをトレーニングする
コメント
Markdown 対応