1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxy Endpoint使ってIdentity認証ができるように!PACファイルも保存できます!

Last updated at Posted at 2025-12-25

はじめに

Cloudflare の Zero Trust ソリューションの大きな強みの一つは、クライアントレス構成を非常にシンプルに実装できる点だと思っています。

一方で、WARP(エージェント)のインストールが難しい端末では、Secure Web Gateway における Identity ベースの制御が適用しづらいという課題がありました。

この課題を解決するための機能が、ついに Cloudflare からリリースされます!

2025年12月現在、この機能はクローズドベータの段階にあり、すべてのアカウントで有効化されているわけではありません。近日中にオープンベータになると言われています。

この仕組みを実現するキーとなるのが PAC ファイル です。

今回、新たにAuthorization endpointPAC File Hosting という機能が提供されます。これにより、従来は Workers や社内 Web サーバなどにホストする必要があった PAC ファイルを、Cloudflare の管理画面上でIdentity認証つきProxyエンドポイントとセットで直接ホスティングできるようになります!

結果として、WARP を導入できない端末でも、Identity 認証を含む Secure Web Gateway の制御が適用できるようになり、Cloudflare のクライアントレスソリューションがさらに充実することになります!

設定手順

それでは、早速設定画面へ。

詳しい手順はドキュメントも参照してください:

ネットワーク > リゾルバとプロキシー > プロキシエンドポイント に遷移すると、設定画面が新しくなっています。

スクリーンショット 2025-12-24 20.50.58.png

エンドポイントを追加する > 認証エンドポイントを追加するでエンドポイントの作成とともに、ログイン方法、Accessのポリシーが適応できます。

スクリーンショット 2025-12-24 20.54.38.png

保存してできたエンドポイントをPACファイルに適応するため、コピーしてしておきます。

スクリーンショット 2025-12-24 20.55.12.png

次にPACファイル追加をクリック

そうすると、PACファイルJavaScriptが出てきますがテンプレートを利用すれば簡単に記述できますのでご安心ください。
スクリーンショット 2025-12-24 21.05.03.png

PAC ファイルの記述例

以下は、Identity 認証を含む PAC ファイルの記述例です。Google WorkspaceをIdPとして利用しています:

function FindProxyForURL(url, host) {
  // ============================
  // 0) Normalize
  // ============================
  host = host.toLowerCase();
  
  // ============================
  // 1) IdP Bypass (Google Workspace) - CRITICAL
  // ============================
  // Avoid auth loops + make login reliable
  if (
    host === "accounts.google.com" ||
    dnsDomainIs(host, ".accounts.google.com") ||
    host === "oauth2.googleapis.com" ||
    dnsDomainIs(host, ".googleusercontent.com") ||
    dnsDomainIs(host, ".gstatic.com") ||
    dnsDomainIs(host, ".googleapis.com")
  ) {
    return "DIRECT";
  }
  
  // ============================
  // 2) Local / Private Bypass
  // ============================
  if (isPlainHostName(host) || shExpMatch(host, "*.local") || host === "localhost") {
    return "DIRECT";
  }
  
  // If host is already an IP, check RFC1918 without dnsResolve()
  if (isInNet(host, "10.0.0.0", "255.0.0.0") ||
      isInNet(host, "172.16.0.0", "255.240.0.0") ||
      isInNet(host, "192.168.0.0", "255.255.0.0") ||
      isInNet(host, "127.0.0.0", "255.0.0.0")) {
    return "DIRECT";
  }
  
  // Only resolve DNS when needed (reduces slowness / weird failures)
  var ip = dnsResolve(host);
  if (ip !== null) {
    if (
      isInNet(ip, "10.0.0.0", "255.0.0.0") ||
      isInNet(ip, "172.16.0.0", "255.240.0.0") ||
      isInNet(ip, "192.168.0.0", "255.255.0.0") ||
      isInNet(ip, "127.0.0.0", "255.0.0.0")
    ) {
      return "DIRECT";
    }
  }
  
  // ============================
  // 3) (Optional) Bypass Access hostnames themselves
  // ============================
  // Helps avoid self-proxying during login/logout callbacks
  if (dnsDomainIs(host, ".cloudflareaccess.com")) {
    return "DIRECT";
  }
  
  // ============================
  // 4) Proxy everything else via Cloudflare Gateway Proxy Endpoint
  // ============================
  // Use HTTPS proxy endpoint on 443; add DIRECT fallback for resiliency
  return "HTTPS xxxxxxx.proxy.cloudflare-gateway.com:443; DIRECT";
}

重要な注意点

利用する IdP 宛の通信をバイパスしておかないと、ログイン時に無限ループに陥りますので、必ず 1) IdP Bypass は設定してください

詳細はドキュメントを参照:
https://developers.cloudflare.com/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/best-practices/#pac-file-template-with-identity-provider-bypass

もちろん、4) Proxy everything else via Cloudflare Gateway Proxy Endpoint に設定する URL は、先ほど作成したエンドポイント URL を記載しておきます。これで、バイパスした通信以外はこの Proxy endpoint を経由するようになります。

端末上の動作確認

実際にSecure Web Gatewayポリシーが適用されるかを確認してみます。

PAC ファイル作成後に取得できる、PAC ファイルの URL をコピーし、端末もしくはブラウザーに設定しておきます。

端末への設定方法

  • macOS の場合: Apple サポートページを参照
  • Windows の場合: ネットワークとインターネット > プロキシ から設定

PAC ファイル利用時も、端末のシステム証明書ストアに Cloudflare の CA 証明書をインストールする必要があります。WARP を利用していれば自動でインストールされますが、クライアントレスの場合は別途追加が必要になります。

動作確認

諸々設定をしてブラウザーを立ち上げると、いきなり Access の認証画面が立ち上がります。

スクリーンショット 2025-12-24 21.34.17.png

認証をしてブロックポリシーを設定したページに遷移すると...

クライアントレスでページがブロックされています!

スクリーンショット 2025-12-24 21.39.19.png

ログではしっかりIdentity情報も記録されています。

スクリーンショット 2025-12-25 11.39.25.png

サイトアクセスブロック以外にも、概ねSWGの機能が使えます。例えば、Perplexity利用時にアップロードを禁止するというポリシーを追加すると・・・

スクリーンショット 2025-12-24 21.46.45.png

アップロードが延々成功しません。

ログを確認すると、しっかりIdentity情報付でブロックされたことが確認できました。ちなみにリモートブラウザー機能が使えることも確認できています。

スクリーンショット 2025-12-24 21.48.16.png

いかがでしたでしょうか。PAC File HostingとAuthorization Proxyのおかげでクライアントレスのオプションが増え、Cloudflare Zero Trustの実装面での選択肢も増えたことと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?