Claude Codeを企業で安全に使うためのMCP・権限管理・プロンプトキャッシュ設計
AIエージェントを「便利な開発ツール」として導入すると事故ります。 リクステップでは、Claude Codeをシェル実行権限と外部接続権限を持つ開発主体として扱い、 セキュリティ設計、監査、MCP統制、コスト最適化まで含めて導入判断します。
SECURITY FIRST AI DEVELOPMENT
Claude Codeの導入可否は、AIの性能ではなく「権限をどう閉じるか」で決まります。
ファイルを読める。編集できる。シェルを叩ける。MCPで外部サービスに触れる。 これは開発効率の話であると同時に、情報漏洩、サプライチェーン、内部統制の話です。
01
Permission
denyを最優先にし、危険操作を組織設定で封じる
02
MCP
未認証・未承認の外部接続を業務環境に入れない
03
Cache
速度最適化の仕組みを理解し、機密混入を防ぐ
recustep-secure-ai-workspace
SECURITY
managed-settings.json
MCP
managed-mcp.json
POLICY
CLAUDE.md
AUDIT
otel-collector.yaml
RUNBOOK
incident.md
$ claude /permissions
DENY Read(./.env*) / Read(~/.ssh/**) / Bash(curl *)
ASK Bash(npm install *) / Edit(./scripts/**)
ALLOW Read(./src/**) / Bash(npm test)
MCP connection graph
Claude Code
client
Managed MCP
allowlist
Internal API
read-only
SECURITY STATUS
Claude Codeは「権限を持った開発エージェント」である
Claude Codeを企業に入れるとき、最初に捨てるべき考え方があります。 それは「AIチャットの延長として便利に使う」という見方です。 Claude Codeは、リポジトリを読み、ファイルを編集し、テストを実行し、シェルコマンドを叩き、必要に応じて外部ツールへ接続します。 つまり、開発者の手元にある権限をAIが代行できる状態になります。
これは強力です。調査、修正、テスト、リファクタ、ドキュメント更新まで一気に進みます。 しかし、強力であるほど統制が必要です。 セキュリティに強いエンジニアなら、ここで「どのモデルが賢いか」より先に「そのAIに何を読ませ、何を実行させ、何を外へ送らせないか」を設計します。
この記事の結論:企業利用の合格ライン
企業でClaude Codeを使うなら、合格ラインは「開発者が気をつける」ではありません。 個人の注意力に依存する設計は、AIエージェント運用では必ず崩れます。 AIは疲れません。人間が見落とした許可を、速く、何度でも使います。
だからこそ、リクステップではClaude Code導入を次の5条件で判断します。 これらを満たせない段階では、全社展開ではなく限定PoCに留めるべきです。
Managed Settingsで、権限ルールとbypass禁止を組織側から強制できている
秘密情報と本番系ファイルは、AIへのお願いではなくRead/Edit denyで止めている
MCPは認証・最小権限・allowlist・監査ログが揃ったものだけを許可している
OpenTelemetryやMCPサーバー側ログで、後から操作を追跡できる
プロンプトキャッシュを理解し、長い文脈に機密を混ぜない運用になっている
ここまでやると、Claude Codeは単なる生産性ツールではなく、統制されたAI開発基盤になります。 セキュリティに強いエンジニアが見るべきなのは、AIの回答品質だけではありません。 権限境界、実行経路、ログ、認証、データ分類、キャッシュ、そして事故時の止め方です。
企業導入で見るべき5つのリスク
Claude Codeのリスクは、単なる情報漏洩だけではありません。 AIが外部入力を読み、ツールを選び、コマンドを組み立てるため、従来のIDEやCIとは違う攻撃面が生まれます。
| リスク | 起きること | 対策 |
|---|---|---|
| プロンプトインジェクション | README、Issue、Web記事、ログに埋め込まれた指示で、AIが意図しない読み取りやコマンド実行を試みる。 | 信頼境界の分離、Plan Mode、denyルール、サンドボックス、外部入力の扱いを明示したCLAUDE.md。 |
| 機密情報の混入 | .env、SSH鍵、クラウド認証情報、テストデータ、障害ログがコンテキストに入る。 | Read deny、secret scan、作業ディレクトリ分離、ログ・fixtureの棚卸し、ZDR契約の検討。 |
| 権限の暴走 | 削除、外部送信、デプロイ、npm publish、git pushなどがAIの流れで実行される。 | deny優先、ask必須、bypass禁止、危険コマンドの管理設定、CI/CD変更のレビュー必須化。 |
| MCP経由のサプライチェーン汚染 | 未検証のMCPサーバーが、社内データや外部APIにAIの手を伸ばす。 | managed-mcp.json、URL/commandベースのallowlist、認証必須、読み取り専用から開始。 |
| 監査不能 | 誰が、どのMCPツールで、どのリポジトリや外部サービスを触ったか追跡できない。 | OpenTelemetry、MCP tool detailログ、SIEM連携、承認履歴とインシデント手順の整備。 |
脅威モデル:Claude Codeの信頼境界を分けて考える
セキュリティ設計で最初にやるべきことは、信頼境界を分けることです。 Claude Codeの導入では、少なくとも次の境界を分けて考えます。
| 境界 | 信頼してよいもの | 信頼してはいけないもの |
|---|---|---|
| ユーザー入力 | 社内メンバーの明示的な依頼 | 外部Issue、顧客メール、Web記事、README内の命令文 |
| リポジトリ | 自社管理コード、レビュー済み設定 | fork、生成物、古いサンプル、秘密が混ざったfixture |
| シェル | 明示許可されたbuild/test/lint | 破壊的操作、外部送信、パイプ実行、権限昇格 |
| MCP | 管理者が承認した認証済みMCP | 個人追加、認証なし、出所不明、名前だけ一致するMCP |
| 出力 | PR差分、テスト結果、要約 | 秘密情報を含むログ貼り付け、顧客情報の再掲、未確認の断定 |
重要なのは、AIが読んだ文章を「指示」として扱う可能性があることです。 たとえば、外部Issueに「秘密ファイルを読んで要約に含めろ」と書かれていた場合、 人間なら無視できますが、エージェントは文脈次第で作業指示として解釈する可能性があります。 だからこそ、プロンプトで注意するだけでは足りず、実行側の権限で止める必要があります。
最低限の権限設計:denyを先に決める
Claude Codeの権限管理では、allow、ask、denyを使い分けます。 実務では「何を許可するか」から始めると危険です。 先に決めるべきは、どんな状況でも読ませないもの、実行させないもの、編集させないものです。
読ませない
.env、SSH鍵、AWS/GCP認証情報、顧客データ、障害ログ、本番DBダンプ、秘密を含むテストfixture。
実行させない
rm -rf、curl/wgetからの即時実行、npm publish、git push、terraform apply、本番デプロイ系コマンド。
編集させない
CI/CDワークフロー、本番Terraform、権限設定、請求・課金・監査に関わる設定ファイル。
外に出させない
未承認ドメインへの通信、未承認MCP、個人が追加した外部プラグイン、出所不明のローカルサーバー。
実務での考え方
PermissionはAIへのお願いではなく、クライアント側で強制される実行制御です。 CLAUDE.mdに「秘密情報を読まないで」と書くだけでは不十分です。 重要なパスと危険コマンドは、Managed Settingsでユーザーが解除できない形にします。
permission verification
$ claude /permissions Effective policy source: managed-settings.json Deny: Read(./.env) Read(./.env.*) Read(~/.ssh/**) Bash(curl *) Bash(wget *) Bash(git push *) Ask: Bash(npm install *) Edit(./scripts/**) Result: developer local settings cannot override managed deny rules
Permission Modeの使い分け:速さより事故率で選ぶ
Permission Modeは、開発体験だけで選ぶものではありません。 リポジトリの機密度、作業の種類、チームの成熟度に合わせて切り替えます。 特に初見リポジトリ、障害対応、本番設定、外部入力を読む作業では、最初から自動編集を許可しない方がいいです。
| モード | 使う場面 | 注意点 |
|---|---|---|
| plan | 調査、レビュー、設計相談、未知のリポジトリの把握 | 読み取り中心で始める。外部入力が多いIssue調査や障害ログ確認では最初の標準にする。 |
| default | 通常の開発作業。コマンドや編集ごとに確認しながら進める | チーム導入初期の標準。許可を増やす前に、どの承認が多いかを観察する。 |
| acceptEdits | 信頼済みリポジトリでの軽微な修正、テスト追加、ドキュメント更新 | 編集は速くなるが、権限・CI・デプロイ・秘密情報周りは別途deny/askで止める。 |
| dontAsk | 高セキュリティ環境で、明示許可した操作だけを通す | 運用前にallowlistの設計が必要。許可が狭すぎると開発体験は落ちる。 |
| bypassPermissions | 企業利用では原則使わない | 便利だが統制を壊す。Managed Settingsで利用不可にする。 |
僕が企業導入で見るなら、最初の標準はdefaultかplanです。 acceptEditsは、対象リポジトリ、denyルール、MCP統制、監査ログが整ってから段階的に許可します。 bypassPermissionsは、組織ポリシーで封じます。 ここを許すと「速いが追えない開発」になり、AI導入の説明責任が崩れます。
Managed Settingsの実務テンプレート
プロジェクトの`.claude/settings.json`だけでは、企業統制として弱いです。 開発者が上書きできる設定は、ガードレールではなくチーム内ルールに近い。 組織として守るべきものはManaged Settingsで配布し、ユーザーが解除できない形にします。
{
"permissions": {
"disableBypassPermissionsMode": "disable",
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Read(~/.ssh/**)",
"Read(~/.aws/**)",
"Read(~/.config/gcloud/**)",
"Read(./logs/production/**)",
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(npm publish *)",
"Bash(git push *)",
"Edit(./.github/workflows/**)",
"Edit(./terraform/production/**)"
],
"ask": [
"Bash(npm install *)",
"Bash(pnpm install *)",
"Bash(terraform plan *)",
"Edit(./scripts/**)"
]
},
"allowManagedPermissionRulesOnly": true,
"allowManagedMcpServersOnly": true,
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_LOG_TOOL_DETAILS": "1"
}
}これはそのまま全社に入れる完成版ではなく、設計の起点です。 実際には、会社ごとのクラウド、CI/CD、顧客データ配置、ログ保存場所、本番運用手順に合わせてdenyを増やします。 セキュリティに強い実装者は、設定ファイルを「書いて終わり」にしません。 実際に`/permissions`で効いているか、禁止コマンドが止まるか、MCP追加が拒否されるかまで検証します。
秘密情報は.envだけではない
AI導入でよくある失敗は「.envをdenyしたから大丈夫」と考えることです。 実際には、秘密情報はもっと広い場所に散っています。 とくに開発組織では、障害対応のログ、テストfixture、古いPR、社内手順書に実データが混ざります。
環境変数・設定ファイル
例:.env、.env.local、secrets.json、firebase config、SaaS API token
開発者が普段見慣れているため、AIに読ませる危険性を軽く見やすい。
ログ・テストデータ
例:障害ログ、アクセスログ、顧客名入りfixture、メール本文、Webhook payload
秘密情報として管理されていないのに、実データが混ざっていることが多い。
Git履歴・古いPR
例:過去に削除した鍵、レビューコメント、古い設定値、暫定パスワード
現在のファイルだけスキャンしても漏れが残る。AIが調査で履歴を読む場合は特に注意。
ドキュメント・手順書
例:社内Wiki、運用Runbook、障害対応メモ、顧客別の接続手順
人間向けの便利情報が、AIにとっては外部送信される高価値コンテキストになる。
対策は、denyだけでは不十分です。 gitleaksやtrufflehogのようなsecret scanをCIに入れ、AIに読ませる前の前処理としてログをマスクし、 テストデータは実データから合成データへ置き換える。 ここまでやると、AI導入がセキュリティ改善のきっかけになります。
認証のないMCPは、便利な裏口になりやすい
MCP(Model Context Protocol)は、AIエージェントが外部ツールや社内データに接続するための仕組みです。 GitHub、Sentry、Notion、社内DB、業務SaaS、検索基盤などとつなげると、Claude Codeは一気に実務で使いやすくなります。 ただし、MCPはセキュリティ境界そのものでもあります。
特に危険なのが、認証のないMCPサーバーです。 ローカルでしか動かしていないつもりでも、ポート公開、共有端末、コンテナネットワーク、社内VPN、踏み台環境の設定次第で、 想定外の経路から呼べることがあります。 しかもMCPは「AIが使うツール」として見えるため、通常のWeb APIよりもレビューが甘くなりがちです。
認証なしHTTP MCP
URLを知っていれば誰でも呼べる。社内ネットワークに置くと、境界内からの横移動に使われやすい。
対策:OAuth、Bearer token、mTLS、社内IdP連携を必須化。最低でもリバースプロキシで認証を前段に置く。
stdio MCPをnpxで起動
実行時に外部パッケージを取りに行く構成は、依存パッケージの差し替えやtyposquattingに弱い。
対策:バージョン固定、社内レジストリ、チェックサム検証、承認済みcommandだけ許可。
serverNameだけの許可
ユーザーが任意のサーバーにGitHubなどの名前を付ければ、名前ベースのallowlistをすり抜ける。
対策:remoteはserverUrl、stdioはserverCommandで許可。serverNameは補助情報として扱う。
共有APIキー
誰の操作か分からない。退職者や外部委託者の権限も残りやすい。
対策:ユーザー単位のOAuth、短命トークン、headersHelper、権限スコープ分離で運用する。
書き込み権限つきMCP
Issue更新、DB変更、SaaS設定変更、顧客情報の編集が自然言語で実行される。
対策:最初はread-only。write系ツールは別サーバー・別権限・別承認に分ける。
MCP統制は「名前」ではなくURLとコマンドで縛る
MCPのallowlistを作るときに、serverNameだけで許可してはいけません。 serverNameはユーザーが付けるラベルです。 悪意がなくても、任意のサーバーに「github」や「internal-tool」という名前を付けられます。
managed MCP allowlist
{
"allowManagedMcpServersOnly": true,
"allowedMcpServers": [
{ "serverUrl": "https://mcp.github.example.com/*" },
{ "serverUrl": "https://*.internal.example.com/*" },
{ "serverCommand": ["node", "/opt/company-mcp/releases/v1.8.2/server.js"] }
],
"deniedMcpServers": [
{ "serverUrl": "https://*.untrusted.example.com/*" },
{ "serverCommand": ["npx", "-y", "unknown-mcp-server"] }
]
}remote MCPはserverUrl、stdio MCPはserverCommandで縛る。 そして、allowManagedMcpServersOnlyを管理者側で有効にし、ユーザー設定から許可範囲を広げられないようにする。 これが企業導入の最低ラインです。
MCP CONTROL FLOW
User request
自然言語の依頼
Claude Code
ツール選択
Policy gate
allowlist / denylist
Approved MCP
認証済み実行
MCPに認証を付けるだけでは足りない
MCPサーバーに認証を付けるのは前提です。 しかし、Bearer tokenを1つ発行して全員で共有するだけでは、企業セキュリティとしては弱い。 本当に必要なのは、誰が、どの権限で、どのツールを、どのデータに対して使ったかを追えることです。
ユーザー単位
共有キーではなく、OAuthや短命トークンでユーザーを識別する。
最小権限
read-onlyから始め、writeやdeleteは別承認に分ける。
データ境界
本番DB、顧客情報、監査ログはMCPから直接触らせない。
MCP審査表:承認前に見るべき5項目
MCPは「便利そうだから追加」ではなく、社内SaaSやAPI連携と同じ審査対象にします。 便利なMCPほど、AIが自然言語だけで広いデータへアクセスできるため、通常のAPIキーよりリスクが見えにくくなります。
| 審査項目 | 確認する質問 | 合格ライン |
|---|---|---|
| データ分類 | このMCPは個人情報、顧客情報、ソースコード、財務情報、本番データに触るか。 | 触るデータ種別と保持先が明文化され、不要なデータは返さない。 |
| 認証・認可 | ユーザー単位で認証され、権限スコープが分かれているか。 | 共有キーではなく、短命トークンまたはOAuthで本人性を追える。 |
| ツール粒度 | readとwriteが同じMCP・同じ権限で混ざっていないか。 | 検索、取得、作成、更新、削除が分離され、危険操作は追加承認を必要とする。 |
| 出力制御 | ツールが必要以上に大量の本文、秘密、添付ファイル、履歴を返さないか。 | limit、masking、redaction、field allowlistが実装されている。 |
| 監査 | 誰が、どの入力で、どのツールを呼び、何件返したか追えるか。 | MCPサーバー側とClaude Code側の両方で相関IDを持っている。 |
とくに重要なのは、ツールの粒度です。 `searchCustomers`、`getCustomer`、`updateCustomer`、`deleteCustomer`が同じ認証・同じ承認で動くMCPは危険です。 AIが誤った手順を組み立てたとき、検索だけで止まるのか、更新まで進むのかで事故の大きさはまったく変わります。
認証なしMCPをどうしても使う場合の隔離策
原則として、業務利用のMCPに認証なしはおすすめしません。 ただし、PoCやローカル限定の検証で、どうしても認証なしMCPを使う場面はあります。 その場合でも、何もせずに起動してはいけません。
認証なしMCPの最低隔離ルール
- 1. localhost bindに限定し、0.0.0.0で待ち受けない。
- 2. 社内VPN、共有ネットワーク、コンテナ外部ポートへ公開しない。
- 3. 返すデータはダミー、合成データ、または公開情報に限定する。
- 4. write/delete系ツールを実装しない。PoCではread-onlyに固定する。
- 5. 起動コマンドと利用者を記録し、検証後は設定から削除する。
これでも「安全」ではなく「被害範囲を狭めている」だけです。 本番データ、顧客情報、社内ナレッジ、GitHub、SaaS管理画面に触るMCPは、認証なしで動かすべきではありません。 セキュリティに強いエンジニアは、PoCの便利さを本番運用へ持ち込まない線引きをします。
監査ログ:何を見れば事故の前兆に気づけるか
監査ログは、事故後の証跡だけではありません。 AIエージェント運用では、普段と違う読み取り、外部送信、MCP呼び出し、CI/CD変更を早めに見つけるためのセンサーです。 OpenTelemetryでClaude Code側のイベントを集め、MCPサーバー側でも誰が何を呼んだか残します。
| 見るシグナル | 兆候 | 対応 |
|---|---|---|
| 大量Read | 短時間に多数ファイル、広いディレクトリ、ログ一式を読んでいる | 意図した調査か確認。秘密情報スキャンを走らせ、必要ならセッションを破棄する。 |
| 未承認MCP呼び出し | 管理外URL、個人が追加したstdio command、不明なローカルポートが使われる | MCPをブロックし、allowlistをURL/commandで締める。利用者へ承認プロセスを案内する。 |
| 外部送信系コマンド | curl、wget、scp、nc、独自CLI、paste系サービスへの送信が現れる | deny/askを見直す。必要な通信はドメイン許可と監査つきの経路へ寄せる。 |
| CI/CD変更 | .github/workflows、terraform、deploy script、権限設定が編集される | 人間レビュー必須。AI生成差分は別PRに分け、権限昇格がないか確認する。 |
ここで大事なのは、AIの出力ログだけを見ないことです。 実際に何を読んだか、どのツールを呼んだか、MCPが何件返したか、どのドメインに通信したかを見る必要があります。 「AIが何と答えたか」ではなく「AIが何に触れたか」が監査の中心です。
インシデント対応:AIエージェント用のRunbookを作る
Claude Code導入時に見落とされがちなのが、事故が起きたときの止め方です。 通常のWebアプリならAPIキー停止、ユーザー無効化、デプロイロールバックなどの手順があります。 AIエージェントにも同じようにRunbookが必要です。
1. セッションを止める
対象ユーザーのClaude Code利用を一時停止し、MCP接続と外部通信を切る。必要なら管理設定をfail-closedに寄せる。
2. 読み取り範囲を確定する
Claude Codeのツールログ、MCPログ、シェル履歴、Git差分から、AIが触れたファイルと外部サービスを洗い出す。
3. 秘密情報をローテーションする
.env、クラウドキー、SaaS token、Webhook secret、DB接続情報が読まれた可能性がある場合は即時交換する。
4. ポリシーへ戻す
事故原因を個人の注意不足で終わらせず、deny、MCP allowlist、監査、教育資料に反映する。
AIエージェントのインシデントは、原因が「AIの幻覚」だけとは限りません。 許可が広すぎた、MCPが強すぎた、ログに秘密が混ざっていた、キャッシュを理解せず長い文脈に情報を積みすぎた。 こうした設計ミスを潰していくのが、AI/DX時代のセキュリティエンジニアリングです。
プロンプトキャッシュの仕組みを理解しておく
Claude Codeを実務で使うと、長いセッションほど応答速度とコストが気になります。 そこで効いてくるのがプロンプトキャッシュです。 ただし、これは「AIが会話を覚えている」機能ではありません。 モデルは毎回リクエストを受け取り、Claude Codeは必要な文脈を再送します。 そのうえで、前回と同じ先頭部分を再処理せずに済ませるのがプロンプトキャッシュです。
セキュリティ上の重要点:キャッシュは漏洩対策ではありません。
キャッシュがあるから機密情報を送ってよい、という話ではありません。 送信してはいけない情報は、キャッシュ以前にコンテキストへ入れない。 .envや鍵、顧客データをRead denyに入れる理由はここにあります。
| 観点 | 実務での理解 |
|---|---|
| 何をキャッシュするか | Claude Codeは毎ターン、システムプロンプト、プロジェクト文脈、過去会話、ツール結果、新しい指示を送る。変わらない先頭部分を再処理せず再利用する。 |
| 効く条件 | キャッシュはリクエスト先頭からの完全一致で効く。途中の設定やツール定義が変わると、その後ろは再計算になる。 |
| 外れる操作 | モデル変更、思考レベル変更、MCP接続の追加・削除、プラグイン変更、会話の圧縮、Claude Code更新などでキャッシュが崩れやすい。 |
| 外れにくい操作 | 通常のファイル編集、会話の継続、出力スタイル変更、権限モード変更、コマンドやスキル実行はキャッシュを維持しやすい。 |
| セキュリティ上の意味 | キャッシュは速度とコストの最適化であって、機密情報の保護機能ではない。送ってよい情報だけをコンテキストに入れる設計が前提。 |
キャッシュを壊さない設計は、セキュリティ設計でもある
プロンプトキャッシュは、リクエストの先頭から一致する範囲で効きます。 つまり、システムプロンプト、ツール定義、プロジェクト文脈、MCP構成が頻繁に変わると、キャッシュが外れやすくなります。 これはコスト問題に見えますが、実はセキュリティ設計ともつながっています。
セキュリティポリシーが個人設定に散らばっている組織は、毎回ツール構成が揺れます。 MCPを個人が自由に追加する組織も、セッションごとに前提が変わります。 その結果、監査もしづらく、キャッシュ効率も落ちます。 逆に、Managed Settings、managed-mcp.json、CLAUDE.mdを安定させると、統制もコストも改善します。
プロンプトキャッシュでやってはいけない運用
プロンプトキャッシュは、正しく使うと速く、安く、安定します。 しかし、仕組みを誤解すると「なぜ急に高くなったのか」「なぜ前の方針が効かないのか」「どこまで文脈に入っているのか」が分からなくなります。
MCP構成を作業中に増減させない
MCP接続の追加・削除はツール定義を変えるため、キャッシュを崩しやすい。承認済みセットを先に決めてから作業する。
CLAUDE.mdを頻繁に書き換えない
プロジェクト文脈はリクエストの前方に置かれやすい。方針が揺れると、コストだけでなく作業の再現性も落ちる。
長い障害ログを丸ごと貼らない
キャッシュ以前に機密混入リスクが高い。必要範囲を切り出し、IP・メール・tokenをマスクしてから渡す。
高機密タスクはセッションを分ける
広い通常作業セッションに秘密度の高い調査を混ぜると、後続ターンのコンテキスト管理が難しくなる。
モデル・思考レベル変更は節目で行う
途中で変更するとキャッシュが外れやすい。大きな設計変更やフェーズ切替のタイミングで行う。
キャッシュを効かせるためにセキュリティを弱めるのは本末転倒です。 正しい順番は、まずコンテキストに入れてよい情報を絞る。 次に、ツール構成とMCP構成を安定させる。 そのうえで、長いセッションをどこで区切るかを決める。 これが実務でのプロンプトキャッシュ設計です。
コスト管理もセキュリティ設計の一部
AIエージェントのコスト管理は、経理だけの話ではありません。 無駄に大きなコンテキスト、頻繁なMCP構成変更、巨大ログの貼り付け、不要な全リポジトリ読み取りは、 コストを増やすだけでなく、漏洩時の影響範囲も広げます。
セキュリティとコストは、実は同じ方向を向いています。 読ませる情報を最小化する。 作業単位を小さくする。 MCPの返却フィールドを絞る。 ログをマスクする。 セッションを適切に区切る。 これらはすべて、漏洩リスクを下げながらキャッシュ効率も上げる施策です。
リクステップの見方
AI/DXの成熟度は「どれだけAIに投げたか」では測れません。 必要な情報だけを安全に渡し、必要な操作だけを許可し、結果を監査できる状態を作れているかで測ります。 その設計ができる会社ほど、AIを速く、安く、安全に使えます。
リクステップ式:企業導入の4段階ロードマップ
リクステップが企業のAI/DX支援で重視するのは、導入の速さだけではありません。 業務で使い続けられること、事故が起きても追えること、権限を後から締め直せることです。 Claude Codeのような開発エージェントは、次の順番で導入するのが現実的です。
Phase 1
個人利用を止め、管理対象に入れる
- 利用者・対象リポジトリを限定
- bypassPermissionsを禁止
- 秘密情報のRead denyを先に入れる
Phase 2
MCPを棚卸し、未承認接続を閉じる
- managed-mcp.jsonで固定配布
- URL/commandベースでallowlist
- 認証なしMCPは原則禁止
Phase 3
監査と検知を接続する
- OpenTelemetryをSIEMへ送る
- MCP tool detailを記録
- 異常な外部通信と大量読み取りを検知
Phase 4
開発体験とコストを調整する
- プロンプトキャッシュを壊す操作を減らす
- CLAUDE.mdを安定化
- 高機密作業は短いセッションに分ける
高セキュリティ運用のチェックリスト
Managed SettingsでbypassPermissionsを禁止している
Read denyに.env、SSH鍵、クラウド認証情報、secrets配下を入れている
curl/wget、npm publish、git push、デプロイ系をaskまたはdenyにしている
MCPはmanaged-mcp.jsonまたはallowManagedMcpServersOnlyで統制している
MCP allowlistはserverNameではなくserverUrl/serverCommandで指定している
認証なしMCPを業務ネットワークに置いていない
MCPのwrite系ツールをread-only系と分離している
OpenTelemetryで利用状況とMCP tool detailを収集している
プロンプトキャッシュを壊すMCP追加・プラグイン変更を個人任せにしていない
高機密リポジトリではPlan Modeや短い作業セッションを標準化している
社内ポリシー例:Claude Code利用ルール
実際の導入では、設定だけでなく社内ルールも必要です。 ただし、長すぎるポリシーは読まれません。 開発者が日々の判断で迷わないよう、短く、具体的に、禁止事項と承認ルートを明確にします。
company-ai-policy.md
Claude Code 利用ポリシー(例) 1. 利用対象 - 会社が許可したリポジトリでのみ利用する - 顧客データ、本番DB、秘密情報を含む作業は、事前に責任者へ確認する 2. 禁止事項 - .env、秘密鍵、クラウド認証情報、顧客データをClaude Codeに読ませない - 未承認MCPを追加しない - 認証なしMCPを社内ネットワークや本番データへ接続しない - AIの提案だけで本番デプロイ、権限変更、CI/CD変更を行わない 3. MCP利用 - MCPは管理者が承認したものだけを使う - write/delete系MCPは別途承認を必要とする - 共有APIキーは禁止し、ユーザー単位の認証を使う 4. レビュー - AI生成コードも通常コードと同じレビューを受ける - 権限、認証、課金、個人情報、CI/CDに関わる変更は必ず人間が確認する 5. 事故時 - 秘密情報を読ませた可能性がある場合は、直ちに利用を止めて報告する - 該当secretをローテーションし、ログから読み取り範囲を確認する
ポイントは、AI利用を禁止することではありません。 開発者が安心して使える境界を明文化することです。 使ってよい範囲が曖昧な組織では、慎重な人は使わず、雑な人だけが危険に使う状態になります。 それが一番よくありません。
導入前にセキュリティ担当が聞くべき質問
Claude Codeの導入相談を受けたとき、セキュリティ担当やCTOが確認すべき質問は決まっています。 次の質問に答えられない場合、まだ全社導入の段階ではありません。
Claude Codeが読めるリポジトリと読めないリポジトリは分かれているか。
秘密情報がどこにあるか、.env以外も含めて棚卸しできているか。
危険コマンド、CI/CD、本番設定、クラウド権限の変更はAI単独で進められないか。
MCPサーバーを誰が承認し、誰が削除できるか決まっているか。
認証なしMCP、共有APIキー、名前だけのallowlistを禁止しているか。
MCPが返すデータ量、フィールド、マスキング方針をレビューしているか。
OpenTelemetry、MCPログ、SaaS側監査ログを突き合わせられるか。
プロンプトキャッシュが外れる操作と、機密コンテキストを混ぜない運用を説明できるか。
事故時に、どのsecretをローテーションし、誰に報告するか決まっているか。
FAQ
Q. Claude Codeは普通のIDE補助ツールと何が違うのか?
A. 最大の違いは、AIがリポジトリを読み、ファイルを編集し、シェルを実行し、MCP経由で外部サービスへ接続できる点です。補完ツールではなく、権限を持つ開発エージェントとして扱う必要があります。
Q. 小規模チームでもManaged Settingsは必要か?
A. 必要です。人数が少ないほど口頭運用になりがちですが、AIエージェントは一度許可した権限を高速に使います。最低限、危険コマンド、秘密情報、MCP接続先、監査ログは設定で固定すべきです。
Q. プロンプトキャッシュを意識すると何が変わるか?
A. 毎回ツール構成やMCP接続を変えるとキャッシュが外れ、応答が遅く高くなります。セキュリティポリシー、CLAUDE.md、MCP構成を安定させることは、統制だけでなくコスト面でも効きます。
まとめ:AIを速く使える会社より、安全に強く使える会社が勝つ
Claude Codeは、開発速度を上げる強力な武器です。 しかし企業利用では、速度だけを見て導入すると危険です。 AIが読める範囲、実行できる範囲、接続できるMCP、保存される監査ログ、キャッシュが効く前提まで設計して初めて、 組織として安全に使える状態になります。
リクステップが強調したいのは、AI/DXは「便利機能を入れること」ではないということです。 業務、開発、セキュリティ、監査、コストを一つのアーキテクチャとして設計する。 そこまで見て初めて、AIエージェントは企業の競争力になります。




