Claude Code とシークレット管理|環境変数・Vault・GitHub Actions の型
目次 クリックで開く
Anthropicが提供するCLIツール「Claude Code」は、開発者がターミナルから直接AIと対話し、コードの編集、テスト、実行を依頼できる強力なツールです。しかし、その強力さゆえに、実務者が最も警戒すべきが「シークレット(APIキー、パスワード、トークン)の取り扱い」です。
AIエージェントは指示に基づきリポジトリ内のファイルを走査します。もしシークレットがハードコードされていたり、不適切な形式で環境変数が設定されていたりすれば、それらがAIへのプロンプトとして送信されたり、意図せずリポジトリにコミットされたりするリスクが生じます。本記事では、IT実務担当者がClaude Codeを導入する際に構築すべき、シークレット管理の「型」を徹底解説します。
1. Claude Code利用におけるシークレット管理の重要性
Claude Codeを利用する際、最低限ANTHROPIC_API_KEYが必要となります。これをどのように管理するかは、単なる「動く・動かない」の問題ではなく、組織のセキュリティガバナンスそのものです。
AIエージェントが「ファイル全体」を読み込むリスク
Claude Codeは、プロジェクトの構造を理解するためにソースコードを読み取ります。もし開発者が利便性のために const API_KEY = "sk-ant-..." とソースコードに直接記述していた場合、Claude Codeはその値を「コンテキスト」として認識し、Anthropicのサーバーへ送信する可能性があります。これはデータ保護の観点から極めて危険です。
APIキー漏洩時の損害
APIキーが漏洩すれば、第三者による不正利用を招き、高額な請求が発生するだけでなく、機密情報の流出につながる恐れもあります。特に、インフラ構築に関わるリポジトリでクラウドプロバイダーの認証情報が漏洩した場合、被害は甚大です。
Claude Codeの実行ログや履歴には、入力したコマンドが残ります。環境変数を
export KEY=value と直接ターミナルに打ち込むのは避け、安全な注入方法を選択してください。
2. ローカル環境における環境変数の管理
開発者が個々のPCでClaude Codeを使用する場合、最も一般的かつ推奨されるのが環境変数の活用です。
.envファイルの正しい運用
プロジェクトのルートディレクトリに .env ファイルを作成し、シークレットを管理します。ただし、以下の2点を徹底しなければなりません。
- .gitignoreへの追記: 必ず
.envをGitの管理対象外にします。 - .env.exampleの提供: キー名のみを記載したテンプレートファイルを用意し、チームメンバーが各自で値を設定できるようにします。
direnvによる自動切り替え
複数のプロジェクトで異なるAPIキーを使い分ける場合、direnv の導入が有効です。ディレクトリを移動するだけで、そのプロジェクト専用の CLAUDE_API_KEY が自動的にエクスポートされます。
業務のデジタル化が進む中で、こうした開発環境の整備は、単なる効率化を超えた「安全なDX」の基盤となります。例えば、Excelと紙の限界を突破する「Google Workspace × AppSheet」業務DX完全ガイドで解説しているような市民開発の現場でも、最終的にはこうしたセキュアなデータ接続の考え方が不可欠になります。
3. 外部シークレットマネージャー(Vault)との連携
エンタープライズ環境では、ローカルの .env ファイルだけでは不十分です。集中管理のためにシークレットマネージャーを利用します。
HashiCorp Vaultの活用
HashiCorp Vaultを使用すると、必要な時だけ有効な「動的シークレット」を発行できます。Claude Codeを実行する前に、Vaultからトークンを取得し、一時的な環境変数としてメモリ上に展開するフローを構築します。
AWS/GCPシークレットマネージャー
クラウドネイティブな環境では、AWS Secrets ManagerやGCP Secret Managerが適しています。CLI経由でこれらの値をフェッチし、Claude Codeに渡すスクリプトを作成することで、ローカルディスクに平文のキーを保存せずに済みます。
4. CI/CDパイプライン(GitHub Actions)でのシークレット運用
Claude CodeをCI/CDワークフローに組み込み、自動レビューや修正提案を行わせる場合、GitHub ActionsのSecrets機能を活用します。
GitHub Actions Secretsへの設定
リポジトリ設定の [Settings] > [Secrets and variables] > [Actions] から、CLAUDE_API_KEY を登録します。ワークフロー定義(YAML)では以下のように参照します。
jobs:
claude-review:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run Claude Code
env:
ANTHROPIC_API_KEY: ${{ secrets.CLAUDE_API_KEY }}
run: |
npm install -g @anthropic-ai/claude-code
claude "Review the changes and suggest improvements"
こうした自動化は、バックオフィスのシステム連携でも重要です。楽楽精算×freee会計の「CSV手作業」を滅ぼす。経理の完全自動化とアーキテクチャで紹介しているような自動化フローにおいても、API連携の安全性を担保するシークレット管理は共通の課題です。
5. シークレット管理手法の比較表
各手法の特性を、実務的な観点からまとめました。組織の規模やセキュリティ要件に合わせて選択してください。
| 手法 | 利便性 | セキュリティ | 推奨シーン | コスト(参考) |
|---|---|---|---|---|
| .env + .gitignore | 極めて高い | 低(個人依存) | 個人開発・小規模プロトタイプ | 無料 |
| GitHub Actions Secrets | 高い | 中 | CI/CDでの自動レビュー運用 | GitHubプランに準ずる |
| HashiCorp Vault | 中 | 極めて高い | 金融・医療など高セキュリティ要求 | セルフホストまたはCloud版(有料) |
| Cloud Secret Manager | 中 | 高い | AWS/GCP等のクラウド基盤利用者 | 従量課金(0.03〜0.06$/月/secret程度) |
※料金は2026年時点の各公式サイトの公開情報に基づきます。最新情報は各社公式サイト(AWS, GCP, HashiCorp)をご確認ください。
6. 実務で役立つセキュアな設定ステップバイステップ
Claude Codeを安全に使い始めるための具体的な手順を整理します。
Step 1:シークレット管理のポリシー策定
まず「誰が」「どのレベルのキー」を持つべきかを定義します。全社共通の管理権限キーを配布してはいけません。プロジェクト単位、あるいは個人単位でIAM(Identity and Access Management)に基づいた最小権限のキーを発行してください。
Step 2:ローカル開発環境のセットアップ
anthropic-ai/claude-codeをインストールします。- リポジトリのルートに
.gitignoreが存在することを確認し、.envを追記します。 - OSの環境変数(zshrc/bashrc等)に直接書くのではなく、前述の
direnvや、実行時のみキーを読み込むラッパースクリプトの使用を検討してください。
Step 3:CI/CD環境への展開
GitHub Actionsを利用する場合、OIDCを用いた認証を優先的に検討してください。これにより、永続的なAPIキーをSecretsに保存せず、実行の都度、一時的な権限をクラウドから取得することが可能になります。
退職者が発生した際の権限削除も重要です。SaaS増えすぎ問題と退職者のアカウント削除漏れを防ぐ。Entra ID・Okta・ジョーシスを活用した自動化アーキテクチャで述べているようなID管理の仕組みと、Claude CodeのAPIキー管理を連携させることで、組織全体のガバナンスが向上します。
7. よくあるエラーと対処法
実務で直面しやすいトラブルとその解決策です。
- Error: API key not found
- 原因: 環境変数
ANTHROPIC_API_KEYが正しくロードされていない。 - 対処:
echo $ANTHROPIC_API_KEYで値がセットされているか確認。direnv allowを忘れていないかチェック。
- 原因: 環境変数
- Permission Denied (403 Forbidden)
- 原因: キーに割り当てられた権限が不足している、またはキーが無効化されている。
- 対処: Anthropicのコンソール画面で、該当するAPIキーのステータスと、Usageリミットに達していないかを確認。
- Claude Codeが意図しないファイルを読み取ってしまう
- 原因:
.gitignoreや.claudeignore(もしあれば)の設定漏れ。 - 対処: 読み取られたくない機密情報やログファイルが含まれるディレクトリを無視リストに追加。
- 原因:
8. まとめ:AI開発効率とガバナンスの両立
Claude Codeは開発のスピードを劇的に向上させますが、それは「正しいセキュリティ」の上に成り立つものです。環境変数による基本的な保護から、VaultやGitHub Actions Secretsを用いた高度な管理まで、プロジェクトの重要度に応じた「型」を適用することが、実務担当者には求められます。
APIキー一つとっても、それはシステムへの「鍵」です。本記事で紹介した手法を参考に、利便性を損なわず、かつ堅牢な開発環境を構築してください。最新の仕様については、常にAnthropic公式ドキュメントを参照し、最新のベストプラクティスをキャッチアップし続けることが肝要です。
実務導入前に確認すべき「シークレット漏洩防止」チェックリスト
Claude Codeの導入において、技術的な設定以上に重要なのが「ヒューマンエラーの防止」です。設定したつもりでも、実際にはリスクが残っているケースが多々あります。以下のチェックリストを用いて、貴社の環境を再点検してください。
| チェック項目 | 確認のポイント | 推奨される対応 |
|---|---|---|
| Git履歴の汚染 | 過去のコミットにAPIキーが含まれていないか? | bfg-repo-cleaner等で履歴から完全に削除する。 |
| .gitignoreの反映 | .env追加前に一度でもpushしていないか? |
キャッシュを削除(git rm --cached .env)して再コミット。 |
| シェルの履歴(History) | コマンド引数に直接キーを渡していないか? | HISTCONTROL=ignorespaceを設定し、先頭スペースで履歴除外。 |
| CI/CDのログ出力 | 実行ログに環境変数がマスクされずに表示されていないか? | GitHub Actionsの::add-mask::コマンドを活用する。 |
よくある誤解:.gitignoreに書けば「絶対に安心」か?
実務で最も多いミスは、「既にGit管理下にあるファイルを後から.gitignoreに追記しても、追跡は止まらない」という点です。もし一度でもAPIキーを書き込んだ .env をコミットしてしまった場合、たとえ後から無視設定をしても、リポジトリの履歴(History)を遡れば誰でもキーを閲覧できてしまいます。
万が一、誤ってコミットしてしまった場合は、キーを即座に無効化(Revoke)し、新しいキーを発行するのが鉄則です。こうした「鍵」の管理権限の棚卸しについては、SaaS増えすぎ問題と退職者のアカウント削除漏れを防ぐ。Entra ID・Okta・ジョーシスを活用した自動化アーキテクチャの考え方が、開発ツールのAPI管理においても非常に有効です。
公式リソースと継続的な監査
AIエージェントの進化は速く、セキュリティのベストプラクティスも更新され続けています。特に、GitHub Actionsとの連携におけるOIDC(OpenID Connect)の詳細は、以下の公式ドキュメントを定期的に参照してください。
また、大規模な組織で多数のSaaSやAPIを併用している場合は、「モダンデータスタック」ツール選定の際と同様に、情報の「出入り口」を中央集権的に監視できるアーキテクチャの構築を検討することをお勧めします。
ご相談・お問い合わせ
本記事の内容を自社の状況に当てはめたい場合や、導入・運用の設計を一緒に整理したい場合は、当社までお気軽にご相談ください。担当より折り返しご連絡いたします。