まなびのすけ
ホーム›メモ›Web開発› コミット前に秘密情報を自動検知するGitleaksを入れてみた

コミット前に秘密情報を自動検知するGitleaksを入れてみた

2026.08.24 更新

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をインストール

  1. ターミナル画面を開く
  2. Homebrewが入っているか確認
    brew -vを実行し、バージョンが表示されれば導入済み
  3. 未導入の場合はHomebrewをインストール
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"を実行し、画面に従って追加コマンドも実行する
  4. インストールを確認
    再度brew -vを実行し、Homebrew x.x.xと表示されれば完了

※ Homebrewのインストール中に管理者パスワードの入力を促される場合があります。

STEP2)Gitleaksをインストール

  1. ターミナル画面を開く
  2. Gitleaksをインストール
    brew install gitleaksを実行
  3. インストールを確認
    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が防ぐ対象は、秘密情報のコミットという取り返しのつかない事故だけです。ビルドエラーやリンク切れ、アクセシビリティなど公開品質に関わるチェックは別の仕組みで、公開直前にあらためて確認する必要があります。

参考文献

メモ一覧へ