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ご相談・お問い合わせ
本記事の内容を自社の状況に当てはめたい場合や、導入・運用の設計を一緒に整理したい場合は、当社までお気軽にご相談ください。担当より折り返しご連絡いたします。
3. **追記するHTMLだけ**(通常は `
` で囲むとよい)。中に h2/h3、段落、リスト、table を使用可。 4. 次の1行を**そのまま**出力:
- 原因: OS レベルのファイル権限不足、または
AI・業務自動化
ChatGPT・Claude APIを活用したAIエージェント開発、n8n・Difyによるワークフロー自動化で繰り返し業務を削減します。まずはどの業務をAI化できるか診断します。