Claude CodeでSalesforceを操作する前に整えた安全な実行環境ーWSL2 + VS Code(SSH)でローカルから隔離する

2026-08-05

Contents
  • 1. Claude CodeでSalesforceを直接操作できる
  • 2. まず用意した環境:WSL2のLinux環境
  • 3. 隔離の方法は他にもある
  • 4. 試した3つの構成と、採用した組み合わせ
  • 5. 採用した構成(Remote-SSH拡張)の作り方
    • 5.1. 1. WSL2(Ubuntu)を有効化する
    • 5.2. 2. /etc/wsl.confを編集し、WindowsのCドライブなどが見えないようにする
    • 5.3. 3. Windows側(コマンドプロンプトまたはPowerShell)でwsl --shutdownを実行し、WSLを完全に終了する
    • 5.4. 4. Ubuntuを起動し直す
    • 5.5. 5. WSLの中にSSHサーバーをセットアップする
    • 5.6. 6. 隔離できていることを確認する
    • 5.7. 7. Windows側のVS Codeから接続する
  • 6. この環境整備でできること・できないこと
  • 7. まとめ

Claude CodeでSalesforceを直接操作できる

Claude Code(Anthropic社が提供する、コードを書いたり操作したりできるAIエージェント)とMCP(Model Context Protocol)を組み合わせると、次のような操作をAIエージェントに直接任せられるようになります。

  • Salesforce組織に対するレコードの閲覧・作成・編集・削除

IT担当者であれば、次のようなより踏み込んだ操作も可能です。

  • メタデータの取得やデプロイ
  • SOQLの実行

うまく使えば、外部の開発ベンダーに頼らずに済む場面が増える、いわゆる「内製化」の後押しになりそうです。

とはいえ、いきなり本番のSalesforce組織や、日常で使っているPCそのものにAIエージェントを触らせるのは、誤った操作をされる可能性があり安全性の面で気が引けます。またそのためにまっさらなPCを用意するのもコストがかかります。そこでMCPを試す前に、まず「ローカルのPC環境に影響を与えにくい実行環境」を一つ用意してみることにしました。

この記事では、その環境をどう構築したか、実際に何を試して何が分かったかを紹介します。
先に断っておくと、ここで紹介する内容は「これをやれば絶対に安全」というのを保証するものではありません。
検証し、採用した一つのやり方、という位置づけで読んでいただければと思います。
実際のSalesforce操作(MCP連携)の話は、別の記事で扱います。

この記事で得られること

  • MCPでSalesforceを操作する前段として、どんな実行環境を用意したかが分かります
  • 自分の環境でそのまま参考にできる、「ローカルのPC環境に影響を与えにくい実行環境」構築の考え方・手順が分かります

想定読者

  • Salesforceを業務で使用している方
  • Salesforceの運用・開発にかかわる方(エンジニア含む)
  • 業務・開発へのAIエージェント導入に関心がある方
  • AIエージェントの安全性に不安をお持ちの方

開発環境

  • Windows11 Pro
  • VS Code (Visual Studio Code)

まず用意した環境:WSL2のLinux環境

Linuxは、普段お使いのWindowsとは別のOS(基本ソフト)です。WSL2(Windows Subsystem for Linux)という仕組みを使うと、Windowsの中に、もう1台別のパソコンが丸ごと入っているような形で、独立したLinux環境を用意できます。

もしClaude CodeをWindowsに直接インストールすると、Sandboxなどの保護設定をしていない限り、Windows上のファイルやアプリが操作される可能性が高まります。そうではなく、Claude Codeが実際に作業する場所をこのLinux環境の中に閉じ込めておけば、たとえAIが意図しない操作をしてしまっても、影響をこのLinux環境の中に留めることができます。
まずは、Windows環境と、Claude Codeが作業する環境を分けることにしました。

隔離の方法は他にもある

「AIエージェントの作業環境をローカルPCから切り離す」方法は、WSL2だけではありません。一般的によく知られている選択肢としては、ざっくり次のようなものがあります。

  • ローカル上に隔離された小さな環境を作る(Dev Containers / ローカルDocker) — WSL2と同じように、普段使っているパソコンの中に区切られた作業スペースを作る方法です
  • クラウド開発環境・VM(GitHub Codespacesなど) — そもそも自分のパソコンにはインストールせず、クラウド上の別のマシンで完結させる方法です。ローカルへの影響という観点では、これが最も徹底した形になります

今回WSL2を選んだのは、Githubなどの外部サービスを不要とし、データを外部クラウドに置かずに済むようにしたかったからです。

試した3つの構成と、採用した組み合わせ

WSL2の中でも、Windows側とどう繋ぐか・どう隔離するかにはいくつかの組み合わせがあります。調査した次の3つを試しました。

比較の前に、ここで出てくる言葉を簡単に整理します。

  • マウント: 別の場所にあるディスクやフォルダを、自分の作業環境の一部であるかのように見えるようにする仕組みです。WSL2は初期設定で、WindowsのCドライブなどを自動的にLinux側の/mnt/cとして見えるようにしています(自動マウント)。この記事で「マウントを無効化する」というのは、この自動的に見える状態をオフにすることです
  • WSL拡張: VS Code(Windows版)から、WSL上のLinux環境に直接つないで作業するための公式拡張機能です。見た目はWindows側のVS Codeのままですが、中身はLinux環境を操作しています
  • Remote-SSH拡張: SSH(離れたコンピュータへ安全に接続するための標準的な仕組み)を使って、ネットワーク経由でLinux環境に接続するためのVS Code拡張機能です。WSL拡張と違い、WSLとの直接連携機能を使わず、あくまでネットワーク越しの接続として繋がります
  • VS CodeのWindows版とLinux版の違い: 普段Windows上で使っているVS Code(Windows版)は、WSL拡張やRemote-SSH拡張を使ってLinux環境に「外から接続」する形です。一方Linux版VS Codeは、Linuxの中に直接インストールされたVS Code本体そのものであり、Windows側のVS Codeを経由しません
  • Sandbox: Claude Code自身が持つ、指定した範囲外のファイルには手を出さないようにする内蔵の安全機構です。ただしOSレベルで強制されるものではなく、あくまでClaude Code自身が「読みません」と自己申告する形の制御である点に注意が必要です

  • 方法A: WSL拡張 + Sandbox — WindowsのCドライブなどを見えるようにしたまま(automount、つまり自動マウントが有効な状態)、Claude Code自身のsandbox機能でWindows側の読み取りを拒否する構成です。ドライブが見える状態を変えられない以上、この防御は必須です。ただしこれはClaude Code自身が「読みません」と申告する形の防御であり、OSレベルでの遮断ではありません。実際、この設定自体もClaude Codeによって書き換えられてしまうことを確認しています
  • 方法B: Remote-SSH拡張(マウントOFF) — WindowsのCドライブなどを最初から見えなくした上で(automount無効)、SSH(離れた場所にあるコンピュータへ安全に接続するための標準的な仕組み)経由でのみLinux環境に接続する構成です。接続のたびに認証が必要になります(パスワードの代わりに専用の鍵ファイルを使う「鍵認証」にすれば、より安全です)
  • 方法C: Linux版VS Code(マウントOFF) — 同じくCドライブなどを見えなくした上で、WSLの中にLinux版のVS Codeを直接インストールし、Windows側のVS Code拡張機能を使わずに完結させる構成です

補足: Sandboxはドライブへのアクセス制限以外にも複数の設定項目を持つ仕組みです。マウントの有効/無効に関わらず方法B・Cでも変わらず関係するため、ドライブアクセスの観点では必須でなくても、念のため同様の設定をしておくことが望ましいです。

簡単に比較すると、次のようになりました。

観点方法A: WSL拡張+Sandbox方法B: Remote-SSH拡張(採用)方法C: Linux版VS Code
マウント無効(隔離)×(有効)○(無効)○(無効)
動作△(設定の書き換えを確認)△(日本語入力不可・操作に不具合)

当初は「接続方式そのものへの依存を構造的になくせる」という理屈で、方法Cが一番筋が良いと考えていました。しかし実際に試してみると、次のような不具合が見つかり、普段使用しているVSCode同様の操作は不可でした。

  • 標準では日本語入力ができない
  • カーソルと実際にクリックする場所がずれる

なお、マウントを無効化した状態では、WSL拡張機能は使えません。接続のたびにWindows側からLinux側へ起動用のスクリプトを転送する仕組みになっており、その転送元であるCドライブ自体を遮断してしまっているため、接続エラーになってしまうのです。

Cドライブを経由しない接続方法が必要だったため、最終的に採用したのは方法B(Remote-SSH拡張)です。

採用した構成(Remote-SSH拡張)の作り方

実際に採用した構成は、次のような手順で作りました。

1. WSL2(Ubuntu)を有効化する

Windowsの「コマンドプロンプト」または「PowerShell」を開き(スタートメニューで「PowerShell」などと検索すると見つかります)、以下のコマンドを実行します。

wsl --install

WSL2のインストールが完了すると、Ubuntuのアカウント作成が始まります。画面の指示に従って、次の3つを設定します。

補足: 「Ubuntu」はLinuxの中でも代表的な種類(ディストリビューション)の1つです。wsl --installはオプションを指定しなければこのUbuntuを標準で自動インストールする仕様になっており(他の種類を使いたい場合はwsl --install -d <ディストリビューション名>のように指定します)、今回は標準のままUbuntuを使いました。

  1. ユーザー名を入力する(Create a default Unix user account:の後に入力)
  2. パスワードを入力する(New password: → Retype new password:の2回)
  3. 利用状況データ収集についての確認(Would you like to opt-in to platform metrics collection (Y/n)?)拒否のnを入力する

アカウント作成が完了すると、そのままPowerShellのウィンドウ内でUbuntuのプロンプトに切り替わりますが、/mnt/c/WINDOWS/system32$のような分かりにくい表示になることがあります(上の画像の最下行)。これは異常ではありません。

以降の作業をスムーズに進めるため、このウィンドウはいったん閉じて、Windowsのコマンドプロンプト/PowerShellを開き直すことをお勧めします

2. /etc/wsl.confを編集し、WindowsのCドライブなどが見えないようにする

/etc/wsl.confはroot権限(Linuxにおける管理者権限)でないと書き換えられないファイルのため、VS Codeやメモ帳から直接開いて保存しようとしても失敗します。Ubuntuのターミナルで、sudo(一時的に管理者権限でコマンドを実行するための命令)を使って、以下のコマンドでエディタを開いて編集します。

sudo nano /etc/wsl.conf

以下の内容を追記します(すでに他の設定が書かれている場合は、それを消さずに追記してください)。

[automount]
enabled = false

[interop]
enabled = false
appendWindowsPath = false

それぞれの設定の意味は次の通りです。

  • [automount] enabled = false: WindowsのCドライブなど(/mnt/cなど)をLinux側に自動的にマウントしない設定です。これにより、Linux環境からWindows側のファイルが見えなくなります
  • [interop] enabled = false: Linux側からWindowsの実行ファイル(.exeなど)を呼び出す機能(interop)を無効にする設定です
  • [interop] appendWindowsPath = false: LinuxのPATH環境変数に、WindowsのPATHを追加しない設定です。enabled = falseと合わせて設定することで、Windows側のプログラムを誤って参照・実行してしまう経路を塞ぎます

編集が終わったらCtrl + O → Enterで保存し、Ctrl + Xでエディタを終了します。

3. Windows側(コマンドプロンプトまたはPowerShell)でwsl --shutdownを実行し、WSLを完全に終了する

設定を反映させるため、いったんWSLを完全に終了させます。

wsl --shutdown

4. Ubuntuを起動し直す

wsl --shutdownでWSLは完全に停止するため、Windowsのスタートメニューなどから改めて「Ubuntu」を起動します。

5. WSLの中にSSHサーバーをセットアップする

起動したUbuntuのターミナルで、以下のコマンドを1行ずつ実行します。

sudo apt update

Ubuntu内のソフトウェア一覧を最新の状態に更新します。

なお、社内ネットワークなど、プロキシが設定されている環境では、このコマンドが正常に実行できない場合があります。その場合は、お使いの環境に応じたプロキシ設定が別途必要になります(本記事の範囲外のため割愛します)。

sudo apt install openssh-server -y

SSH接続を受け付けるためのソフト(OpenSSH)をインストールします。

sudo sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config

SSHの設定ファイルを書き換え、ポート番号を22から2222に変更します。Windows本体側のSSH関連機能とポート番号が衝突するのを避けるためです。

sudo sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

SSHの設定ファイルを書き換え、パスワードでのログインを許可します。

sudo service ssh restart

書き換えた設定を反映させるため、SSHサービスを再起動します。

sudo systemctl enable ssh

WSL起動時にSSHサービスが自動的に立ち上がるようにします。

なお、WSLを再起動した後やしばらく時間が空いた後は、SSHサービス自体が停止していて接続できないことがあります。その場合は、Ubuntu側のターミナルで次のコマンドを実行してサービスを起動し直します。

sudo systemctl start ssh

6. 隔離できていることを確認する

Ubuntu側のターミナルで以下を実行します。

ls /mnt/c

何も表示されなければ、WindowsのCドライブへのアクセスが遮断されている状態です。

7. Windows側のVS Codeから接続する

VS Codeの拡張機能から、Microsoft公式の「Remote – SSH」をインストールします。

Ctrl + Shift + P を押し、「Remote-SSH: Open SSH Configuration File…」を実行します。

SSH構成ファイル(C:\Users\<ユーザー名>\.ssh\config)を選択し、Enterを押します。

configファイルが開くので、末尾に以下を追記します。

Host wsl-ssh
    HostName localhost
    Port 2222
    User <Ubuntuのユーザー名>


追加したら Ctrl + S で保存します。

VS Code左下の「><」アイコンから「ホストに接続する」を選び、一覧に出てくるwsl-sshをクリックします。プラットフォームを聞かれたらLinuxを選択します。

初回接続時は、接続先の正当性を確認するフィンガープリントの確認画面が表示されるので、続行を選びます。

その後Ubuntuのパスワードを入力すれば接続完了です(接続の過程で、パスワードの入力を複数回求められることがあります)。

左下の表示がSSH: wsl-ssh(SSH構成ファイルで設定したHost名)のようになっていれば成功です。

この環境整備でできること・できないこと

できること

  • Claude Codeが、Windows側のファイルや実行ファイルに触れてしまう経路を防ぐ
  • たとえAIが意図しない操作をしたり、誤動作したスクリプトが動いたりしても、その影響をこのLinux環境の中に留めやすくする

できないこと

  • 同じLinux環境の中にある、他のプロジェクトや.envなどの機密ファイルへのアクセス。これはこの隔離とは別の話で、ファイル単位の許可設定などで扱う必要があります
  • MCP経由で繋がるSalesforce組織そのものへの誤操作。誤ったSOQLの実行やメタデータのデプロイなどは、この記事の環境整備の範囲外です。こちらは操作単位の許可設定の話になります

まとめ

今回、MCPでSalesforceを操作してみる前段として、次のことを行いました。

  • Windows側で日常使っている環境と、Claude Codeが作業するLinux環境を、WSL2で分離した
  • OSレベルでの分離方法として、WSL拡張+Sandbox・SSH・Linux版VS Codeの3つの構成を比較検証した
  • 最終的に、マウントを無効化した上でSSH接続(鍵認証)する構成を採用した

繰り返しになりますが、この構築はリスクを減らすもので、行えば絶対的に安全というわけではありません。
方法Aの説明で触れたClaudeCodeのSandboxのように、OSの隔離だけでなくClaude Code側の設定を組み合わせたセキュリティ構築も必要になります。

Salesforceの内製化支援に関するご相談をお待ちしております。

Salesforce導入支援 – 株式会社エヌデーデー(NDD)