Claude Code 導入の設計と方針

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

この記事では、Ubuntu 24.04.3 LTS 上に Claude Code の実行環境を構築するにあたり、手を動かす前に全体像を把握するための構成・方針・作業の流れをまとめています。

AIツールの導入は「とりあえずインストールして動かしてみる」でも始められますが、あとから権限設計やセキュリティを見直そうとすると、手戻りが大きくなりがちです。最初に完成形を把握してから作業に入ることで、各ステップで「なぜこの設定をするのか」が明確になり、迷いなく進められるようになります。

実際の作業手順は、このあとの各記事で1ステップずつ記録していきます。

設計思想

Claude Code は強力なツールですが、何を実行するかをすべてコントロールできるわけではありません。
そこで、この環境では次の方針で進めます。

Ubuntu 側は「作業場」に徹する
Claude Code のインストールとコード生成のみを行う
生成物の実行はメインPC側
rsync でファイルを同期してから、メインPCで動かす
外部通信は最小限
UFW でアウトバウンドをデフォルト拒否にし、必要な通信だけを許可する
万が一の暴走に備える
専用ユーザーの権限を絞り、ディスクやリソースにも上限を設ける
プロジェクトごとにユーザーを分離
A社・B社など案件ごとに専用ユーザーを作成し、他プロジェクトのファイルに一切触れられないようにする
データベースは読み取り専用
既存の開発用DBサーバーに接続するが、閲覧のみ。書き込みはメインPCから手動で行う
開発者は「承認者」
Claude Code に長時間勝手にコードを書かせず、生成されたコードは必ず目を通してからコミットする

「便利さ」よりも「安全に回せること」を優先します。

環境の全体像

この環境は「メインPC」「Ubuntu(VMware)」「開発用DBサーバー」の3つで構成されています。まず全体を俯瞰し、そのあと管理ユーザーと専用ユーザーの役割を詳しく見ていきます。

メインPC(Windows 11) Tera Term SSH で操作 VS Code 差分確認・コミット rsync ファイル同期 コードの実行環境(PHP / MySQL など) git commit / push はここで実行 SSH rsync Ubuntu 24.04 LTS(VMware) 管理ユーザー sudo 権限あり・SSH ログイン su Claude Code 専用ユーザー cc-clientA-web(A社向け) cc-clientB-app(B社向け) cc-clientC-cms(C社向け) UFW(ファイアウォール) 外部通信をデフォルト拒否 → DNS・HTTPS・DB のみ許可 ディスク 20GB 上限 / CPU・メモリ制限 / 設定ファイルロック 各ユーザーは自分のプロジェクトのファイルにしかアクセスできない Claude Code がコードを生成 → 人間がレビュー・承認してからコミット MySQL(読み取り専用) 開発用 DB サーバー SELECT のみ・ダミーデータ

管理ユーザーの役割

上の図で緑色で示した管理ユーザーは、Ubuntu 側の「窓口」です。メインPC からの SSH 接続を受け付け、システム管理と各専用ユーザーへの切り替えを担当します。

管理ユーザー sudo 権限あり・公開鍵認証で SSH ログイン システム管理 ・apt でパッケージ追加 ・UFW ルールの設定 ・ユーザー作成・制限設定 su で切り替え 各専用ユーザーに 切り替えて操作 rsync の接続先 ・メインPC からの同期を受付 ・各専用ユーザーの作業  ディレクトリを読み取り cc-clientA-web A社向け専用ユーザー cc-clientB-app B社向け専用ユーザー cc-clientC-cms C社向け専用ユーザー Claude Code 専用ユーザー 各ユーザーは完全に独立 — 互いのファイルにはアクセスできない

専用ユーザーの制限

案件や取引先ごとに専用ユーザーを分けることで、次の2つを実現します。

情報の隔離
A社のファイルをB社向けの Claude Code が物理的に参照できない
権限の制限
リソース・ネットワーク・コマンドを OS レベルで制限し、暴走の影響を閉じ込める
Claude Code 専用ユーザーの制限 (A社向け / B社向け / C社向け) sudo 権限なし・プロジェクトごとに1ユーザー リソース制限 ・ディスク上限 20GB(クォータ) ・CPU:プロセス数を制限(ulimit) ・メモリ上限あり(cgroups) ・.bashrc 等は変更不可(chattr +i) ネットワーク制限(UFW) ・インバウンド:SSH のみ許可 ・アウトバウンド:デフォルト全拒否  → DNS(53)/ HTTPS(443)  → DB サーバーへの接続のみ ファイルアクセス ・自分のホームディレクトリのみ ・他プロジェクトのファイルは見えない ・Claude Code の実行のみ可能 ・ネットワーク系コマンドを制限 データベース・Git ・DB 接続:読み取り専用(SELECT のみ) ・書き込みはメインPC から手動で実施 ・Git:pull / ブランチ切り替えのみ ・commit / push はしない apt 用の HTTP 通信は管理者が必要時に一時的に開放し、終わったら閉じる 開発用 DB サーバー Claude Code 用に読み取り専用ユーザーを用意 / 個人情報なし(ダミー化済み)

作業ステップ一覧

現在のベースライン(Ubuntu 24.04.3 LTS のクリーンインストールと初期設定)を起点に、以下の順で進めます。

ステップ1:Claude Code 専用ユーザー作成

  • プロジェクトごとに専用ユーザーを作成(例:cc-clientA-web、cc-clientB-app)
  • 各ユーザーは自分のホームディレクトリのみアクセス可能(他プロジェクトのファイルは見えない)
  • sudo 権限は付与しない
  • SSH ログインは不要(管理ユーザーから su で切り替え)
  • 新規プロジェクト開始時にユーザーを追加、完了時に無効化する運用
  • ユーザー作成〜制限設定はスクリプト化して効率化する

ステップ2:SSH 強化

  • パスワード認証を無効化し、公開鍵認証のみにする
  • PermitRootLogin no に設定
  • 必要に応じて fail2ban を導入

ステップ3:UFW の精緻化

  • インバウンド:メインPCのIPアドレスからの SSH(22/tcp)のみ許可
  • アウトバウンド:デフォルト deny に変更
  • DNS(53/udp)と HTTPS(443/tcp)のみ許可
  • DBサーバーへの接続(3306/tcp)を許可(宛先IPを限定)
  • apt 用の通信(80/tcp)は管理者が必要時に一時的に開放する運用

ステップ4:専用ユーザーの制限設定

  • ディスククォータ:20GB 上限
  • リソース制限:ulimit でプロセス数制限、cgroups(systemd スライス)でメモリ制限
  • .bashrc / .profile / .bash_logout を chattr +i で変更不可に
  • ネットワーク系コマンドの実行制限(wget / nc / ssh / scp / sftp)
  • ブラウザの確認・不要であれば削除

ステップ5:Claude Code のインストールと動作確認

  • ネイティブインストーラーを使用(sudo 不要、~/.local/bin にインストールされる)
  • インストール手順:curl でスクリプトを取得して実行
  • 認証設定(OAuth または API キー)
  • 各専用ユーザーごとにインストールと認証が必要
  • 動作確認(起動、API通信、制限の確認)
  • すべて完了したらスナップショットを取得

想定されるリスクと対策

リスク対策
システムファイルの破壊sudo 権限なしで防止
不正なパッケージインストールsudo なし+外部通信ブロックで防止
外部への不正通信UFW で DNS / HTTPS / DB 以外をブロック
ディスク大量消費クォータ 20GB で制限
CPU / メモリの暴走ulimit + cgroups で制限
設定ファイルの改ざんchattr +i で変更不可
プロジェクト間の情報漏洩プロジェクトごとにユーザーを分離、他ユーザーのホームディレクトリにアクセス不可
データベースの破壊・改ざん読み取り専用ユーザーで接続(SELECT のみ)
個人情報の漏洩開発用DBにはダミーデータのみ格納
Anthropic API 経由の情報漏洩API 通信自体は必須のため許容(ホームディレクトリ内に限定)

記事の構成

この全体概要のあと、各ステップを個別の記事にまとめています。環境構築(記事4〜10)を順番に進めたあと、WordPress を例にした実践的な設定(記事11〜12)、日常の運用(記事13)、2案件目以降のチートシート(記事14)、バックアップと移行(記事15)という構成です。

  1. Claude Code を安全に使うために知っておくこと
  2. 環境構成の検討経緯
  3. Claude Code 導入の設計と方針(この記事)
  4. Ubuntu 24.04.3 LTS セットアップ記録
  5. Claude Code 専用ユーザーの作成と権限設計
  6. SSH強化とファイアウォール設定
  7. Claude Code 専用ユーザーの制限設定
  8. Claude Code のインストールと初期設定
  9. 開発ワークフローの設定
  10. ファイル同期とコミット連携の設定
  11. WordPress を例に CMS 開発環境の構築
  12. Claude Code にプロジェクトの知識を渡す
  13. 日々の開発サイクル
  14. 新しいプロジェクトの始め方(チートシート)
  15. 環境の移行・バックアップ・復元

セットアップ後の開発ワークフロー

環境が完成したあと、日々の開発は以下の流れで進めます。開発者は「承認者」としてClaude Code を運用します。Claude Code に長時間勝手にコードを書かせることはせず、生成されたコードには必ず目を通します。

Claude Code の起動と終了

Claude Code は常駐プロセスではありません。必要なときに起動し、作業が終われば終了します。

作業開始:
  Tera Term で管理ユーザーとして SSH ログイン
  → su - cc-clientA-web(対象プロジェクトの専用ユーザーに切り替え)
  → claude(Claude Code 起動)

作業終了:
  → /exit または Ctrl+C で Claude Code 終了
  → プロセスは残らない

再開(後日):
  → su - cc-clientA-web
  → claude --continue(直前のセッションを再開)
  → claude --resume(過去のセッションを選択して再開)

セッション履歴は各専用ユーザーの ~/.claude/sessions/ に保存されます。プロジェクトごとにユーザーが分かれているため、セッションも完全に分離されます。

プロジェクト完了時はユーザーを無効化し、改修時に有効に戻すだけで復帰できます。

開発サイクル

1. 作業の準備(Ubuntu側)
   └→ Git リポジトリを pull、作業ブランチを作成・切り替え

2. Claude Code に作業を依頼
   └→ コードの生成・修正・リファクタリングなど

3. Claude Code がファイルを更新
   └→ Ubuntu 上の作業ディレクトリ内でファイルが変更される

4. Claude Code が作業完了
   └→ commit-msg.txt にコミットメッセージを書き出す

5. rsync でメインPCにファイルを同期
   └→ メインPC側から rsync で pull(ほぼリアルタイム)

6. メインPC の VS Code で差分を確認
   └→ 変更内容を目視レビュー、必要なら手動修正

7. メインPC の VS Code でコミット
   └→ commit-msg.txt の内容が git commit.template で
      コミットメッセージ欄にプリフィルされる
   └→ 内容を確認してコミット・プッシュ

ポイントは、Claude Code が push しないことです。Ubuntu 側では pull やブランチの発行・切り替えは行いますが、コミットとプッシュはメインPC側で実行します。コードの生成は Claude Code に任せますが、最終的な判断(差分の承認・コミット)は必ず人間が行います。

データベースに関しても同様です。Claude Code は DB の構造やデータを読んで SQL を提案しますが、実行はメインPC側から手動で行います。