Claude Code 導入の設計と方針
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
この記事では、Ubuntu 24.04.3 LTS 上に Claude Code の実行環境を構築するにあたり、手を動かす前に全体像を把握するための構成・方針・作業の流れをまとめています。
AIツールの導入は「とりあえずインストールして動かしてみる」でも始められますが、あとから権限設計やセキュリティを見直そうとすると、手戻りが大きくなりがちです。最初に完成形を把握してから作業に入ることで、各ステップで「なぜこの設定をするのか」が明確になり、迷いなく進められるようになります。
実際の作業手順は、このあとの各記事で1ステップずつ記録していきます。
【広告】 XServer VPS には Claude Code のアプリイメージが用意されています。
VPS上に独立した Claude Code 環境を簡単に構築することができます。
VPSでいろいろ試すなら『XServer VPS』
設計思想
Claude Code は強力なツールですが、何を実行するかをすべてコントロールできるわけではありません。
そこで、この環境では次の方針で進めます。
- Ubuntu 側は「作業場」に徹する
- Claude Code のインストールとコード生成のみを行う
- 生成物の実行はメインPC側
- rsync でファイルを同期してから、メインPCで動かす
- 外部通信は最小限
- UFW でアウトバウンドをデフォルト拒否にし、必要な通信だけを許可する
- 万が一の暴走に備える
- 専用ユーザーの権限を絞り、ディスクやリソースにも上限を設ける
- プロジェクトごとにユーザーを分離
- A社・B社など案件ごとに専用ユーザーを作成し、他プロジェクトのファイルに一切触れられないようにする
- データベースは読み取り専用
- 既存の開発用DBサーバーに接続するが、閲覧のみ。書き込みはメインPCから手動で行う
- 開発者は「承認者」
- Claude Code に長時間勝手にコードを書かせず、生成されたコードは必ず目を通してからコミットする
「便利さ」よりも「安全に回せること」を優先します。
環境の全体像
この環境は「メインPC」「Ubuntu(VMware)」「開発用DBサーバー」の3つで構成されています。まず全体を俯瞰し、そのあと管理ユーザーと専用ユーザーの役割を詳しく見ていきます。
管理ユーザーの役割
上の図で緑色で示した管理ユーザーは、Ubuntu 側の「窓口」です。メインPC からの SSH 接続を受け付け、システム管理と各専用ユーザーへの切り替えを担当します。
専用ユーザーの制限
案件や取引先ごとに専用ユーザーを分けることで、次の2つを実現します。
- 情報の隔離
- A社のファイルをB社向けの Claude Code が物理的に参照できない
- 権限の制限
- リソース・ネットワーク・コマンドを OS レベルで制限し、暴走の影響を閉じ込める
作業ステップ一覧
現在のベースライン(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)
- ブラウザの確認・不要であれば削除
curl は制限しません。Claude Code の自動アップデートやインストールに使用するため、curl は常に許可とし、外部通信の制御は UFW に任せる方針です。
ブラウザがインストールされているかは dpkg -l | grep firefox や snap list で確認できます。Server版では通常インストールされていませんが、念のため確認しておくと安心です。
ステップ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)という構成です。
- Claude Code を安全に使うために知っておくこと
- 環境構成の検討経緯
- Claude Code 導入の設計と方針(この記事)
- Ubuntu 24.04.3 LTS セットアップ記録
- Claude Code 専用ユーザーの作成と権限設計
- SSH強化とファイアウォール設定
- Claude Code 専用ユーザーの制限設定
- Claude Code のインストールと初期設定
- 開発ワークフローの設定
- ファイル同期とコミット連携の設定
- WordPress を例に CMS 開発環境の構築
- Claude Code にプロジェクトの知識を渡す
- 日々の開発サイクル
- 新しいプロジェクトの始め方(チートシート)
- 環境の移行・バックアップ・復元
セットアップ後の開発ワークフロー
環境が完成したあと、日々の開発は以下の流れで進めます。開発者は「承認者」として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側から手動で行います。
【広告】 XServer VPS には Claude Code のアプリイメージが用意されています。
VPS上に独立した Claude Code 環境を簡単に構築することができます。
VPSでいろいろ試すなら『XServer VPS』