Gitleaks(ギットリークス)は、コード内に紛れ込んだ秘密情報を検出するオープンソースのスキャンツールです。この記事では、Web開発に関わる人が知っておきたいGitleaksの基本をまとめました。
Gitleaksとは?
Gitleaksは、Gitリポジトリやファイルの中に紛れ込んだAPIキー・秘密鍵・パスワードなどの秘密情報を検出する、オープンソースのスキャンツールです。
- Go言語で書かれたコマンドラインツール
- OSにインストールして使う
- ライセンスはMIT License(2019年公開、開発者はZachary Rice氏)
- Homebrew・Docker・ソースからのビルドなど、複数の方法で導入できる
- コミット前のチェック、CI上でのスキャン、既存リポジトリの過去コミット全体の監査に使える
Gitleaksで検知できる情報の種類
Gitleaksで検知できる情報は、大きく分けると以下の3つに分類されます。
- 特定サービスの資格情報
AWSのアクセスキー、GitHubの個人アクセストークン、Slackのトークン、GCPのAPIキーなど、主要なクラウド・SaaSが発行するキーの形式を個別に識別する - 秘密鍵
-----BEGIN PRIVATE KEY-----のような、SSH鍵やTLS証明書の秘密鍵のヘッダーを検出する - 汎用的な秘密情報
password =やsecret =のような変数への代入を、値のランダム性(エントロピー)と組み合わせて検出する
※ 2026年8月時点で、公式のデフォルト設定ファイル(gitleaks.toml)には222種類の検出ルールが登録されています。
GitleaksをmacOSにインストールする手順
macOSでは、パッケージ管理ツールのHomebrewを使うと、コマンド操作だけでインストールできます。
STEP1)Homebrewをインストール
- ターミナル画面を開く
- Homebrewが入っているか確認
brew -vを実行し、バージョンが表示されれば導入済み - 未導入の場合はHomebrewをインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"を実行し、画面に従って追加コマンドも実行する - インストールを確認
再度brew -vを実行し、Homebrew x.x.xと表示されれば完了
※ Homebrewのインストール中に管理者パスワードの入力を促される場合があります。
STEP2)Gitleaksをインストール
- ターミナル画面を開く
- Gitleaksをインストール
brew install gitleaksを実行 - インストールを確認
gitleaks versionを実行し、バージョン番号が表示されれば完了
Gitleaksで過去のコミット履歴をスキャンする方法
過去のコミット履歴全体をスキャンするには、ターミナル画面で以下を実行します。
gitleaks git <リポジトリのパス>
- 対象は、そのリポジトリの
git logに残っている全コミット - 秘密情報が見つかると、該当のコミットハッシュ・ファイル名・行番号が一覧で表示される
- pre-commitフックを後から導入したリポジトリは、導入前に紛れ込んだ秘密情報がないかを確認する
Gitleaksで現在のリポジトリをスキャンする方法
Git履歴やステージ状態と関係なく、今あるファイルの中身だけをスキャンするには、ターミナル画面で以下を実行します。
gitleaks dir <リポジトリのパス>
- 対象は、指定したディレクトリ以下の現在のファイル(Git管理外の未追跡ファイルも含む)
- コミット前に限らず、任意のタイミングで手動チェックしたいときに使える
コミット前に毎回Gitleaksを自動実行する方法
Gitの「フック」という仕組みを使うと、コミットのたびに自動でGitleaksを実行し、秘密情報を含むコミットを未然に止められます。
- Gitには、
git commitなどの操作の前後に任意のスクリプトを自動実行する「フック」という仕組みがある - リポジトリの
.git/hooks/pre-commitに実行可能なスクリプトを置くと、コミットのたびに自動で実行される - ステージされた変更だけを対象にできる
- 秘密情報を検知すると、Gitleaksは終了コード「1」を返し、コミットが中断される
.git/hooks/pre-commitの中身の記述は、最小構成なら以下の2行で動きます。
#!/usr/bin/env bash
gitleaks git --staged --redact --no-banner .
もし誤検知が起きた場合はgit commit --no-verifyでフックを一時的にスキップできます。
このサイトではどうしてる?
このサイト(まなびのすけ)でも、コミット時に自動でGitleaksが走るようにしています。
ファイル構成
- 実体は追跡可能な
scripts/git-hooks/pre-commitに書く - 上記ファイルを
.git/hooks/pre-commitから呼び出す
.gitは追跡対象外なので、追跡されるファイルに実体を置いて、管理しやすくしています。
ファイルの中身
- ステージされたファイル名に
.envや.htpasswd、鍵ファイルの拡張子(.pemなど)が含まれていないかを確認する - Gitleaksでステージ済みの差分をスキャンする
- Gitleaksが見つからない環境では、簡易な正規表現チェックを行う
実際にAWSキー風の文字列や.envという名前のファイルをステージしてこのフックを試したところ、どちらも検出してコミットを止め、通常の記事は問題なく通過することを確認しました。
よくある質問(FAQ)
Q. Gitleaksは無料で使えますか?
MIT Licenseで公開されているオープンソースソフトウェアで、無料で使えます。商用・個人を問わず利用・改変できます。
Q. Gitleaksを導入すれば、公開前のチェックはもう不要になりますか?
いいえ。Gitleaksが防ぐのは秘密情報のコミットという取り返しのつかない事故だけです。ビルドエラーやリンク切れ、アクセシビリティなど公開品質に関わるチェックは別の仕組みで、公開直前にあらためて確認する必要があります。