シークレットのコミット前フック
Aikido は、シークレットが本番環境に到達する前に、IDE、pre-commit、PR ゲーティングの3つの段階でシークレットの流出を防ぎます。当社の pre-commit githook は、ステージングされたコードをスキャンしてシークレット、パスワード、API キーを検出します。機密データがリポジトリに到達することを防ぎ、漏洩や意図しない露出のリスクを低減します。
インストール
Aikido IDE プラグインがインストールされている場合、Aikido Expansion Packs を使用してワンクリックで pre-commit フックをインストールできます。
すべての 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 フックスクリプトがインストールされます。
すべての 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 フレームワークを使用している場合は、.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 フックのテスト
セットアップ後に 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.特定のシークレットをスキップする
特定のシークレットが検出されないようにスキップするには、検出されたシークレットの行にコメントを追加します:
const password = "eRwjQKVUSRX7uYV017B0cRHVKv45Gv8G" // gitleaks:allowAikido Secrets pre-commit スキャンを無効化する
単一のコミットで pre-commit フックを一時的にバイパスする
git commit --no-verify単一のコミットで Aikido Secrets pre-commit フックを一時的にバイパスする
AIKIDO_SKIP_PRE_COMMIT=1 git commitアンインストール
アンインストールスクリプトを使用するか、以下の手順に従ってフックを手動でアンインストールします。
インストールスクリプトを使用して Aikido pre-commit フックをインストールし、アンインストールしたい場合は、次を実行します:
curl -fsSL https://raw.githubusercontent.com/AikidoSec/pre-commit/e6f541e65378dd30f3f320628000f837cfba0ec4/installation-samples/install-global/uninstall-aikido-hook.sh | bashインストールスクリプトを使用して Aikido pre-commit フックをインストールし、アンインストールしたい場合は、次を実行します:
iex (iwr "https://raw.githubusercontent.com/AikidoSec/pre-commit/e6f541e65378dd30f3f320628000f837cfba0ec4/installation-samples/install-global/uninstall-aikido-hook.ps1" -UseBasicParsing)グローバル 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 のみの手動アンインストール
すでに独自のグローバル Git フックがあり、それらを残したい場合は、フックディレクトリを削除しないでください。
代わりに:
- グローバルフックディレクトリ内の pre-commit ファイルを開きます(例:~/.git-hooks/pre-commit)。
- aikido-local-scanner を呼び出している行、または Aikido によって追加されたことが明示されている行のみを削除します。
- ファイルを保存します。
Git は Aikido Secrets を実行せずに、既存のフックを引き続き使用します。