Claude Codeに機密情報を見られないようにする方法|.envファイルを守るセキュリティ対策を初心者向けに解説

Claude Codeで注意したい「シークレット」の漏洩リスク
AIがコードを書いてくれる時代になり、Claude CodeのようなAIコーディングツールを開発に利用する人が増えています。
「バグを直して」
「新しい機能を作って」
「このコードをリファクタリングして」
といった指示を出すだけで、プロジェクト内のファイルを確認し、コードを編集し、必要なコマンドを実行しながら開発作業を進められます。
一方で、AIにコードベースや開発環境へのアクセスを与える場合には、従来のチャットAIとは異なるセキュリティ上の注意が必要です。
特に注意したいのが、APIキー、パスワード、アクセストークン、秘密鍵などの「シークレット」です。
これらがAIの操作対象となるファイルやコマンドの出力に含まれてしまうと、意図しない情報開示につながる可能性があります。
この記事では、Claude Codeを利用するときに知っておきたいシークレット管理について、
という観点から解説します。
Claude Codeとは?
Claude Codeは、Anthropicが提供するAIコーディングツールです。
一般的なチャットAIと異なり、開発環境の中でコードを確認したり、ファイルを編集したり、コマンドを実行したりしながら開発作業を進められることが特徴です。
例えば、
といった作業をAIに依頼できます。
便利になるほど権限管理が重要になる
AIコーディングツールの利便性は、開発環境にアクセスして作業できることによって大きく高まります。
しかし、それは同時に、
「AIがアクセスできる範囲に何が存在しているのか」
を管理する必要があるということでもあります。
例えば、プロジェクトディレクトリに、
などが存在していれば、AIエージェントが扱う可能性のある情報として考えなければなりません。
そのため、Claude Codeを安全に利用するには「AIに正しい指示を出す」だけではなく、「そもそも重要な情報へアクセスできない構成にする」ことが重要です。
.envファイルとは?
.envファイルは、アプリケーションが利用する環境変数などをローカル環境で管理するために使われるファイルです。
例えば、
OPENAI_API_KEY=xxxxxxxx
STRIPE_SECRET_KEY=xxxxxxxx
DATABASE_PASSWORD=xxxxxxxx
のように、アプリケーションが利用する認証情報などが記述されることがあります。
.envに保存される情報はすべて秘密とは限らない
ここで重要なのは、「.envにあるものはすべて同じレベルの秘密情報」というわけではないことです。
例えば、
NODE_ENV=development
のような値は、通常は秘密情報ではありません。
一方で、
API_KEY=xxxxxxxx
DATABASE_PASSWORD=xxxxxxxx
SECRET_TOKEN=xxxxxxxx
などは、第三者に知られることでセキュリティ上の問題につながる可能性があります。
そのため、「.envだから危険」と考えるのではなく、「.envに保存されている値の中にシークレットが含まれている可能性がある」と理解することが重要です。
シークレットが漏洩すると何が起こるのか
漏洩した認証情報の種類によって影響は異なります。
例えばAPIキーが漏洩すると、
といった問題が発生する可能性があります。
データベースの認証情報であれば、
などにつながる可能性があります。
クラウドサービスの強い権限を持つ認証情報であれば、さらに広範囲のリソースへアクセスされる可能性があります。
つまり、「APIキーだから大した情報ではない」と一括りにするのではなく、その認証情報にどのような権限が付与されているのかを確認することが重要です。
なぜClaude Codeでシークレットに注意する必要があるのか
Claude CodeのようなAIエージェントは、ユーザーから依頼された作業を実行するために、プロジェクト内のファイルを確認したり、開発用コマンドを実行したりすることがあります。
ここで重要なのが、
「AIに読ませたくないファイルが、AIからアクセス可能な場所に存在していないか」
という点です。
例えば、プロジェクト内に、
.env
というファイルが存在していて、そこに本番環境のAPIキーが保存されているとします。
この状態でAIエージェントにプロジェクト全体の調査を依頼すると、AIが必要に応じてファイルを参照したり、シェルコマンドを実行したりする可能性があります。
プロンプトインジェクションにも注意する
AIエージェントを利用する場合、プロンプトインジェクションも考慮する必要があります。
例えば、AIが外部から取得したWebページ、ドキュメント、Issue、READMEなどに、AIへ別の指示を与える悪意ある文章が含まれている可能性があります。
AIエージェントがその指示を意図せず実行してしまうと、想定していなかったファイル操作やコマンド実行につながる可能性があります。
そのため、
「AIに悪意はないから安全」
ではなく、
「AIが意図しない指示を処理してしまった場合でも、重要な情報を守れる」
という設計が重要になります。
「.envを読まないで」と指示するだけで安全なのか?
Claude Codeの設定やプロジェクトルールとして、
「.envを読まないこと」
「APIキーを表示しないこと」
といったルールを明示することは、基本的な対策として有効です。
ただし、それだけをセキュリティ対策の中心にするべきではありません。
AIへの指示は、AIが従うべきルールを明確にするためのものであり、認証情報そのものを物理的・技術的に隔離する仕組みとは異なります。
したがって、
「読まないように指示したから大丈夫」
ではなく、
「読まないように指示したうえで、アクセスそのものも制限する」
という多層防御が重要です。
Claude Codeを安全に使うための多層防御
Claude Codeのセキュリティ対策は、一つの設定だけで完結させるのではなく、複数の防御層を組み合わせることが重要です。
基本的には、
1. AIへのルールを定義する
2. ツールの権限を制限する
3. 危険なコマンドを制御する
4. シークレット自体をAIの作業環境から分離する
5. Gitへの混入を検知する
という考え方で整理できます。
CLAUDE.mdでAIにルールを伝える
Claude Codeでは、プロジェクト固有の指示をCLAUDE.mdに記述できます。
例えば、
といったルールを明文化できます。
CLAUDE.mdは「セキュリティポリシーを伝える層」
CLAUDE.mdの役割は、AIにプロジェクト固有のルールや開発方針を伝えることです。
例えば、
「認証情報をコードに直接記述しない」
というルールを明示しておけば、AIが新しいコードを生成するときにも、その方針を考慮させることができます。
ただし、CLAUDE.mdだけにセキュリティを依存するのは避けるべきです。
セキュリティ上重要な制御は、AIへの指示だけではなく、ツールの権限設定や環境側のアクセス制御でも行う必要があります。
settings.jsonなどでツールの権限を制御する
Claude Codeには、ツールの利用や権限に関する設定を行う仕組みがあります。
ここでは、AIがファイルを読み書きしたり、コマンドを実行したりする際の許可範囲を適切に設定することが重要です。
例えば、
「プロジェクト内のすべてのファイルを自由に操作できる」
という状態よりも、
「必要なファイルやコマンドだけを許可する」
という考え方のほうが、セキュリティ上は安全です。
最小権限の原則を適用する
これはClaude Codeに限った話ではありません。
セキュリティでは「最小権限の原則」が重要です。
AIに必要以上の権限を与えないことで、万一AIが意図しない操作を行った場合でも、被害範囲を小さくできます。
例えば、
開発用データベースへのアクセス
と
本番データベースへの書き込み権限
では、リスクが大きく異なります。
AIエージェントを導入する場合も、人間の開発者と同じように「誰が」「どの環境に」「何を実行できるのか」を整理することが重要です。
Hooksで危険な操作を制御する
Claude CodeではHooksを利用して、特定のタイミングで処理を実行する仕組みを構築できます。
例えば、ツール実行前に独自のチェックを行い、条件に該当した場合は処理を拒否するといった制御が考えられます。
危険なコマンドを検知する
例えば、
cat .env
のようなコマンドや、環境変数を大量に出力する操作などを検知し、実行前に確認または拒否する仕組みを設けることができます。
ただし、単純に文字列として「cat .env」だけをブロックすれば十分というわけではありません。
例えば、
cat .env
grep API_KEY .env
printenv
env
pythonでファイルを読む
Node.jsからfsでファイルを読む
など、同じ情報へアクセスする方法は複数あります。
そのため、セキュリティ対策としては「特定のコマンドだけを禁止する」のではなく、「シークレットへアクセスできる経路全体をどう制御するか」を考える必要があります。
そもそもシークレットをAIの作業環境に置かない
最も重要な考え方の一つが、
「AIから守りたいシークレットを、AIが操作するディレクトリに置かない」
という設計です。
例えば、ローカル開発環境で本当に必要な秘密情報をすべて.envに保存するのではなく、OSやクラウドが提供するシークレット管理機能を利用する方法があります。
macOSではKeychainを利用する
macOSにはKeychainという認証情報を安全に管理するための仕組みがあります。
アプリケーションや開発ツールから必要なタイミングで認証情報を取得する設計にすれば、プロジェクトディレクトリに平文のシークレットを置かない構成を検討できます。
クラウドではSecret Managerを利用する
クラウド環境では、専用のシークレット管理サービスを利用する方法があります。
例えば、
などがあります。
これらを利用すると、アプリケーションコードやGitリポジトリにシークレットを直接保存せず、必要なサービスから認証・認可を行ったうえで取得する構成を作れます。
.envを使う場合にも最低限やるべきこと
現実には、ローカル開発で.envを利用するケースも少なくありません。
その場合は、少なくともGitへコミットしないことが重要です。
.gitignoreに.envを追加する
例えば、
.env
.env.local
.env.*.local
など、プロジェクトの構成に応じて対象ファイルを.gitignoreへ追加します。
ただし、.gitignoreに追加しただけでは、すでにGitへコミットされているシークレットは削除されません。
一度Gitの履歴に入ってしまった認証情報は、漏洩した可能性があるものとして扱い、必要に応じて失効・ローテーションする必要があります。
GitleaksでGitへのシークレット混入を検査する
AIがコードを書くようになると、開発者がすべての変更を一行ずつ確認することは難しくなります。
そこで、Gitへコミットする前やCI/CDの中で、シークレットがコードへ混入していないか自動検査する方法があります。
代表的なツールの一つがGitleaksです。
Gitleaksは、Gitリポジトリなどをスキャンして、APIキーや認証情報などのシークレットが含まれていないかを検出するためのオープンソースツールです。
AI開発では「生成後の自動検査」が重要
AIにコードを書かせる場合、
AIがコードを生成する
↓
人間がレビューする
↓
テストを実行する
↓
Gitleaksなどでシークレットを検査する
↓
Gitへコミットする
というように、複数のチェックポイントを設けることができます。
これはAIを信用するかどうかという問題ではありません。
「AIが誤ってシークレットを扱った場合でも、次の防御層で検知する」
という考え方です。
APIキーそのものにも権限を付けすぎない
シークレット管理では、「秘密にする」だけでなく「漏洩した場合の被害を小さくする」ことも重要です。
例えばAPIキーに、
などの対策を組み合わせます。
これにより、万一一つの認証情報が漏洩した場合でも、被害範囲を抑えられる可能性があります。
本番環境の認証情報を開発環境に置かない
特に重要なのが、本番環境と開発環境を分離することです。
例えば、
開発環境
↓
開発用APIキー
↓
開発用データベース
本番環境
↓
本番用認証情報
↓
本番データベース
というように、環境ごとに認証情報を分離します。
開発環境でAIエージェントを利用するのであれば、可能な限り本番環境の強い権限を持つ認証情報を同じ環境へ置かないことが重要です。
これはClaude Codeに限らず、AIエージェントを開発環境へ導入する際の基本的なセキュリティ設計です。
Claude Codeを安全に使うための基本構成
初心者が最初に取り組むのであれば、次のように複数の対策を組み合わせると考えやすいでしょう。
CLAUDE.md
↓
AIに守るべきルールを伝える
settings.jsonなどの権限設定
↓
AIが利用できるツールや操作を制限する
Hooks
↓
危険な操作を検知・制御する
Keychain / Secret Manager
↓
重要なシークレットをファイルから分離する
.gitignore
↓
.envなどをGitへ追加しない
Gitleaks
↓
コミットやCI/CDでシークレット混入を検査する
最小権限
↓
APIキーやサービスアカウントの権限を必要最低限にする
環境分離
↓
開発環境から本番環境の認証情報を分離する
このように、複数の防御層を組み合わせることが重要です。
AIを信用するのではなく、失敗しても安全な環境を作る
AIコーディングツールを安全に利用するうえで、最も重要なのは「AIを信用するかどうか」ではありません。
AIが、
といった可能性を前提に、環境側で被害を抑えられるようにすることです。
これはAIだけではなく、従来のセキュリティ設計にも共通する考え方です。
「絶対に事故を起こさない」
という設計ではなく、
「事故が起きても重要な情報まで到達できない」
という設計にすることが重要です。
まとめ
Claude Codeは、コードを読むだけではなく、ファイル編集やコマンド実行など、開発者の作業そのものを支援できる強力なAIコーディングツールです。
その一方で、AIに与える権限が大きくなるほど、APIキー、パスワード、秘密鍵、アクセストークンなどのシークレット管理が重要になります。
特に、
といった多層防御が重要です。
AIコーディングの生産性を高めることと、セキュリティを強化することは両立できます。
重要なのは、AIに「気をつけて」とお願いするだけではなく、AIが誤った操作をしてもシークレットや本番環境を守れる仕組みを、開発環境そのものに組み込んでおくことです。
参考資料
DX推進・基幹刷新・独自AI開発のご相談
経営と現場をつなぐ業務改革(BPR)からERP基幹刷新、金融機関API連携、自律型AIエージェント実装まで一気通貫で伴走支援。補助金活用や士業連携による安心のガバナンス体制のもと、開発から内製化まで支援します。初回無料ヒアリング・無料見積もり受付中。
