コンテンツにスキップ

Secrets Pre-Commit Hook

Aikido は、本番環境に到達する前の3つのポイントでシークレットを防止します:IDE内、pre-commit時、そして PR ゲーティング時です。私たちの pre-commit githook は、ステージングされたコードをスキャンし、シークレット・パスワード・APIキーを検出します。機密データがリポジトリに到達することを防ぎ、漏洩や意図しない露出のリスクを低減します。

IDEから

Aikido IDEプラグインがインストールされていれば、Aikido Expansion Packs を使ってワンクリックで pre-commit フックをインストールできます。

詳細はExpansion Packsのドキュメントを参照してください。

Mac/Linux

すべての git リポジトリに対して Aikido Secrets pre-commit フックをインストールするには、以下を実行します。

Terminal window
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 で以下を実行します。

Terminal window
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-only

Windows (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 フックをテストするには、リポジトリ内に 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:allow

Aikido Secrets pre-commitスキャンを無効化する

Section titled “Aikido Secrets pre-commitスキャンを無効化する”

単一のコミットに対して一時的に pre-commit フックをバイパスする

Terminal window
git commit --no-verify

単一のコミットに対して一時的に Aikido Secrets pre-commit フックをバイパスする

Terminal window
AIKIDO_SKIP_PRE_COMMIT=1 git commit

アンインストールスクリプトを使用するか、以下の手順に従って手動でフックをアンインストールしてください。

Mac/Lunix

インストールスクリプトを使って Aikido pre-commit フックをインストールし、アンインストールしたい場合は、以下を実行します。

Terminal window
curl -fsSL https://raw.githubusercontent.com/AikidoSec/pre-commit/e6f541e65378dd30f3f320628000f837cfba0ec4/installation-samples/install-global/uninstall-aikido-hook.sh | bash

Windows

インストールスクリプトを使って Aikido pre-commit フックをインストールし、アンインストールしたい場合は、以下を実行します。

Terminal window
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 バイナリが完全に削除されます。

  1. グローバルフックディレクトリを削除します。
    • Unix/Linux/macOS: rm -rf ~/.git-hooks
    • Windows: Remove-Item -Recurse -Force $env:USERPROFILE\.git-hooks
  2. Git フックのパスをリセットします。git config --global --unset core.hooksPath
  3. 必要に応じてバイナリを削除します。
    • Unix/Linux/macOS: rm ~/.local/bin/aikido-local-scanner
    • Windows: Remove-Item $env:USERPROFILE\.local\bin\aikido-local-scanner.exe

Aikido Git Hookのみの手動アンインストール

Section titled “Aikido Git Hookのみの手動アンインストール”

すでに独自のグローバル Git フックを使用しており、それを維持したい場合は、フックディレクトリを削除しないでください。

代わりに、以下の手順を実行します。

  1. グローバルフックディレクトリ内の pre-commit ファイルを開きます(例: ~/.git-hooks/pre-commit)。
  2. aikido-local-scanner を呼び出す行、または明らかに Aikido によって追加されたと分かる行のみを削除します。
  3. ファイルを保存します。

Git は Aikido Secrets を実行することなく、既存のフックを引き続き使用します。