Secrets Pre-Commit Hook
Aikido は、本番環境に到達する前の3つのポイントでシークレットを防止します:IDE内、pre-commit時、そして PR ゲーティング時です。私たちの pre-commit githook は、ステージングされたコードをスキャンし、シークレット・パスワード・APIキーを検出します。機密データがリポジトリに到達することを防ぎ、漏洩や意図しない露出のリスクを低減します。
インストール
Section titled “インストール”IDEから
Aikido IDEプラグインがインストールされていれば、Aikido Expansion Packs を使ってワンクリックで pre-commit フックをインストールできます。
詳細はExpansion Packsのドキュメントを参照してください。
Mac/Linux
すべての git リポジトリに対して Aikido Secrets pre-commit フックをインストールするには、以下を実行します。
curl -fsSL https://raw.githubusercontent.com/AikidoSec/pre-commit/6cc79e039ee78b206520f143d618a44665c904b3/installation-samples/install-global/install-aikido-hook.sh | bashこれにより、シークレット検出に使用される Aikido pre-commit スキャナーがダウンロードされ、グローバルフックディレクトリに pre-commit フックスクリプトがインストールされます。
Windows
すべての git リポジトリに対して Aikido Secrets pre-commit フックをインストールするには、PowerShell で以下を実行します。
iex (iwr "https://raw.githubusercontent.com/AikidoSec/pre-commit/6cc79e039ee78b206520f143d618a44665c904b3/installation-samples/install-global/install-aikido-hook.ps1" -UseBasicParsing)これにより、シークレット検出に使用される Aikido pre-commit スキャナーがダウンロードされ、グローバルフックディレクトリに pre-commit フックスクリプトがインストールされます。
Pre-Commit Framework
すでに pre-commit フレームワークを使用している場合は、.pre-commit-config.yaml に以下を追加します。
repos: - repo: https://github.com/AikidoSec/pre-commit rev: main # or pin to a specific commit hooks: - id: aikido-local-scanner次に、フックをインストールします。
pre-commit install注: aikido-local-scanner バイナリは別途インストールする必要があります。まずグローバルインストールスクリプトを実行してください。
macOS/Linux:
curl -fsSL https://raw.githubusercontent.com/AikidoSec/pre-commit/2235fe0536f9135aa561ce108702fac708b38977/installation-samples/install-global/install-aikido-hook.sh | bash -s -- --download-onlyWindows (PowerShell):
irm https://raw.githubusercontent.com/AikidoSec/pre-commit/2235fe0536f9135aa561ce108702fac708b38977/installation-samples/install-global/install-aikido-hook.ps1 | % { iex \"& { $_ } -DownloadOnly\" }これにより、スキャナーが ~/.local/bin/aikido-local-scanner にインストールされます。
スクリプトのソースコードと動作の詳細は Github で公開されています。
pre-commitフックのテスト
Section titled “pre-commitフックのテスト”セットアップ後に pre-commit フックをテストするには、リポジトリ内に sample.js ファイルを作成します。
const password = "eRwjQKVUSRX7uYV017B0cRHVKv45Gv8G"このファイルをステージング済みの変更に追加します。このファイルをコミットしようとすると、pre-commit フックが実行され、以下のメッセージでコミットがブロックされます。
Detected secrets in staged files!Secret #1: File: sample.js Line: 1 Secret: password = "****************************Gv8G" Description: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.特定のシークレットをスキップする
Section titled “特定のシークレットをスキップする”特定のシークレットが検出されないようにスキップするには、検出されたシークレットの行にコメントを追加します。
const password = "eRwjQKVUSRX7uYV017B0cRHVKv45Gv8G" // gitleaks:allowAikido Secrets pre-commitスキャンを無効化する
Section titled “Aikido Secrets pre-commitスキャンを無効化する”単一のコミットに対して一時的に pre-commit フックをバイパスする
git commit --no-verify単一のコミットに対して一時的に Aikido Secrets pre-commit フックをバイパスする
AIKIDO_SKIP_PRE_COMMIT=1 git commitアンインストール
Section titled “アンインストール”アンインストールスクリプトを使用するか、以下の手順に従って手動でフックをアンインストールしてください。
Mac/Lunix
インストールスクリプトを使って Aikido pre-commit フックをインストールし、アンインストールしたい場合は、以下を実行します。
curl -fsSL https://raw.githubusercontent.com/AikidoSec/pre-commit/e6f541e65378dd30f3f320628000f837cfba0ec4/installation-samples/install-global/uninstall-aikido-hook.sh | bashWindows
インストールスクリプトを使って Aikido pre-commit フックをインストールし、アンインストールしたい場合は、以下を実行します。
iex (iwr "https://raw.githubusercontent.com/AikidoSec/pre-commit/e6f541e65378dd30f3f320628000f837cfba0ec4/installation-samples/install-global/uninstall-aikido-hook.ps1" -UseBasicParsing)グローバルpre-commitフックの手動アンインストール
Section titled “グローバルpre-commitフックの手動アンインストール”これにより、すべてのグローバル Git フックと Aikido バイナリが完全に削除されます。
- グローバルフックディレクトリを削除します。
- Unix/Linux/macOS:
rm -rf ~/.git-hooks - Windows:
Remove-Item -Recurse -Force $env:USERPROFILE\.git-hooks
- Unix/Linux/macOS:
- Git フックのパスをリセットします。
git config --global --unset core.hooksPath - 必要に応じてバイナリを削除します。
- Unix/Linux/macOS:
rm ~/.local/bin/aikido-local-scanner - Windows:
Remove-Item $env:USERPROFILE\.local\bin\aikido-local-scanner.exe
- Unix/Linux/macOS:
Aikido Git Hookのみの手動アンインストール
Section titled “Aikido Git Hookのみの手動アンインストール”すでに独自のグローバル Git フックを使用しており、それを維持したい場合は、フックディレクトリを削除しないでください。
代わりに、以下の手順を実行します。
- グローバルフックディレクトリ内の pre-commit ファイルを開きます(例: ~/.git-hooks/pre-commit)。
- aikido-local-scanner を呼び出す行、または明らかに Aikido によって追加されたと分かる行のみを削除します。
- ファイルを保存します。
Git は Aikido Secrets を実行することなく、既存のフックを引き続き使用します。