前編「Cloudflare Tunnel 入門」では、トンネルを張って Public Hostname でサービスを公開し、Access の「社内メールドメインだけ許可」で認証画面を出すまでを1時間以内に完成させた。しかし本番で回そうとするとすぐに壁に当たる——「退職者のアカウントをどう止めるか」「VPNみたいに社内ファイルサーバーまで届くか」「ゲストに一時的に通したいがメールドメイン単位では無理だ」。前編の Step 4 はここを扱っていない。続編の設定編では IdP(SSO)連携でドメイン認証を卒業し、プライベートネットワークアクセス(WARP)でVPN代替インフラを整える。
前編のおさらいと今回の範囲
まず前編がカバーした範囲と、続編(設定編・運用編)がカバーする範囲を整理しておく。
| フェーズ | 内容 | どこで扱うか |
|---|---|---|
| トンネル作成 | cloudflared インストール・トンネル生成・systemd 登録 | 前編 Step 1–3 |
| Public Hostname 公開 | URL でサービスを外部公開 | 前編 Step 1–3 |
| Access 有効化(メールドメイン) | 「Email ends in @yourcompany.com」の Allow 1本 | 前編 Step 4 |
| IdP SSO 連携 | Google Workspace / Entra ID と接続してグループ管理 | 設定編 Step 1(本記事) |
| Private Network Access | WARP 経由で社内 CIDR にアクセス、VPN 代替 | 設定編 Step 2(本記事) |
| ポリシー設計 | 部署別・ゲスト・Service Token の型化 | 運用編 Step 3 |
| 監査ログ・アラート | アクセス記録の確認と異常検知 | 運用編 Step 4 |
🐝 前提条件 この記事は前編の設定が完了していることを前提とする。まだの場合は先にCloudflare Tunnel 入門を読んでほしい。
なぜ「Access の本番運用」が必要か
前編の「メールドメイン許可」で立ち止まる3つの壁
前編の Step 4 で設定した「Email ends in @yourcompany.com」は手軽だが、本番運用では3つの限界にぶつかる。
VPN vs Zero Trust Access — 運用観点の比較
| 観点 | 従来 VPN(WireGuard 等) | Zero Trust Access(Cloudflare) |
|---|---|---|
| クライアント | VPN アプリのインストール必要 | WARP クライアント(軽量・無料) |
| 退職者無効化 | VPN アカウント削除・証明書失効を手動 | IdP 側でアカウント無効化 → 即時全アプリ締め出し |
| 端末管理 | 証明書配布・鍵管理が必要 | デバイスポスチャー(運用編で詳説) |
| 監査ログ | VPN ログのみ(どのサービスに触ったかは別途) | アプリ単位でアクセスログが自動収集 |
| 外部ゲスト利用 | 難しい(ゲスト証明書の発行が必要) | メールアドレス単位・有効期限付きで許可可能 |
| 退職者対応の確実性 | ❌ 証明書失効を忘れると穴が残る | ✅ IdP 無効化で即座に全アプリ締め出し |
| コスト(50人規模) | ¥0〜(自前構築) | ¥0(Zero Trust Free) |
最大の違いは退職者対応の確実性だ。VPN では「証明書の失効忘れ」という人的ミスが起きやすい。Cloudflare Access + IdP 連携では、IdP 側でアカウントを無効化した瞬間にアクセス不能になる——この1点だけで本番移行する価値がある。
仕組みを理解する — Public Hostname と Private Network の違い
前編の Public Hostname と今回の Private Network Access は通信フローがまったく異なる。この違いを押さえてから Step に進もう。
前編(Public Hostname)の通信フロー
ブラウザ
Access 認証
アウトバウンド
Dify / n8n 等
ユーザーは URL を叩くだけでよい。端末への追加インストール不要。ただし HTTP/HTTPS アプリ限定。
Private Network Access(WARP)の通信フロー
社員の PC
IdP 認証済みセッション
Private Network ルート
RDP / SSH / SMB 等
端末に WARP クライアントが必要。IdP 認証を通過した端末だけが社内 CIDR への通信を透過できる。HTTP 以外のプロトコルもすべて対象。
どちらを使うべきか
| アクセス方法 | 向いているケース | 向いていないケース |
|---|---|---|
| Public Hostname 前編の方式 | ブラウザで使う社内向け Web アプリ(Dify・n8n・社内 Wiki) | RDP・SSH・ファイルサーバー・内部ホスト名が必要なアプリ |
| Private Network + WARP 今回の方式 | RDP・SSH・SMB ファイルサーバー・社内 DNS 依存アプリ・端末は会社管理 | スマートフォンやゲスト端末(WARP インストールが前提のため) |
🐝 基本の使い分け Web アプリは Public Hostname + Access、それ以外(RDP・SSH・ファイルサーバー)は Private Network + WARP。この2パターンで多くの中小情シスは VPN 不要になる。
準備するもの
- 前編が完了していること — cloudflared が稼働し、Public Hostname で最低1つのサービスが公開済み。まだの場合はCloudflare Tunnel 入門を先に済ませてほしい。
- IdP の管理者権限:Google Workspace(Google Cloud Console で OAuth クライアントを作成できる権限)または Microsoft Entra ID(Azure Portal でアプリ登録できるグローバル管理者・アプリケーション管理者権限)。どちらか一方で構わない。
- WARP クライアントを配布する端末(Step 2 から必要):Windows 10/11 または macOS。iOS・Android も対応するが本記事では Windows・macOS の手順を示す。
- 社内ネットワークの CIDR:例
192.168.1.0/24。Private Network ルートの設定で使う。
✅ 無料プランで全項目対応できる IdP 連携・Private Network Access・WARP クライアントはすべて Zero Trust Free(50ユーザー)で使える。追加コストは発生しない。
Step 1 — IdP(SSO)を連携して退職者管理を自動化する
前編の「Email ends in @yourcompany.com」を捨て、IdP のグループとアカウント状態に認証を紐付ける。退職者の IdP アカウントを無効化すれば、Cloudflare 上の全アプリが即座に締め出される。
① Google Workspace を連携する
Google Cloud Console で OAuth クライアントを作成してから Cloudflare に登録する。
Google Cloud Console 側の作業
- Google Cloud Console を開き、既存のプロジェクトを選択(または新規作成)する
- 左メニュー → API とサービス → 認証情報 → 認証情報を作成 → OAuth 2.0 クライアント ID
- アプリケーションの種類:ウェブアプリケーション、名前は任意(例:
Cloudflare Access) - 承認済みのリダイレクト URI に以下を追加する
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback
- 作成後、クライアント ID と クライアントシークレット をメモする
🐝 チーム名の確認場所
one.dash.cloudflare.com → Settings → General → Team name。yourorg.cloudflareaccess.com の yourorg 部分がチーム名。コールバック URL 入力時はここからコピーする。
Cloudflare Zero Trust 側の作業
- Zero Trust ダッシュボード → Settings → Authentication → Login methods → Add new → Google Workspace
- 以下の値を入力して Save
| 設定項目 | 値 |
|---|---|
| Name | 任意(例: Google Workspace) |
| Client ID | Google Cloud Console で取得したクライアント ID |
| Client Secret | Google Cloud Console で取得したクライアントシークレット |
| Your App Domain | 組織のドメイン(例: yourcompany.com) |
- Test ボタンをクリックして Google の OAuth 画面が開き、ログイン成功すれば連携完了
② Microsoft Entra ID を連携する
Google Workspace と手順の流れは同じだが、Azure Portal でアプリ登録を行う点が異なる。
Azure Portal 側の作業
- Azure Portal → Microsoft Entra ID → アプリの登録 → 新規登録
- 名前:任意(例:
Cloudflare Access)、サポートされているアカウントの種類:この組織ディレクトリのみ(シングルテナント) - リダイレクト URI:Web を選択し、
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callbackを入力 - 登録後、概要画面から アプリケーション(クライアント)ID と ディレクトリ(テナント)ID をメモする
- 証明書とシークレット → 新しいクライアントシークレット → 追加。表示された 値(シークレット文字列)をすぐにコピーする(画面を離れると再表示できない)
- API のアクセス許可 → アクセス許可の追加 → Microsoft Graph → 委任されたアクセス許可 から以下を追加し、〇〇に管理者の同意を与えます をクリックする:
User.Read・email・profile・openid・offline_access
Cloudflare Zero Trust 側の作業(Google Workspace と同じ画面で Microsoft Azure AD を選択)
| 設定項目 | 値 |
|---|---|
| Name | 任意(例: Entra ID) |
| Client ID | アプリケーション(クライアント)ID |
| Client Secret | 証明書とシークレットで作成した値 |
| Directory ID | ディレクトリ(テナント)ID |
🐝 Google と Entra ID のどちらを使うか どちらか組織で使っている方で構わない。日本の中小企業では Microsoft 365 経由で Entra ID が整備済みのケースが多いため、その場合は Entra ID を主軸にすることを推奨する。両方を登録してどちらでもログインできる構成も可能。
③ ポリシーを「グループ」ベースに切り替える
IdP を登録したら、前編で作成したアプリのポリシーを「メールドメイン」から「IdP グループ」に変更する。これが退職者自動締め出しの肝だ。
- Zero Trust → Access → Applications → 対象アプリ → Edit → Policies タブ
- 既存のポリシーを開き、Rule の Selector を Emails から Identity provider groups に変更する
- Value に IdP で同期されたグループを入力する(例: Google Workspace の
社員・Entra ID のセキュリティグループ名) - Save policy
| 前編の設定(変更前) | 本番設定(変更後) | |
|---|---|---|
| Selector | Emails ends in | Identity provider groups |
| Value | @yourcompany.com | Employees(IdP のグループ名) |
| 退職者の扱い | ドメインさえ合えば通過可能 | IdP でアカウント無効化 → 即時締め出し |
✅ これで退職者管理が自動化される 以降は Google Workspace / Entra ID 側でアカウントを無効化するだけで全アプリのアクセスが遮断される。Cloudflare 側の追加操作は不要。
Step 2 — Private Network Access でVPNを置き換える
ここからが前編と最も大きく異なる章だ。WARP クライアントを端末に入れ、社内の IP アドレス帯(CIDR)への通信を Cloudflare Tunnel 経由で透過させる。RDP・SSH・ファイルサーバー(SMB)など HTTP 以外のプロトコルも全対応する。
① トンネルにプライベートネットワークルートを追加する
- Zero Trust → Networks → Tunnels → 対象のトンネル → Edit
- Private Network タブ → Add a private network
- CIDR を入力する(例:
192.168.1.0/24)→ Save tunnel
🐝 CIDR の範囲の決め方
まず特定のサーバーセグメントだけに絞った狭い範囲(例: 192.168.10.0/24)で動作確認し、問題なければ広げる。社内 LAN 全体(192.168.0.0/16 等)を一気に追加するのは確認後でよい。
② Gateway でローカルドメインフォールバックを設定する
社内のプライベートホスト名(例: fileserver.intra・app.corp.local)を WARP 端末から名前解決するには、内部 DNS サーバーへのフォールバックを設定する。
- Zero Trust → Settings → WARP Client → デバイスプロファイル → Default → Configure
- Split Tunnels & Local Domain Fallback → Manage → Local Domain Fallback → Add a domain
- ドメインサフィックス(例:
intra・corp.local)と社内 DNS サーバーの IP(例:192.168.1.1)を入力 → Save
これで WARP 端末から fileserver.intra を引くと社内 DNS サーバーが応答し、CIDR ルートを経由してプライベートアドレスに届くようになる。
🐝 社内 DNS サーバーがない場合
ホスト名ではなく IP アドレス直打ちでのアクセス(例: \192.168.1.10\share)であれば DNS 設定は不要。DNS フォールバックはプライベートホスト名が必要な場合のみ設定する。
③ WARP クライアントを端末に配布する
まず Zero Trust 側でエンロールメントポリシーを設定し、どの端末が接続を許可されるかを定義する。
エンロールメントポリシーの設定
- Zero Trust → Settings → WARP Client → Device enrollment → Manage
- Add a rule → Selector: Emails ends in(または Identity provider groups)、Value: 自社ドメインまたは社員グループ → Save
クライアントのインストール(Windows)
- WARP クライアント(Windows)をダウンロードしてインストールする
- インストール後、タスクトレイの WARP アイコン → 右上の設定アイコン → Preferences → Account → Login with Cloudflare Zero Trust
- チーム名(例:
yourorg)を入力 → IdP のログイン画面でサインイン - ステータスが Connected になれば、社内 CIDR への通信が自動的にトンネル経由になる
コマンドラインでのエンロール(GPO/MDM 配布向け)
# Windows(PowerShell・管理者として実行) warp-cli.exe teams-enroll yourorg # macOS(ターミナル) /Applications/Cloudflare\ WARP.app/Contents/Resources/warp-cli teams-enroll yourorg
🐝 MDM 配布のヒント
Microsoft Intune や Jamf で全社展開する場合、WARP の MSI(Windows)・PKG(macOS)インストーラーをポリシーで配布し、teams-enroll コマンドをスクリプト実行するのが一般的。詳細は Cloudflare Docs: MDM deployment を参照。
④ アプリを Private hostname で保護する
WARP 経由でアクセスする内部サービス(URL は公開しないが、WARP 端末からは名前解決できる)に Access ポリシーを適用することで、「WARP 接続済み かつ IdP グループに属するユーザー」だけに絞り込める。
- Zero Trust → Access → Applications → Add an application → Self-hosted
- Application domain にプライベートホスト名を入力する(例:
fileserver.intra) - ポリシーを設定する(例: IdP グループ
Employeesに Allow)→ Save
これで WARP 接続済みかつ IdP 認証済みの端末からのみアクセス可能になる。VPN 相当の透過アクセスに IdP 認証が加わった構成が完成した。
✅ Step 2 完了チェック
WARP クライアントを接続した Windows / macOS 端末から、社内のプライベート IP(例: 192.168.1.10)への ping が通れば Private Network Access は正常に動作している。RDP・SSH・SMB(ファイルサーバー)もそのまま利用できるはずだ。
トラブルシュート
まとめ
Step 1 の IdP 連携で「退職者がドメイン認証をすり抜ける」問題が解決し、Step 2 の Private Network + WARP で「HTTP 以外の社内サービスも届く」VPN 相当の構成が完成した。
✅ 次のステップ インフラが整ったら、次は部署別アクセス制御・ゲスト一時許可・Service Token・監査ログを組み合わせて本番運用仕様に仕上げよう。続きは Cloudflare Access 運用編(近日公開)で扱う。それまではn8n × Dify 連携で Access で守った Dify を活用する構成も試してみてほしい。