約50クライアントのVPN接続を、Cloudflare WARP + Cloudflare Tunnel による Zero Trust 構成へ移行するための計画・設定手順書
現在、社内システムへのアクセスは AWS Client VPN でクライアントを制限しています。クライアント数が50に近づき、証明書配布・接続管理の運用負荷とVPN利用料が増加しているため、Cloudflare Zero Trust(WARPクライアント + Cloudflare Tunnel)へ移行します。
| 要件 | Cloudflareでの実現方法 |
|---|---|
| アクセス対象は社内Webアプリ (HTTP/HTTPS) | Cloudflare Tunnel のプライベートネットワークルーティングでEC2のプライベートIPへ到達 |
| 接続元を「アプリを入れた端末」だけに限定したい | WARPクライアントを各端末にインストールし、組織 (チーム) に登録済みの端末のみ通信を許可 |
| ユーザー単位の認証 | WARP登録時にメールアドレス認証 (ワンタイムコード)。会社メールアドレスを持つ人だけが登録可能 |
| EC2はインバウンドを開けたくない (現状: 外向きのみ) | Tunnel は EC2 から外向きにのみ接続を張る方式。インバウンドポート開放は一切不要 |
| 独自ドメインは使いたくない | プライベートIP直アクセス構成のためドメイン登録不要。Cloudflareが払い出す「チームドメイン」(例: synon.cloudflareaccess.com) のみ使用 |
| コストを抑えたい | Zero Trust Freeプラン (50ユーザーまで無料) で開始 |
http://10.0.1.10 (または社内アプリのプライベートIP/ポート) を開くだけです。WARPが有効な端末からの通信だけが Cloudflare 経由で Tunnel を通り EC2 に届きます。WARPを入れていない端末からは一切到達できません。
移行の核となる2つのコンポーネントの動きを整理します。
ファイアウォールやセキュリティグループの観点では、現在の「外向きのみ」ポリシーを一切変えずに済むのがこの方式の最大の利点です。AWS Client VPN のようにVPC側に受け口(エンドポイント)を作る必要がありません。
WARP は Cloudflare が無償配布するクライアントアプリ (Windows / macOS / Linux / iOS / Android 対応) です。組織の「チーム名」を入力してメール認証すると端末が組織に登録され、以後その端末の通信のうち社内宛て (例: 10.0.0.0/16) だけが Cloudflare 経由でトンネルにルーティングされます。
| AWS Client VPN (現状) | WARP (移行後) | |
|---|---|---|
| 端末の特定方法 | クライアント証明書を手動配布 | アプリ導入 + メール認証で端末登録 (証明書配布不要) |
| ユーザーの特定 | 証明書=端末単位 (人の特定は別管理) | メールアドレス単位で人を特定、ログに記録 |
| 接続操作 | 都度VPNクライアントで接続 | 常時ON可 (自動再接続)。一般Web閲覧は直接通信のまま |
| 失効 (退職者対応) | 証明書失効リスト (CRL) 更新が必要 | 管理画面でユーザー/端末を失効させるだけ |
「誰が」「どの端末で」アクセスできるかを、次の3層で制限します。
| 層 | 制限内容 | 設定場所 |
|---|---|---|
| ① 端末登録制限 | 会社メール (例: @synon.co.jp) を持つ人しかWARPを組織登録できない | Settings → WARP Client → Device enrollment permissions |
| ② 経路の限定 | 社内システムへの経路はWARP登録済み端末にしか存在しない (インターネットから直接到達不能) | Tunnel の Private Network 設定 + Split Tunnels |
| ③ 通信ポリシー | 登録済み端末でも、Gatewayポリシーで許可したユーザーの通信だけがEC2に届く。退職者は即時失効 | Gateway → Firewall policies → Network |
既存のAWS Client VPNを止めずに並行稼働させ、段階的に切り替えるリスク最小の計画です。
| フェーズ | 作業内容 | 担当 | 完了条件 |
|---|---|---|---|
| Phase 0 準備 | Cloudflareアカウント作成、チーム名決定、対象システムのIP/CIDR一覧化、利用者50名のメールアドレスリスト作成 | 情シス | リスト確定 |
| Phase 1 基盤構築 | §6 Cloudflare設定 + §7 EC2設定。既存VPNに影響なし | 情シス | 管理者端末からWARP経由で社内アプリ表示 |
| Phase 2 パイロット | 3〜5名の先行ユーザーで2週間程度実業務利用 | 情シス+先行ユーザー | 業務影響なしを確認 |
| Phase 3 全体展開 | 部署単位でWARP導入案内 (§8 の手順書を配布)。ヘルプデスク対応 | 情シス+各部署 | 50クライアント全員がWARP経由に移行 |
| Phase 4 VPN廃止 | 1週間の安定稼働後、§9 の手順でClient VPN削除 | 情シス | VPN課金停止を請求書で確認 |
所要時間の目安: 約1〜2時間。ダッシュボードのメニュー名は Cloudflare One (Zero Trust) 管理画面 (one.dash.cloudflare.com) のものです。UIは更新されることがあるため、名称が近いメニューを探してください。
synon → チームドメインは synon.cloudflareaccess.com になります。これはCloudflareが払い出すもので、独自ドメインの取得・移管は不要です。社員のみ登録許可@synon.co.jpaws-vpc-tokyo)。sudo cloudflared service install eyJh...)。これを§7でEC2に投入します。トークンは秘密情報として扱ってください。10.0.1.10/32 (対象IPのみ)10.0.0.0/1610.0.0.0/8 など RFC1918 全体) が「WARPを通さない」除外リストに入っています。ここを直さないと「設定したのに繋がらない」状態になります。10.0.0.0/8 を削除し、代わりに使っていない細分化されたレンジ (例: 10.128.0.0/9 など、自社VPCの 10.0.0.0/16 を含まない範囲) を再追加します。これで「10.0.0.0/16 宛だけWARPを通し、他は今まで通り」になります。社内システム許可10.0.0.0/16 AND User Email matches regex .*@synon\.co\.jp社内システム宛その他拒否10.0.0.0/16http://10.0.1.10 (社内アプリ) にアクセスして表示されること、WARPをOFFにすると繋がらないことを確認します。Zero Trust → Logs → Gateway → Network で通信ログにユーザーのメールアドレスが記録されていることも確認できます。| オプション | 効果 | 設定場所 |
|---|---|---|
| デバイスポスチャ | OSバージョン・ディスク暗号化・ファイアウォール有効などの条件を満たす端末のみ許可 | Settings → WARP Client → Device posture |
| セッション有効期限 | 再認証を定期的に要求 (例: 1週間ごと) | Settings → WARP Client → Device enrollment → Session duration |
| 外部IdP連携 | Google Workspace / Microsoft Entra ID のパスワード+MFA認証に切替可能 | Settings → Authentication → Login methods |
EC2側の作業は「cloudflaredのインストール」だけです。セキュリティグループのインバウンド開放は不要で、既存構成への変更は最小限です。
Tunnel作成画面 (§6-3) に表示されたコマンドをそのまま実行するのが最も簡単です。手動でインストールする場合:
Amazon Linux 2023 / RHEL系の場合:
# cloudflared をダウンロードしてインストール curl -L -o cloudflared.rpm \ https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm sudo rpm -i cloudflared.rpm # バージョン確認 cloudflared --version
Ubuntu / Debian系の場合:
curl -L -o cloudflared.deb \ https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared.deb
# §6-3 でコピーしたトークン入りコマンドを実行 (systemdサービスとして常駐化) sudo cloudflared service install eyJhIjoi...(ダッシュボードに表示されたトークン) # 稼働確認 sudo systemctl status cloudflared # → active (running) であればOK。ダッシュボード側でもTunnelが HEALTHY 表示になる # OS起動時の自動起動を確認 (service install で自動設定される) sudo systemctl is-enabled cloudflared
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-cloudflared.conf && sudo sysctl --system| タイミング | 作業 |
|---|---|
| Phase 1 (並行稼働中) | 変更なし。cloudflaredは既存のアウトバウンド全許可で動作します。追加の穴あけは不要。 |
| Phase 4 (VPN廃止時) | Client VPN 向けのインバウンド許可ルールを削除。インバウンドルールは空にできます。 |
| さらに絞る場合 (任意) | アウトバウンドを TCP 7844 / UDP 7844 / TCP 443 (cloudflared用) + アプリが必要とする通信のみに限定。 |
利用者に配布する手順です。1台あたり約5分で完了します。
synon (§6-1で決めた名前) を入力。http://10.0.1.10) を開いて表示されることを確認。従来のVPN接続はOFFのままにしてください。mdm.xml / plist / レジストリ) と共にWARPを配布すれば、利用者はメール認証だけで済みます。手動配布でも上記5ステップで完了します。Phase 3 完了後、1週間程度の安定稼働を確認してから実施します。削除した時点でVPN経由のアクセスはできなくなるため、全員の移行完了を必ず確認してください。
東京リージョンのAWS Client VPN料金と、Cloudflare Zero Trust Freeプランの比較です (概算・50クライアント想定)。
| AWS Client VPN (現状) | Cloudflare Zero Trust Free (移行後) | |
|---|---|---|
| 基本料金 | サブネット関連付け 約$0.15/時 × 730時間 ≒ 約$110/月 | $0 (50ユーザーまで) |
| 接続課金 | 約$0.05/時/接続。例: 50人 × 平日8時間 (約170h/月) ≒ 約$425/月 | $0 (接続時間・データ量の課金なし) |
| データ転送 | VPN経由のアウト転送に通常のDTO課金 | Tunnel経由のEC2アウト転送は通常のDTO課金 (同等) |
| 月額合計 (概算) | 約$500〜550/月 | $0 (EC2側の通常料金を除く) |
| 51ユーザー以上になった場合 | — | Pay-as-you-go 約$7/ユーザー/月 (年払い) に移行 |
| 項目 | 内容と対策 |
|---|---|
| Freeプランの50ユーザー上限 | 現在「50クライアント近く」のため上限ぴったり。ユーザー数=登録メールアドレス数です。増員が見えたら Pay-as-you-go (約$7/ユーザー/月) への切替を予算化しておく。それでもVPN費用より安価な水準。 |
| ログ保持は24時間 (Free) | Gatewayログの保持が短いため、監査要件がある場合はLogpush (有料) か、アプリ側のアクセスログで補完する。 |
| Split Tunnels 設定漏れ | §6-4 を忘れると「繋がらない」の典型原因。トラブル時は最初にここを確認。 |
| cloudflared の単一障害点 | EC2 1台の cloudflared が止まると全員アクセス不可。同じトークンで2台目 (別AZの小型インスタンス等) にもインストールするとレプリカとして自動冗長化される。最低でも systemd の自動再起動 (デフォルト有効) を確認。 |
| メール受信への依存 | One-time PIN はメールが届かないとログイン不可。メールサーバー障害時の代替手段 (管理者によるバイパス等) を決めておく。 |
| 社内DNS名でアクセスしている場合 | IP直ではなく http://kintai.internal のような内部ホスト名を使っている場合は、Gateway の Local Domain Fallback / リゾルバポリシーの追加設定が必要。パイロットで洗い出す。 |
| 顧客向けサービスへの影響 | 本構成は社内アクセス経路の変更のみで、同居する顧客向けサービスの経路には影響しない。ただしcloudflared導入時のリソース消費 (通常は軽微) を監視する。 |
| 運用作業 | 手順 |
|---|---|
| 利用者の追加 | ①登録許可ルールの対象なら追加作業ゼロ (本人がWARP登録するだけ)。②個別アドレス指定方式なら Device enrollment permissions にアドレス追加。 |
| 利用者の削除 (退職時) | Zero Trust → My Team → Users → 対象ユーザーを Revoke。端末のWARPは即座に組織から切断される。メールアカウント自体の停止も併せて実施。 |
| 接続状況の確認 | My Team → Devices で端末一覧・最終接続時刻を確認。Logs → Gateway で通信ログ (誰がどこへ) を確認。 |
| cloudflared の更新 | 数か月に一度 sudo yum update cloudflared (または apt) 実施。Tunnelのヘルスはダッシュボードで監視。 |
本構成を土台に、次の拡張が追加設定だけで可能です: SSH/RDPのブラウザ経由アクセス、Google Workspace / Entra ID とのSSO連携 (パスワード+MFA認証への切替)、デバイスポスチャによる端末健全性チェック、顧客向けサービスのCloudflare WAF/CDN化 (この場合はドメインが必要)。