Claude Codeのセキュリティ設定

作成日:2026/04/19

Claudeのセキュリティ設定を調査し設定しておきたい項目を洗い出す。
プロンプト実行の承認の削減をしながらセキュリティリスクを削減することが目的である。

https://code.claude.com/docs/ja/security

課題

Claude Codeはデフォルトでファイルの編集、テストの実行、コマンドの実行の際にユーザーの承認を求めるようになっているが、承認が多すぎる故に承認疲れを起こしてリスクのある操作を承認してしまう可能性がある。 自分の経験でもあまりにも承認が多かったり疲労が溜まっているときは承認を何も考えずに行ってしまうケースが多く感じている。

承認をスキップするモードを使用することもできるが、以下のリスクに晒されることになる。

  • プロンプトインジェクションによる機密情報の漏洩や不正操作の実行
  • 誤動作による機密情報の漏洩や意図しないリソースの削除
  • サプライチェーン攻撃による悪意のあるコードの実行

こういった経緯もあり、Claude Codeのセッションに制約を加えてセキュリティリスクおよび承認の回数を削減できないかを考えた。

調査

Claude Codeのsettings.jsonで設定できる項目のうち以下の対策を行うことができる。

  • Permission設定: Read、Edit、Write、WebFetchなどツールの使用を制限することができる。
  • Sandbox設定: Bashツールがアクセスできるリソースを制限することができる。
  • MCP許可リスト設定: MCPの許可リストを設定することができる。

Permission設定

ツールリストは以下のURLから確認できる。ツール名+パターンでツールの使用を制限することができる。
https://code.claude.com/docs/ja/tools-reference

ツール名(パターン)

設定しておきたい項目

  • シークレットの読み取り禁止設定
  • インストールコマンドの実行禁止設定

Sandbox設定

Bashツール経由で実行されるコマンドに制約を加えることができる。 またnpmコマンドなどのサブプロセスにも適用される。

設定しておきたい項目

  • ファイルシステムアクセスの制限
  • ネットワークアクセスの制限

MCP許可リスト設定

settings.jsonにMCPの許可リストを設定することができる。

MCPによる意図しない操作を防ぐために、許可リストを設定しておくことが望ましい。

設定しておきたい項目

  • 使用するMCPの許可リスト

設定例

Permission設定

deny設定でシークレットの読み取りとインストールコマンドの実行を禁止する。 その他適宜禁止したい操作があれば追加する。 また、disableBypassPermissionsModeを設定することでbypassPermissionsモードを無効化することができる。

"permissions": {
    # 優先度はdeny > allow
    "allow": [],
    "deny": [
        # Readツールによるシークレットの読み取りを禁止
        "Read(./.env)",
        # インストールコマンドの禁止
        "Bash(npm install)",
        # ホームディレクトリ削除の禁止
        "Bash(rm -rf ~)"
    ],
    "disableBypassPermissionsMode": "disable"
},

Sandbox設定

基本的にカレントディレクトリやlocalhostなど開発に必要なリソース以外へのアクセスを禁止する設定にする。
ファイルシステムについてReadのデフォルトはコンピュータ全体なので、カレントディレクトリ以外へのアクセスを禁止する設定にする。Writeのデフォルトはカレントディレクトリなので、必要に応じて禁止する設定にする。
ネットワークについて、デフォルトで承認されたドメインのみのアクセスになっているので特に禁止設定をしない。その他開発に不要なIPCを禁止する設定にする。

"sandbox": {
    "enabled": true,
    # サンドボックスが利用できない環境ならエラーにする
    "failIfUnavailable": true,
    # dangerouslyDisableSandboxのエスケープハッチを無効化
    "allowUnsandboxedCommands": false,
    # bashコマンドを自動承認しない
    "autoAllowBashIfSandboxed": false,
    # 特別除外するコマンドのリスト
    "excludedCommands": [],
    # ファイルシステムのアクセス制限
    "filesystem": {
        # 読み取り禁止ディレクトリを指定
        "denyRead": ["/", "~/.claude"],
        # 読み取り許可ディレクトリを指定(優先度はallowRead > denyRead)
        "allowRead": ["."]
    },
    # ネットワークアクセスの制限
    "network": {
        # localhostへのバインディングは許可
        "allowLocalBinding": true,
        # ドメインへのアクセスを制限
        "allowedDomains": [],
        # IPCの無効(Unixドメインソケット、MachPort)を無効
        "allowUnixSockets": [],
        "allowMachLookup": []
    }
}

MCP許可リスト設定

プロジェクトで使用するMCPを明示的に記載しておく。

{
  # allowに設定したMCP以外は無効になる
  "allowedMcpServers": [{ "serverName": "mcp-tool1" }],
  "deniedMcpServers": []
}

また、ユーザー、プロジェクトスコープで設定がマージされるので、ユーザースコープのsettings.jsonにdeniedMcpServersを設定することで禁止するMCPを統一的に管理できる。設定の優先度はdeniedMcpServers > allowedMcpServers。

おわりに

ReadやWriteツールで作業ディレクトリの外を確認できてしまう抜け穴があるが、プロンプトインジェクションやサプライチェーン攻撃などでClaude Codeのセッションを攻撃される確率を下げることができたと思う。