Secret Scan ツール導入検討
調査日: 2026-02-28
概要
ONIZUKA AGI Co. のリポジトリで機密情報(APIキー、トークン、パスワード等)の漏洩を防ぐためのツールを調査・推奨する。
推奨ツール
1. Gitleaks(最推奨)
特徴:
- Go製の高速なシークレット検出ツール
- Git履歴、ファイル、stdinから検出可能
- GitHub Actionsとの連携が容易
- 活発な開発・コミュニティ
インストール:
bash
# MacOS
brew install gitleaks
# Docker
docker pull zricethezav/gitleaks:latest
# Go
go install github.com/zricethezav/gitleaks/v8@latest使用方法:
bash
# リポジトリ全体をスキャン
gitleaks detect --source . -v
# Git履歴を含めてスキャン
gitleaks git -v
# pre-commitフックとして設定
gitleaks protect --stagedGitHub Actions設定:
yaml
name: Secret Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}2. TruffleHog
特徴:
- Python製
- Git履歴の深いスキャンが可能
- 正規表現+エントロピー検出
インストール:
bash
pip install trufflehog使用方法:
bash
trufflehog git file://. --only-verified3. GitHub Secret Scanning(ネイティブ)
特徴:
- GitHub.comのネイティブ機能
- パートナープログラムによる検出
- 無料プランでも利用可能
設定:
- リポジトリ設定 > Security > Code security and analysis
- "Secret scanning"を有効化
推奨構成
即時導入(必須)
- Gitleaks - pre-commitフック + GitHub Actions
将来的な拡張
- GitHub Secret Scanning - ネイティブ機能を有効化
- TruffleHog - CI/CDパイプラインに追加
実装手順
Step 1: ローカルでのスキャン
bash
# リポジトリでスキャン実行
gitleaks detect --source . -v --report-path gitleaks-report.jsonStep 2: pre-commitフック設定
bash
# .pre-commit-config.yaml
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.18.0
hooks:
- id: gitleaksStep 3: GitHub Actions設定
.github/workflows/secret-scan.ymlを作成
注意点
誤検出への対応
.gitleaksignoreファイルで除外設定- カスタムルールで微調整
既存の機密情報
- 検出された場合は即座にローテーション
- Git履歴から削除する場合は
git filter-repoを使用
パフォーマンス
- 大規模リポジトリでは
--no-gitオプションで高速化
- 大規模リポジトリでは
結論
Gitleaksを導入することを推奨する。
理由:
- 高速で正確な検出
- GitHub Actionsとの連携が容易
- 活発な開発とコミュニティサポート
- 導入コストが低い
作成日: 2026-02-28作成者: Renji ONIZUKA