Claude Code とセキュリティ シークレット・本番DBに触れないガードレール(概念)
目次 クリックで開く
Anthropic がリリースした Claude Code は、ターミナル上で動作し、リポジトリ全体を理解してコードの作成・テスト・デバッグを自律的に行う強力なコーディングエージェントです。しかし、その強力な権限ゆえに、開発者が最も懸念するのが「セキュリティ」です。
「不用意に .env ファイルを読み取られて、API キーが外部に送信されないか?」「本番環境のデータベースを操作するスクリプトを勝手に実行されないか?」といった不安は、実務担当者として当然の反応です。本記事では、Claude Code を実務で安全に運用するための、シークレット保護と本番環境へのガードレール(概念と設定)について、IT 実務者の視点から徹底解説します。
Claude Code の動作原理とデータ露出のリスク
Claude Code は単なるチャット AI ではなく、あなたのローカルマシン上で CLI(Command Line Interface) として動作します。これが意味するのは、Claude Code は「実行ユーザーと同じ権限」でファイルシステムやネットワーク、各種コマンドにアクセスできるということです。
CLI ツールとしての権限とリスク
Claude Code を起動すると、カレントディレクトリ以下のファイル構成をスキャンし、必要に応じて cat や ls、さらには npm test や git commit といったコマンドを自ら生成して実行します。ここで発生しうる主なリスクは以下の 3 点です。
- 機密ファイルの読み取り:
.envやconfig/secrets.ymlなど、認証情報が含まれるファイルがコンテキストとして Anthropic のモデルに送信されるリスク。 - 破壊的なコマンドの実行: AI がバグ修正の過程で、意図せず
rm -rfやdocker-compose down -v(ボリューム削除)などの破壊的コマンドを提案・実行するリスク。 - 本番データへのアクセス: ローカル環境から本番 DB へのトンネルが張られている場合、AI が本番データをクエリしたり、削除したりするリスク。
主要 AI エージェントツールのセキュリティ設計比較
Claude Code が他の AI ツールとどう違うのか、セキュリティと権限の観点から比較表にまとめました。
| 機能・特性 | Claude Code | GitHub Copilot (IDE版) | Cursor (Composer) |
|---|---|---|---|
| 実行主体 | ローカルターミナル (CLI) | IDE エディタ内プラグイン | 独自ビルドの IDE (VS Code Fork) |
| ファイルアクセス | リポジトリ全体 + ターミナル権限 | 開いているファイル + 関連コンテキスト | リポジトリ全体 (Indexing) |
| コマンド実行 | 自律実行(ユーザー承認制) | 不可(ターミナルへの貼り付け) | ターミナル内実行(ユーザー承認制) |
| 無視設定 | .gitignore / .claudeignore | .copilotignore (ベータ) | .cursorignore |
| 主な利用シーン | 複雑なリファクタリング・PR作成 | インライン補完・関数作成 | 統合的な AI 開発体験 |
Claude Code の特徴は、「ターミナルを自ら操作する」 という点にあります。この自律性が高いからこそ、後述する「ガードレール」の設計が不可欠になります。特に、複数の SaaS を組み合わせてデータ基盤を構築している場合、認証情報の扱いは極めて慎重に行う必要があります。
例えば、広告データの自動最適化のために BigQuery と連携しているような環境では、サービスアカウントキーの露出は致命的です。こうした基盤構築の全体像については、以下の記事も参考になります。
広告×AIの真価を引き出す。CAPIとBigQueryで構築する「自動最適化」データアーキテクチャ
実践:シークレットと本番DBを守る「3層のガードレール」
Claude Code に「やっていいこと」と「やってはいけないこと」を教え込み、物理的・論理的に制限をかける手法を紹介します。
第1層:物理的隔離(.gitignore と .claudeignore)
最も基本的かつ強力な対策は、Claude Code の「視界」から機密ファイルを消すことです。Claude Code はデフォルトで .gitignore に指定されたファイルを無視しますが、さらに厳格に制御するために .claudeignore を作成することを強く推奨します。
設定手順:
リポジトリのルートディレクトリに .claudeignore ファイルを作成し、以下の内容を記述します。
環境変数・シークレット .env .env.* secrets/ *.pem *.key 本番DB関連のダンプやログ logs/ dumps/ sql_exports/ 重いバイナリや不要なメタデータ .git/ node_modules/ dist/
これにより、Claude Code が grep や find コマンドを内部で実行した際も、これらのファイルは検索対象から除外されます。API キーが含まれるファイルを AI に読み取らせないための、物理的な遮断壁となります。
第2層:論理的制約(CLAUDE.md / AGENTS.md)
Claude Code は、リポジトリ内に CLAUDE.md というファイルが存在する場合、それを「プロジェクトの憲法」として読み取ります。ここで AI の振る舞い(ルール)を明文化できます。
CLAUDE.md への記述例:
セキュリティ・ガイドレール ローカル環境の .env ファイルを絶対に読み取らないこと。 データベース操作(psql, mysql コマンド等)を行う際は、必ず SELECT クエリのみに留め、UPDATE/DELETE/DROP は禁止する。 本番環境(production)へのデプロイコマンドや、本番 DB への接続が予想されるポートフォワードコマンドを実行してはならない。 新しいパッケージをインストールする際は、必ず脆弱性がないか確認すること。 コーディング規約 テストコード(Jest)が存在しない機能追加は認めない。 型安全性を重視し、TypeScript の 'any' 使用は原則禁止。
このように、指示(System Prompt)の一部としてガードレールを組み込むことで、AI が自律的に動く際の「倫理規定」を設けることができます。
第3層:実行の承認フロー(ReadOnly モードと承認制)
Claude Code には、コマンド実行の前に必ずユーザーの承認を求める仕組みが備わっています。さらに安全に運用するために、以下のフラグや設定を活用しましょう。
- –read-only フラグ:
claude --read-onlyで起動すると、Claude Code はファイルの編集やコマンドの実行ができなくなり、コードの分析と提案のみを行うようになります。初めて触るリポジトリや、大規模なリファクタリングの方向性を相談する際に有効です。 - 権限の最小化:
Claude Code を実行するターミナルのユーザー権限自体を制限します。例えば、本番環境へのssh権限を持たない専用のローカルユーザーで作業する、あるいは Docker コンテナ内で Claude Code を動かすといった手法です。
特に、SaaS のアカウント管理や退職者のアクセス権削除を自動化しているような組織では、AI エージェントに対しても「最小権限の原則」を適用することが重要です。この考え方は、以下のアイデンティティ管理(IDAM)の文脈と共通しています。
SaaS増えすぎ問題と退職者のアカウント削除漏れを防ぐ。Entra ID・Okta・ジョーシスを活用した自動化アーキテクチャ
シーン別:Claude Code を安全に運用するワークフロー
では、具体的な実務シーンで Claude Code をどう使うべきか、具体的なファイル構成と手順を見ていきましょう。
1. 新規機能開発における「テスト駆動型」ガードレール
エンジニアが Claude Code を開き、「新しい API エンドポイントを追加して」と依頼するシーンを想定します。この際、リポジトリに AGENTS.md を配置し、Claude Code のサブエージェント(特定の役割に特化した AI)に以下のタスクを割り振ります。
- 役職:QA Agent
- タスク:メインエージェントが書いたコードに対して、カバレッジ 100% のテストコードを作成し、
npm testを実行してパスすることを確認するまで PR(プルリクエスト)の作成を許可しない。
これにより、AI が「動けばいい」という粗悪なコードを本番リポジトリに混入させるのを防ぐ論理的なガードレールが機能します。
2. 経理・バックオフィス自動化スクリプトの作成
非エンジニアの情シス担当者が、CSV データの変換スクリプトを Claude Code で作成する場合を想定します。例えば、「楽楽精算のデータを freee 会計用に変換する Python スクリプト」を作成させるシーンです。
ワークフロー:
- リポジトリに
data/sample.csv(マスキング済みのダミーデータ)を置く。 .claudeignoreにdata/real_*.csvを追加し、本番データが読み取られないようにする。- Claude Code を起動し、「sample.csv の形式を分析して、freee 用のインポート形式に変換するスクリプトを
scripts/convert.pyとして生成して」と指示。 - 生成されたスクリプトをローカルで実行し、期待通りの CSV が出るか目視で確認。
このように、「本物のデータは見せず、構造(ダミー)だけ見せる」 という運用が、セキュリティと効率を両立させるコツです。この手の自動化については、以下の記事で解説しているアーキテクチャも、AI 活用の土台として非常に相性が良いものです。
楽楽精算×freee会計の「CSV手作業」を滅ぼす。経理の完全自動化とアーキテクチャ
よくあるエラーと対処法
Claude Code を運用中に直面しやすいセキュリティ関連のトラブルと解決策をまとめました。
- エラー: “Permission denied” でファイルが読み取れない
- 原因: OS レベルのファイル権限不足、または
.claude
Claude Code導入前に確認すべき「データ保護」の仕様
強力な自律性を持つClaude Codeを組織で導入する際、技術的なガードレールと併せて理解しておくべきなのが、入力したデータの取り扱い(プライバシーポリシー)です。Anthropicの公式ドキュメントに基づき、実務者が押さえるべきポイントを整理しました。
データの学習利用とオプトアウト
デフォルトの状態では、Claude Codeを通じて送信されたプロンプトやコードの断片が、モデルの学習に利用されることは原則としてありません。特に、「Claude Pro」や「Claude Team/Enterprise」プランの認証に関連付けられたAPI経由の利用であれば、データは保護の対象となります。ただし、ベータ版機能や特定の環境設定によっては、改善目的のフィードバック送信が含まれる場合があるため、以下の公式リソースで最新の規約を確認してください。
導入判断のためのセキュリティ・チェックリスト
社内のセキュリティ審査を通す際、以下の3つの項目が満たされているか確認することをお勧めします。これらは、高価なSaaSを導入せずとも、既存のインフラ設計の工夫で対応可能な範囲です。
チェック項目 確認のポイント 推奨される対応 APIキーの管理 Claude Codeを動かすためのAPIキーが環境変数に直書きされていないか。 direnv等を用い、特定のディレクトリ外ではキーを無効化する。 ネットワーク分離 AIが本番DBのセグメントに直接クエリを投げられる状態になっていないか。 踏み台サーバやVPNの権限を、開発ユーザーとAI実行ユーザーで分ける。 ログの監査 AIが実行した「破壊的コマンド」の履歴を後から追跡できるか。 ターミナルのログ保存(scriptコマンド等)を併用し、監査証跡を残す。 データ基盤との「安全な距離」を保つ設計
Claude Codeに直接本番DBを触らせるのはリスクが高いですが、BigQueryなどのデータ基盤にある「加工済みデータ」の分析スクリプトを書かせるのは非常に効率的です。その際は、生データが流れるパイプラインと、AIがアクセスする分析環境を疎結合にするアーキテクチャが理想的です。
例えば、CDP(カスタマーデータプラットフォーム)を自前で構築し、必要なデータだけをAIに渡す設計については、以下の記事が参考になります。
高額なCDPは不要?BigQuery・dbt・リバースETLで構築する「モダンデータスタック」ツール選定と公式事例
よくある誤解:Claude Codeは「クラウド上のIDE」ではない
初心者が陥りやすい誤解として、「Claude Codeのサーバ上に自分のファイルがアップロードされている」という認識がありますが、これは誤りです。Claude Codeはあくまで「あなたのPC上のファイルを、あなたの代わりに読み書きするツール」です。したがって、PC自体のウイルス対策やローカルファイルの暗号化といった、従来のPC管理(エンドポイントセキュリティ)がそのままAI対策の土台となります。
ご相談・お問い合わせ
本記事の内容を自社の状況に当てはめたい場合や、導入・運用の設計を一緒に整理したい場合は、当社までお気軽にご相談ください。担当より折り返しご連絡いたします。
- 原因: OS レベルのファイル権限不足、または