Claude Code のセキュリティ設計|シークレット・本番DBに触れないガードレール
目次 クリックで開く
Anthropic がリリースした Claude Code は、ターミナル上で動作し、リポジトリ全体を理解してコードの作成・テスト・デバッグを自律的に行う強力なコーディングエージェントです。しかし、その強力な権限ゆえに、開発者が最も懸念するのが「セキュリティ」です。
「不用意に .env ファイルを読み取られて、API キーが外部に送信されないか?」「本番環境のデータベースを操作するスクリプトを勝手に実行されないか?」といった不安は、実務担当者として当然の反応です。本記事では、Claude Code を実務で安全に運用するための、シークレット保護と本番環境へのガードレール(概念と設定)について、IT 実務者の視点から徹底解説します。
Claude Code の動作原理とデータ露出のリスク
Claude Code は単なるチャット AI ではなく、あなたのローカルマシン上で CLI(Command Line Interface) として動作します。これが意味するのは、Claude Code は「実行ユーザーと同じ権限」でファイルシステムやネットワーク、各種コマンドにアクセスできるということです。なお、2025年5月のGA以降、Claude Code は CLI のほかデスクトップアプリ(Mac/Windows)、Web(claude.ai/code)、VS Code 拡張、JetBrains 拡張からも利用できます。
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(既定で尊重)/ permissions.deny | .copilotignore (ベータ) | .cursorignore |
| 主な利用シーン | 複雑なリファクタリング・PR作成 | インライン補完・関数作成 | 統合的な AI 開発体験 |
Claude Code の特徴は、「ターミナルを自ら操作する」 という点にあります。この自律性が高いからこそ、後述する「ガードレール」の設計が不可欠になります。特に、複数の SaaS を組み合わせてデータ基盤を構築している場合、認証情報の扱いは極めて慎重に行う必要があります。
例えば、広告データの自動最適化のために BigQuery と連携しているような環境では、サービスアカウントキーの露出は致命的です。こうした基盤構築の全体像については、以下の記事も参考になります。
広告×AIの真価を引き出す。CAPIとBigQueryで構築する「自動最適化」データアーキテクチャ
実践:シークレットと本番DBを守る「3層のガードレール」
Claude Code に「やっていいこと」と「やってはいけないこと」を教え込み、物理的・論理的に制限をかける手法を紹介します。
第1層:物理的隔離(.gitignore と permissions.deny)
最も基本的かつ強力な対策は、Claude Code の「視界」から機密ファイルを消すことです。Claude Code はデフォルトで .gitignore に指定されたファイルを尊重しますが、機密ファイルを確実に読み取らせないためには、.claude/settings.json の permissions.deny に Read(...) ルールを追加します(deny は allow より優先されます)。なお、かつて流布した .claudeignore は公式機能ではなく、読み取りを確実に止められない点に注意してください。
設定手順:
プロジェクトの .claude/settings.json に、以下のような permissions.deny ルールを記述します。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Read(./**/*.pem)",
"Read(./**/*.key)",
"Read(./logs/**)",
"Read(./dumps/**)",
"Read(./sql_exports/**)"
]
}
}
これにより、API キーやダンプを含むファイルを Claude Code が読み取ろうとしても、deny ルールで拒否されます。node_modules/ や dist/ のように、機密ではなくコスト・コンテキスト節約のために外したいだけのものは、.gitignore に入れておけば既定で読み取り対象から外れます。
第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(マスキング済みのダミーデータ)を置く。 .claude/settings.jsonのpermissions.denyに"Read(./data/real_*.csv)"を追加し、本番データが読み取られないようにする。- Claude Code を起動し、「sample.csv の形式を分析して、freee 用のインポート形式に変換するスクリプトを
scripts/convert.pyとして生成して」と指示。 - 生成されたスクリプトをローカルで実行し、期待通りの CSV が出るか目視で確認。
このように、「本物のデータは見せず、構造(ダミー)だけ見せる」 という運用が、セキュリティと効率を両立させるコツです。この手の自動化については、以下の記事で解説しているアーキテクチャも、AI 活用の土台として非常に相性が良いものです。
楽楽精算×freee会計の「CSV手作業」を滅ぼす。経理の完全自動化とアーキテクチャ
組織規模・業種別 × Claude Codeセキュリティ設計の必要レベル × 優先設定項目 早見表
前のセクションでシーン別のClaude Code安全運用ワークフローを説明しましたが、セキュリティ設計の厳格さは「組織規模」「業種・取り扱うデータの機密性」によって必要なレベルが異なります。5名のスタートアップと500名の金融機関が同じセキュリティ設計でClaude Codeを運用する必要はなく、過剰なセキュリティ設計は開発効率を下げます。一方、規制業種(金融・医療・法律)では最低限の設定を怠ると法令違反になるリスクがあります。以下の表は組織規模・業種別の設計指針をまとめたものです。
| 組織規模・業種 | Claude Code利用で特に注意すべきリスク | 優先して設定すべきセキュリティ項目 | 運用ポリシーの整備レベル |
|---|---|---|---|
| スタートアップ・小規模開発チーム (5名以下・非規制業種) |
①API키・AWS/GCPクレデンシャルなどのシークレットをClaude Codeが読み込んでいる.envファイルにアクセスして誤って出力するリスク②プロトタイプ開発でセキュリティより速度優先になり、後から技術的負債として残るリスク③個人Anthropicアカウントを使って業務コードをClaudeに渡すリスク(利用規約・データ処理の整理が必要) | ①.gitignoreに.env・*_credentials.json・*.pemを追加してシークレットファイルをgit管理外にする(最低限の対策)②CLAUDE.mdに「シークレットを含むファイルは直接渡さない・環境変数名のみ参照する」ルールを明記する③Claude Code Pro/Teamプランを使いAnthropicのデータ処理規約(APIリクエストは学習に使われない設定)を確認する | 「使用禁止ディレクトリ・ファイルのリスト」をCLAUDE.mdに記載する程度の軽量なポリシーで十分。全社的なセキュリティポリシー文書の整備より、エンジニア全員が守れる簡潔なルールカード(A4 1枚)の作成を優先する |
| 中堅企業・SaaS開発 (30〜300名・顧客データ保有) |
①顧客の個人情報・契約情報を含むDBスキーマやサンプルデータをClaude Codeのコンテキストに渡すことによる情報漏洩リスク②本番環境のDBに接続した状態でClaude Codeを使用して意図しないデータ変更・削除が実行されるリスク③エンジニアによってClaude Codeの使用ルールが異なり、セキュリティレベルにばらつきが生じるリスク | ①本番DB・ステージングDBの接続情報は開発環境の.envに含めず、開発用モックDBを使う環境変数設計を徹底する②Claude Codeのファイルアクセス許可設定(Settingsの「allowed tools」)で本番環境の設定ファイルを含むディレクトリを除外する③エンジニア向けのClaude Code利用ガイドライン(「渡してよいデータ・渡してはいけないデータ」の基準)を整備して全員に周知する | 開発環境・本番環境の分離基準とClaude Code使用可能な環境の明示、定期的な(半期ごとの)シークレット・ローテーション手順を含む運用ポリシー文書(5〜10ページ)の整備を推奨。Claude Code使用状況のログ収集(どのファイルに何回アクセスしたか)は運用成熟度に応じて段階的に導入する |
| 金融・保険・証券 (金融商品取引法・銀行法等規制業種) |
①顧客の金融情報(口座番号・残高・取引履歴)がコードに含まれるサンプルデータとしてClaude Codeに渡されるリスク②AIツールの利用が社内のITセキュリティポリシー・金融機関のシステムリスク管理指針(金融庁ガイドライン)に準拠しているかの確認が未整備のリスク③Claude Codeが生成したコードにセキュリティ脆弱性(SQLインジェクション・認証バイパス等)が含まれていても気づかずに本番デプロイするリスク | ①金融庁「金融機関等のシステムリスク管理に関するガイドライン」のAIツール利用に関する項目を確認して内部統制手続きに組み込む②Anthropic APIの「ビジネスプラン/エンタープライズプラン」を使用してデータ処理の契約上の保証(DPA)を取得する③Claude Codeが生成したコードを本番デプロイ前に必ず人間のセキュリティレビュー(SAST/DASTツールによる自動スキャン含む)を実施することをCI/CDパイプラインに組み込む | 金融機関はAIツール利用に関する内部規程(「生成AIの業務利用に関する規程」)を整備してコンプライアンス部門・システムリスク管理部門の承認を得た上でClaude Codeを使用することが求められる。使用記録(日時・担当者・使用目的・処理したデータの分類)のログ保存を義務付けることが内部監査・外部監査への対応で必要になる |
| 医療・クリニック・ヘルスケア (個人情報保護法・医療法) |
①電子カルテ・患者情報を含むDBのスキーマやサンプルデータをClaude Codeに渡すことによる患者情報漏洩リスク②医療機関のシステム開発でClaude Codeが生成したコードが薬機法・医療機器規制(クラスIII・IVの医療機器ソフトウェア)に該当する場合の規制適合未確認リスク③クラウドサービス経由でのデータ処理が医療情報システムの安全管理ガイドライン(厚生労働省)に準拠しているかの未確認リスク | ①患者氏名・生年月日・診療情報は仮名化・匿名化した上でテストデータを作成してClaude Codeに渡す設計を徹底する②医療情報システムの安全管理に関するガイドライン(厚生労働省、第6.0版以降)のクラウドサービス利用条件を確認してAnthropicのAPIが該当要件を満たすかをシステム担当者・法務が確認する③医療機器ソフトウェア(SaMD)の開発にClaude Codeを使う場合はQMS(品質マネジメントシステム)の記録にAIツールの使用を記載する | 医療機関では「患者情報を含むデータはClaude Codeに渡さない」という単純明快な禁止ルールを全エンジニアに徹底することが最初のステップ。ガイドライン準拠の確認は医療情報技師・CISO等の専門家が担当するプロセスとして整備する |
この表でClaude Codeのセキュリティ設計において組織規模を問わず共通する最重要原則が「本番データ・シークレットとClaude Codeのコンテキストを物理的に分離する設計」です。Claude Codeが読み込めるファイルの範囲を意図的に制限すること(.envファイルの除外・本番接続情報の別管理)だけで、セキュリティインシデントの8割以上のリスクを低減できます。高度な監査ログ・アクセス制御の整備は中長期で取り組むとして、「渡してはいけないデータの明示」という最も簡単な対策を最初に実施することが、Claude Codeの安全な組織展開の出発点です。
よくあるエラーと対処法
Claude Code を運用中に直面しやすいセキュリティ関連のトラブルと解決策をまとめました。
- エラー: “Permission denied” でファイルが読み取れない
- 原因: OS レベルのファイル権限不足、または
.claude本記事で解説した3層のガードレール(permissions.deny・CLAUDE.md・ReadOnlyモード)を自社のリポジトリ構成に合わせて実装したい場合や、開発チームへの展開方針を固めたい場合は、Claude Code 導入支援でPoCの進め方を一緒に設計できます。
生成AIの法人導入・セキュリティ設計のご相談
ChatGPTやClaudeなど生成AIのプラン選定・セキュアな全社導入・権限/ログ設計を、貴社の体制に合わせて整理します。すでに導入済みの環境について『この設計で問題ないか』を確認したい、という導入前後のセカンドオピニオンにも対応しています。
- 原因: OS レベルのファイル権限不足、または
AI・業務自動化
ChatGPT・Claude APIを活用したAIエージェント開発、n8n・Difyによるワークフロー自動化で繰り返し業務を削減します。まずはどの業務をAI化できるか診断します。