日本語

シークレットスキャン

Secret Scanningは、シェル履歴ファイル(.zsh_history、.bash_history)、AIコーディングエージェントのセッション、認証情報ファイルなど、チームのデバイス上のローカルファイルに残されたハードコードされたシークレットを検出し、そのクリーンアップを支援します。curl コマンドや環境変数を貼り付けたことで、APIキーやトークンが誤ってシェル履歴に漏れてしまうことはよくあり、そうしたシークレットは何か月も残り続けることがあります。

スキャンはすべてデバイス上で実行されます。すべての検出結果が表示されるため、開発者は自分のマシン上で直接それらを確認し、修正できます。

ディスク全体をクロールするわけではありません。履歴ファイルや認証情報ファイルなど、シークレットが蓄積しやすい場所のみを確認します。完全なリストについてはスキャン対象を参照してください。

Secret ScanningはAikido Device Protectionの一部です。まだエージェントをデプロイしていない場合は、Device Protectionのデプロイを参照してください。

仕組み

Secret Scanningは、シークレットの値がデバイス上に留まるように設計されています。

  • スキャンは完全にローカルで行われます。 エージェントはデバイス自体でファイルを読み取り、検査します。ファイルの内容がAikidoにアップロードされることはありません。
  • シークレットの値はデバイス上に留まります。 検出されたシークレットの完全な値が送信されることはありません。デスクトップクライアントではマスクされた状態(例: [AIK********...])で表示されるため、値を露出させることなく識別できます。
  • 報告されるのはシークレットの種類と数文字のみです。 Aikidoが受け取るのは、検出されたシークレットの_種類_(例: 「認可トークン」)と、検出結果を識別するのに十分な値の数文字のみです。完全なシークレットが送信されることはありません。これにより、シークレットそのものを渡すことなく、どのような種類のシークレットが露出しているかを組織が把握できます。
flowchart LR
    A[Files on device<br/>e.g. .zsh_history] --> B[On-device scan]
    B --> C[Findings shown locally<br/>file, type, masked preview]
    B --> D[Secret type and a few<br/>characters reported to Aikido]

    classDef local fill:#d6f5d6,stroke:#27ae60;
    classDef cloud fill:#fff2cc,stroke:#e1a100;
    class C local;
    class D cloud;

検出されたシークレットの確認

デスクトップクライアントで Secrets タブを開くと、エージェントが検出したすべての項目を確認できます。このタブには、検出されたシークレットの総数が表示されます。

.zsh_history内で検出されたシークレットをマスクされた値で一覧表示しているSecretsタブ

各検出結果には以下が表示されます。

  • Type - 検出された内容の説明。例: 「curlコマンドのヘッダーで指定された潜在的な認可トークンを検出しました。これにより、curlでアクセスされたリソースが侵害される可能性があります。」
  • Location - シークレットが見つかったファイルと行。例: /Users/samuel/.zsh_history:370。同じ種類のシークレットが複数の場所に出現する場合は、まとめてグループ化されます(例: 「and 8 more」)。行を展開すると、すべての出現箇所を確認できます。
  • Value - 検出されたシークレット。常にマスクされています。

シークレットのクリーンアップ

シークレットは1つずつ、または一括で修正できます。

  • 1つずつ - 検出結果の erase アイコンをクリックして、個々のシークレットをクリーンアップします。
  • 一括 - チェックボックスを使って複数の検出結果を選択するか、特定の種類のシークレットをすべて選択し、1回の操作でクリーンアップします。

クリーンアップを行うと、デバイス上のファイルからシークレットが削除されます。

クリーンアップは、書き換え可能なカテゴリであるシェル履歴とAIエージェントセッションでのみ利用できます。認証情報ファイル、クラウド認証情報、AIツール認証情報の検出結果は報告されますが変更されないため、認証情報をローテーションし、設定ファイルをご自身で更新して修正してください。これらの認証情報が再び平文で保存されないようにするには、シークレットを安全に保存するを参照してください。

シークレットをクリーンアップしても、ローカルファイルから削除されるだけです。シークレットがまだ有効な場合は、使用できなくなるよう、発行元でローテーションまたは失効させてください。

スキャン対象

検出結果は5つのカテゴリに分類されます。シェル履歴とAIエージェントセッションは、その場でクリーンアップできます。3つの認証情報カテゴリは検出のみです。これらのファイルはツールが読み込む設定であるため、Aikidoは検出内容を報告しますが、書き換えることはありません。

カテゴリ対象範囲クリーンアップ
シェル履歴シェルおよびREPLの履歴ファイル書き換え可能
AIエージェントセッションローカルAIコーディングエージェントのセッショントランスクリプトとプロンプト履歴書き換え可能
認証情報ファイルパッケージマネージャー、git、CI、データベースの認証情報ファイル検出のみ
クラウド認証情報クラウドプロバイダーおよびインフラストラクチャツールの認証情報検出のみ
AIツール認証情報AIツールおよびMCPクライアントの設定ファイルと認証情報ファイル検出のみ

以下のパスはすべて、ユーザーのホームディレクトリからの相対パスです

シェル履歴

すべてのプラットフォーム: .zsh_history, .bash_history, .local/share/fish/fish_history, .ksh_history, .history, .sh_history, .python_history, .node_repl_history, .psql_history, .mysql_history, .irb_history, .rediscli_history

macOSおよびLinux: .zsh_sessions/*.history(new), .bash_sessions/*.history(new), .local/share/powershell/PSReadLine/*_history.txt

Windows: AppData/Roaming/Microsoft/Windows/PowerShell/PSReadLine/*_history.txt, AppData/Roaming/postgresql/psql_history

これらの固定の場所に加えて、エージェントはユーザー自身が設定した履歴パスも追跡します。対象となるのは、.zshenv、.zshrc、.zprofile、.zlogin、.bashrc、.bash_profile、.bash_login、.kshrc、.profile で設定された HISTFILE=、およびPowerShellプロファイル(Documents/(Windows)PowerShell/*.ps1、それに相当するOneDrive内のファイル、.config/powershell/*.ps1)で設定された -HistorySavePath です。

AIエージェントセッション

.claude/projects/*/*.jsonl, .claude/history.jsonl, .claude.json, .claude/paste-cache/*.txt, .codex/sessions/*/*/*/rollout-*.jsonl, .codex/history.jsonl, .gemini/tmp/*/chats/*

認証情報ファイル

すべてのプラットフォーム: .npmrc, .yarnrc.yml, .pypirc, .config/pip/pip.conf, .pip/pip.conf, .gem/credentials, .cargo/credentials(.toml), .m2/settings.xml, .gradle/gradle.properties, .config/composer/auth.json, .composer/auth.json, .nuget/NuGet/NuGet.Config, .git-credentials, .config/git/credentials, .config/gh/hosts.yml, .config/glab-cli/config.yml, .netrc, .pgpass, .my.cnf, .circleci/cli.yml, .config/argocd/config

Windows: AppData/Roaming/pip/pip.ini, AppData/Roaming/Composer/auth.json, AppData/Roaming/NuGet/NuGet.Config, AppData/Roaming/GitHub CLI/hosts.yml, _netrc, AppData/Roaming/postgresql/pgpass.conf

クラウド認証情報

すべてのプラットフォーム: .aws/credentials, .aws/config, .config/gcloud/application_default_credentials.json, .azure/msal_token_cache.json, .azure/service_principal_entries.json, .kube/config, .docker/config.json, .vault-token, .terraform.d/credentials.tfrc.json, .config/doctl/config.yaml, .config/hcloud/cli.toml, .aliyun/config.json, .fly/config.yml

macOSおよびLinux: Library/Application Support/doctl/config.yaml

Windows: AppData/Roaming/gcloud/application_default_credentials.json, AppData/Roaming/terraform.d/credentials.tfrc.json

AIツール認証情報

すべてのプラットフォーム: .claude/settings.json, .claude/settings.local.json, .claude/.credentials.json, .codex/auth.json, .codex/config.toml, .gemini/settings.json, .gemini/oauth_creds.json, .cursor/mcp.json, .config/opencode/opencode.json, .local/share/opencode/auth.json, .codeium/windsurf/mcp_config.json, .config/github-copilot/apps.json, .config/github-copilot/hosts.json

macOSおよびLinux: Library/Application Support/Claude/claude_desktop_config.json, Library/Application Support/Code/User/mcp.json, .config/Code/User/mcp.json

Windows: AppData/Roaming/Claude/claude_desktop_config.json, AppData/Roaming/Code/User/mcp.json