Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Claude Code を安全に使おう勉強会 / Claude Code Security B...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Claude Code を安全に使おう勉強会 / Claude Code Security Basics

Avatar for MasahiroKawahara

MasahiroKawahara

April 23, 2026

More Decks by MasahiroKawahara

Other Decks in Technology

Transcript

  1. アジェンダ 1. Claude Code の仕組みを知る 2. Claude Code を安全に使うには? 3.

    抑止する工夫 4. 制限する工夫 5. 隔離する工夫 6. その他いろいろ 5
  2. 話すこと / 話さないこと 話すこと Claude Code の仕組みとセキュリティの考え方 settings.json の permissions

    / Hooks / サンドボックス 推奨設定のサンプル共有 話さないこと MCP / Skill など拡張機能のセキュリティ 周辺知識(GitHub / Terraform / コーディング等)のセキュリティ 詳細な settings.json の書き方 ガバナンス・コンプライアンス領域の話 推論の地理的制約、データ保持期間、監査要件など 6
  3. agenticループのコンポーネント agenticループは 推論するモデル と アクションを実行するツール によっ て駆動されます。 : コードを理解し、次に何をすべきか推論・判断する 具体例:

    sonnet , opus : モデルの判断に基づきファイル操作やコマンド実行などを実 際に行う 具体例: Read , Edit , Bash モデル ツール 9
  4. 参考: 組み込みツールができること カテゴリ Claude ができること ファイル 操作 ファイルの読み取り、コード編集、新規ファイル作成、名前 変更と再編成 検索

    パターンでファイルを検索、正規表現でコンテンツを検索、 コードベースを探索 実行 シェルコマンド実行、サーバー起動、テスト実行、git 使用 ウェブ ウェブ検索、ドキュメント取得、エラーメッセージ検索 – 引用: (抜粋) Claude Code の仕組み - Claude Code Docs 10
  5. Claude Code で実現するには? 抑止する → CLAUDE.md 制限する → Permissions, Hooks

    隔離する → サンドボックス, Dev Container (それぞれの話は後ろで説明します!) 14
  6. CLAUDE.md とは CLAUDE.md ファイルは、プロジェクト、個人的 なワークフロー、 または組織全体に対して Claude に 永続的な指示を与えるマークダウンファイル で

    す。 Claude は 各セッションの開始時にそれらを読 みます 。 – Claude があなたのプロジェクトを記憶する方法 - Claude Code Docs 21
  7. CLAUDE.md を置く場所(スコープ) CLAUDE.md は配置する場所によってスコープが変わります。 スコープ 場所 共有対象 管理ポリシ ー OS

    のシステムディレクトリ 組織内のすべてのユーザ ー プロジェク ト指示 ./CLAUDE.md or ./.claude/CLAUDE.md ソース管理を通じたチー ムメンバー ユーザー指 示 ~/.claude/CLAUDE.md あなただけ(全プロジェ クト共通) – CLAUDE.md ファイルをどこに配置するかを選択する - Claude Code Docs 22
  8. 危険なツール実行をしないように "お願い" するサンプル CLAUDE.md に「やってほしくないこと」を書いておく例です。 ⚠ お守り程度と思いましょう CLAUDE.md はあくまで「お願い」です。Claude は読んで従おうとしますが、

    厳 密な遵守の保証はありません。 次のセクション「制限する工夫」でツール実行そのものを制御しましょう。 # セキュリティ - .env, credentials 等の機密ファイルを読み取り・編集・コミットし - シークレットやAPIキーをコードにハードコードしないこと - rm -rf / や force push 等の破壊的コマンドを実行しないこと 23
  9. ツールの種類 Claude Code は組み込みツールを通じてアクションを実行します。 主要 なツールは以下のとおりです。 ツール 説明 Bash シェルコマンドを実行する

    Read ファイルの内容を読み取る Edit 特定のファイルに対して対象を絞った編集を行う Write ファイルを作成または上書きする WebFetch 指定された URL からコンテンツを取得する … … – ツール リファレンス - Claude Code Docs 26
  10. settings.json の置き場所(スコープ) settings.json は配置する場所でスコープが変わります。 スコープ 場所 共有対象 Managed OS のシステムレベル

    組織内のすべてのユーザー User ~/.claude/settings.json あなただけ(全プロジェクト) Project .claude/settings.json チームメンバー Local .claude/settings.local.json あなただけ – 構成スコープ - Claude Code Docs 30
  11. 権限ルールの書き方 ルールは Tool または Tool(specifier) の形式で書きます。 ルール 効果 Bash すべての

    Bash コマンドをマッチ Bash(npm run *) npm run で始まるコマンドをマッチ Read(~/.zshrc) ~/.zshrc ファイル読み取りをマッチ Edit(/src/**/*.ts) <project root>/src/ 配下の TS ファイル編集をマ ッチ Read(//**/.env*) システム全体の .env* ファイル読み取りをマッチ – (読み込み推奨!) 権限ルール構文 - Claude Code Docs 33
  12. 推奨設定のサンプル ~/.claude/settings.json に置く例です。 完全なサンプルは こちら → { "permissions": { "deny":

    [ "Read(//**/.env*)", "Read(//**/credentials*)", "Edit(//**/.env*)", "Edit(//**/credentials*)", "Bash(rm *)", "Bash(git *)" ]}} Gist 34
  13. ⚠ Read(.env)のdeny は Bash(cat .env) を防げない ReadやEditの deny の影響範囲は、あくまで "そのツール内のみ"

    です。 Bash 経由のファイル/ネットワークアクセスも防ぐには、後述のサンドボックスや Hooks が有用です。 35
  14. Hooks とは Claude Code ライフサイクル内の特定ポイントで 自動実行される、 ユー ザー定義のシェルコマンド(など) です。 同じく

    settings.json に記載しま す。 観点 permissions (deny/allow) Hooks 方式 静的なパターンマッチ スクリプトによるチェック 柔軟性 ツールとパターンの組み合わせ 任意のロジックを実装可能 用途 基本的なアクセス制御 複雑な条件での判定 – Claude Code フック - Claude Code Docs 37
  15. サンドボックスとは サンドボックスのスコープは Bash ツールとその子プロセスのみ です。 Read, Edit, Write, WebFetch 等のほか組み込みツールは対象外です。

    Claude Code は ネイティブサンドボックス機能 を 備えており、エージェント実行のためのより安全な 環境を提供しながら、継続的な許可プロンプトの必 要性を軽減します。 各 bash コマンドの実行許可を 求める代わりに、サンドボックス化により 事前に定 義された境界 が作成され、Claude Code はリスク を軽減しながらより自由に動作できます。 – サンドボックス - Claude Code Docs 42
  16. 何が嬉しい? permissions の deny パターンは コマンド文字列 のマッチです。 しかし、コマンドはいくらでも書き換えられます。 python -c

    "print(open('.env').read())" や less .env 、 my-custom-script .env な ど、いくらでも迂回できます。 サンドボックスは OSレベル でファイルアクセスとネットワーク接続を制 限するため、 コマンド名に関係なく、すべての子プロセスに同じ制約が適 用されます。 "deny": ["Bash(cat .env)", "Bash(curl example.com)"] 43
  17. 有効化の方法 settings.json に以下を記載します。 (もしくは /sandbox で有効化) ⚠ autoAllowBashIfSandboxed は最初は false

    にしたほうが良い autoAllowBashIfSandboxed はデフォルト true です。 この状態では Bash コマンド が自動承認されるため、 ファイルシステム・ネットワークの境界設定や permissions 設定が不十分なまま有効にすると危険です。 最初は false にして手動承認を残しておくのが安全です。 { "sandbox": { "enabled": true, "autoAllowBashIfSandboxed": false }} 44
  18. その他の隔離手段: Dev Container より強力な隔離が必要な場合は も選択肢です。 コンテナ内で Claude Code を実行し、ホストシステムから完全に分 離

    ファイアウォールでネットワーク接続先をホワイトリスト制限 Anthropic が を提供しています Dev Container リファレンス実装 46
  19. Claude Code を起動する場所に注意する デフォルトの挙動として、Claude Code は 起動されたディレクトリ内の ファイルにアクセス できます。 したがって、起動する場所を絞ること

    が、そのままアクセス範囲を絞ることに繋がります。 ホームディレクトリや複数プロジェクト/コンテキストが混じったような デカいディレクトリでの起動は避けましょう 。 無関係なファイルまでア クセスされるリスクがあるためです。 参考: 作業ディレクトリ - Claude Code Docs 48
  20. Permissions / Hooks / サンドボックス はどう使い分け る? Permissions とサンドボックスは補完関係であり両方使うべき です。

    各ツールの基本的な制御 → Permissions Bash 実行のOSレベルでの封じ込め → サンドボックス Hooks は Permissions やサンドボックスでは制御が難しい、 高度な allow/deny 判断処理が必要な場合に使うと良いです。 49
  21. サンドボックスを触り始めた雑感(メモレベル) permissions.deny の Bash(xx) では防ぎきれない、 ファイル読み書 き・NW経由の迂回を封じ込められるのは、かなり便利 デフォルトだと Bash 実行が承認無しになる。

    怖いので、 autoAllowBashIfSandboxed:false を入れた デフォルトだとサンドボックス内での Bash 実行が失敗した時に、 承認を求めたうえでサンドボックス外で再実行しようとする allowUnsandboxedCommands:false を入れて、バイパスを止めた サンドボックス外で実行したいコマンドは excludedCommands に 明示的に書く運用が良さそう 最初は Bashの実行失敗 or NWアクセス承認/拒否確認が多発しが ち。 地道にチューニングしながら運用するのが現実的 50
  22. たとえば aws コマンドを実行させると 169.254.169.254 (インスタン スメタデータ) や *.amazonaws.com への アクセス承認を都度求められ

    る。これらは network.allowedDomains で許可すると良い gh / terraform 等の Go製ツールはサンドボックス内から macOS の TLS 信頼サービスにアクセスできず失敗する enableWeakerNetworkIsolation:true で回避できるが、 ネットワー ク隔離が弱まる点はトレードオフ 51
  23. dangerously-skip-permissions は原則使わない --dangerously-skip-permissions フラグは --permission-mode bypassPermissions と同等です。 保護されたディレクトリへの書き込みを 除く、すべての権限プロンプトをスキップします。 強力な隔離環境で動か

    す場合を除き、 原則使わない ようにしましょう。 💡 Tips: バイパスモード自体をブロックできる settings.json に disableBypassPermissionsMode: "disable" を設定すると、そもそも バイパスモードに入れなくできます。 通常は組織ポリシーを強制する目的で に置かれます。 管理設定(managed-settings) 53
  24. autoMode の雑感(メモレベル) autoMode は 分類器モデルがアクションの安全性を判断 し、許可な しで実行可否を決めるモード (現在は研究プレビュー) 少し触った感想: わりと承認無しに色々実行するので、ちょっと怖

    い。 Permissions や Sandboxing の設定はちゃんと固めた上で使い たいと思った 未検証: autoMode.environment で信頼インフラを分類器に連携できる 未検証: 分類器組み込みのblock/allowルールをオーバーライドできる autoMode.allow / autoMode.soft_deny に追加ルールを定義する claude auto-mode defaults でデフォルトの完全なリストを取得 し、 それをベースに編集する (空リストから書き始めない) 54
  25. Claude Code の周辺環境も整えましょう シークレット管理ツール ( , 等) 認証情報を .env などに平文で置くのを避けます

    Claude Code に読み取られるリスク自体を無くしましょう .gitignore 機密情報は確実に ignore します。 誤ってコミット対象に含めて しまうリスクを下げましょう settings.local.json など個人設定も ignore 対象にします。 個 人設定の設定が他メンバーに混ざるのを防ぎます で機密情報のコミットを検出・ブロックします など… 1Password CLI aws-vault pre-commit gitleaks 57
  26. 有益なリソース 読み込みたい公式ドキュメント : 基本仕様や設定可能なキー一覧が分かる : 権限ルールの構文が分かる : サンドボックス機能を理解できる : 各モードの権限が分かる

    : 利用可能なツール一覧が分かる Claude Codeの設定 設定 > 権限 設定 > サンドボックス はじめに > パーミッションモード リファレンス > ツール 58
  27. おわりに 以下、今回話したことです。 安全に Claude Code を使うには ツールの制御が肝 抑止 : CLAUDE.md

    でお願いする。ただしお守り程度と割り切る 制限 : permissions で deny/ask/allow を定義する。複雑な判定は Hooks で補う 隔離 : サンドボックスで Bash ツールを OS レベルで封じ込める。よ り強力な隔離は Dev Container も選択肢 周辺環境 (シークレット管理、 .gitignore 、pre-commit 等) も合わ せて整えよう 安全な Claude Code 環境を作りましょう! 59
  28. Claude Code 公式ドキュメント 基本情報 settings.json (権限/ツール/Hooks) サンドボックス, Dev Container Claude

    Code の仕組み Claude があなたのプロジェクトを記憶する方法 モデル構成 パーミッションモード Claude Code の設定 権限を設定する ツール リファレンス Hooksリファレンス サンドボックス Dev Container 61