Secure Steady
エージェントと機密ファイル - AI エージェントと機密ファイルの取り扱い の使い方・オプション・サンプル

エージェントと機密ファイル - AI エージェントと機密ファイルの取り扱い

Claude Code・Cursor・GitHub Copilot 等の AI コーディングエージェントが .env や秘密鍵などの機密ファイルを読み取るリスクと、安全に使うための設定・運用方法を解説する。

AI エージェントが読める機密ファイルとは

AI コーディングエージェント(Claude Code、Cursor、GitHub Copilot など)は、プロジェクトフォルダの中身を広く読み取ってコードの提案や修正を行います。

これは便利な反面、フォルダ内にある「人間には見せてもいいが外部に出しては困る」ファイルまで AI が読んでしまう可能性があるということです。

以下は、プロジェクトフォルダに含まれがちな機密ファイルの代表例です。

ファイル名 中身 漏洩時の影響
.env / .env.local API キー、データベースの接続先パスワード、外部サービスのシークレット 不正アクセス、データベースの改ざん・漏洩
.aws/credentials AWS のアクセスキーとシークレットキー クラウドリソースの不正操作、高額課金
id_rsa / id_ed25519 SSH の秘密鍵 サーバーへの不正ログイン
service-account.json Google Cloud のサービスアカウントキー GCP リソースの不正操作
.npmrc npm の認証トークン プライベートパッケージの不正公開・取得
docker/config.json Docker レジストリの認証情報 コンテナイメージの不正取得・改ざん
.pgpass / .my.cnf データベースのパスワード データベースへの直接アクセス

これらのファイルは通常 .gitignore で Git の管理対象外にされていますが、AI エージェントは Git の管理状況に関係なくフォルダ内のファイルを読み取ります。

「Git にコミットしていないから安全」とは限りません。

実際のリスクシナリオ

AI エージェントが機密ファイルを読み取ると、具体的にどのような問題が起きるのでしょうか。

以下に代表的なシナリオをまとめます。

シナリオ 仕組み 結果
クラウドへの送信 エージェントが .env の内容をコンテキスト(文脈情報)としてクラウド上の AI サーバーに送信する API キーやパスワードが AI 提供元のサーバーに保存される可能性がある
MCP サーバー経由の外部送信 MCP(Model Context Protocol)で接続した外部ツールが、エージェントの読み取った機密情報にアクセスする 悪意ある MCP サーバーを介して秘密鍵やトークンが第三者に渡る
チャット履歴への残存 エージェントとの対話ログに .env の値やパスワードがそのまま記録される 共有端末やクラウド同期されたチャット履歴から他人に閲覧される
提案コードへのハードコード エージェントが .env から読み取った実際の値を、提案するコードの中に直接埋め込む そのままコミットすると Git の履歴にパスワードや API キーが残る
プロンプトインジェクションとの組み合わせ プロジェクト内のファイルに仕込まれた悪意ある指示が、エージェントに機密ファイルの内容を出力させる 攻撃者が意図的に機密情報を窃取する

いずれのケースも、ユーザーが意図的に機密情報を入力していないにもかかわらず、エージェントが自動的にファイルを読み取ることで発生します。

従来の「AI に機密情報を入力しない」という注意だけでは防ぎきれない点が、エージェント特有のリスクです。

安全にエージェントを使うための対策

AI エージェント特有のリスクに対しては、「エージェントに読ませない」「機密情報をファイルに置かない」「送信前に確認する」の 3 つの方向で対策します。

対策 具体的な方法 補足
除外設定ファイルの整備 .clignore(Claude Code 用)、.cursorignore(Cursor 用)、.github/copilot-ignore(Copilot 用)に .env、秘密鍵、認証ファイルのパターンを記載する .gitignore と同じ書式で書ける。.gitignore に書いてあっても AI エージェント用に別途設定が必要
シークレットマネージャーの利用 API キーやパスワードをファイルに書かず、AWS Secrets Manager・Google Secret Manager・Azure Key Vault・1Password CLI 等から実行時に取得する ファイル自体が存在しなければエージェントに読まれることもない
ワークスペースの権限スコープ制限 エージェントが読み取れるフォルダを必要最小限に制限する。ホームディレクトリ全体ではなくプロジェクトフォルダのみを開く .aws/credentials 等のホームディレクトリ直下の機密ファイルへのアクセスを防ぐ
送信前のレビュー エージェントがクラウドに送信するコンテキストを確認できるツール(プレビュー機能)を活用する。提案されたコードに実際の秘密値が含まれていないか確認してからコミットする 多くのエージェントには送信内容の確認機能がある
コードレビューのチェックポイント プルリクエスト時にハードコードされた API キーやパスワードがないかを確認項目に入れる。git-secrets 等のツールで自動検出する CI に組み込むと漏れを防ぎやすい

まずは .gitignore と同じ要領で各エージェントの除外設定ファイルを作るところから始めましょう。

数分で終わる作業ですが、効果は大きいです。

関連トピック