Gitleaksについて、Gitleaksとは、検知できる情報の種類、macOSへのインストール手順、過去のコミット履歴のスキャン方法、コミット前に自動実行する方法、などについてまとめました。
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を実行し、バージョン番号が表示されれば完了
Homebrewをインストールしたときに、macOSのパスワードを求められたので入力しました。
Gitleaksでスキャンする方法
過去のコミット履歴をスキャン
過去のコミット履歴全体をスキャンするには、ターミナル画面で以下を実行します。
gitleaks git <リポジトリのパス>
- 対象は、そのリポジトリの
git logに残っている全コミット - 秘密情報が見つかると、該当のコミットハッシュ・ファイル名・行番号が一覧で表示される
- pre-commitフックを後から導入したリポジトリは、導入前に紛れ込んだ秘密情報がないかを確認する
現在のリポジトリをスキャン
Git履歴やステージ状態と関係なく、今あるファイルの中身だけをスキャンするには、ターミナル画面で以下を実行します。
gitleaks dir <リポジトリのパス>
- 対象は、指定したディレクトリ以下の現在のファイル(Git管理外の未追跡ファイルも含む)
- コミット前に限らず、任意のタイミングで手動チェックしたいときに使える
Gitleaksをインストールしてしまえば、コマンド一つでスキャンできます。
コミット前に毎回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が走るように設定しました。
ファイル構成
.git/hooksはGitの追跡対象外なので、フックの実体は追跡されるscripts/git-hooks/pre-commitに書く(他の環境でも同じ設定を共有できる)- 上記ファイルを
.git/hooks/pre-commitから呼び出す
ファイルの中身
- ステージされたファイル名に
.envや.htpasswd、鍵ファイルの拡張子(.pemなど)が含まれていないかを確認する - Gitleaksでステージ済みの差分をスキャンする
- Gitleaksが見つからない環境では、簡易な正規表現チェックを行う
実際に偽のキーと`.env`という名前のファイルを試してみたところ、どちらも止まって、普通の記事はそのまま通ることを確認できました。
よくある質問(FAQ)
Q. Gitleaksは無料で使えますか?
MIT Licenseで公開されているオープンソースソフトウェアで、無料で使えます。商用・個人を問わず利用・改変できます。
Q. Gitleaksを導入すれば、公開前のチェックはもう不要になりますか?
いいえ。Gitleaksが防ぐ対象は、秘密情報のコミットという取り返しのつかない事故だけです。ビルドエラーやリンク切れ、アクセシビリティなど公開品質に関わるチェックは別の仕組みで、公開直前にあらためて確認する必要があります。