Cloudflare Access をエンドユーザーとオリジンサーバーのあいだの認証層として追加すると、社内ツールやアプリケーションを安全に公開できます。
このページでは、公開ホスト名を使い、インターネット上の誰からでも Web アプリケーションにアクセスできるようにする方法を説明します。プライベート IP またはプライベートホスト名で公開する場合は、セルフホストのプライベートアプリケーションを追加する を参照してください。
- Cloudflare 上の有効なドメイン
- ドメインが フルセットアップ または 部分的な(
CNAME)セットアップ のいずれかであること
-
Cloudflare ダッシュボード ↗ で、Zero Trust > Access controls > Applications を開きます。
-
Create new application を選択します。
-
Self-hosted and private を選択します。
-
Add public hostname を選択します。
-
Domain のドロップダウンで、アプリケーションを表すドメインを選びます。ドメインは、Cloudflare アカウント内の有効なゾーンに属している必要があります。同じルートパスを共有するアプリケーションの複数部分を保護するには、ワイルドカード を使えます。
あるいは、Cloudflare for SaaS のカスタムホスト名 を使う場合は、Switch to custom input を選び、カスタムホスト名を入力します。
-
Access policies で、既存のポリシーを追加するか、新しいポリシーを作成して、アプリケーションに接続できるユーザーを制御します。Access アプリケーションはデフォルトで拒否です。ユーザーは Allow ポリシーに一致してからアクセスが許可されます。
-
ユーザーの認証方法を設定します。
アプリケーションで有効にする アイデンティティプロバイダー を選択します。
(推奨)単一の IdP だけでアクセスを許可する場合は、Apply instant authentication をオンにします。エンドユーザーには Cloudflare Access のログインページ は表示されません。代わりに、Cloudflare はユーザーを SSO ログインへ直接リダイレクトします。
- (任意) Authenticate with Cloudflare One Client をオンにすると、ユーザーは Cloudflare One Client のセッションアイデンティティ でアプリケーションに認証できます。
-
(任意)アプリケーション向けに 独立した MFA を設定します。
-
Session Duration で、ユーザーの アプリケーショントークン の有効期限を選びます。
Cloudflare は、アプリケーションへのすべての HTTP リクエストで、有効なアプリケーショントークンがあるかを確認します。ユーザーのアプリケーショントークン(およびグローバルトークン)の期限が切れている場合は、IdP での再認証を求めます。詳細は セッション管理 を参照してください。
-
(任意)Additional settings タブを開き、アプリケーションの体験をカスタマイズします。
- App Launcher customization: App Launcher でのこのアプリケーションの表示を設定します。
-
Custom block pages: アプリケーションへのアクセスを拒否されたときに、ユーザーへ表示する内容を選びます。
- Cloudflare default: ログインページ を再読み込みし、Cloudflare Access のロゴの下にブロックメッセージを表示します。既定のメッセージは
That account does not have accessです。カスタムメッセージを入力することもできます。 - Redirect URL: 指定した Web サイトへリダイレクトします。
- Custom page template: Cloudflare One でホストする カスタムブロックページ を表示します。
- Cloudflare default: ログインページ を再読み込みし、Cloudflare Access のロゴの下にブロックメッセージを表示します。既定のメッセージは
- クロスオリジンリソース共有(CORS)の設定
- Cookie settings
- 401 Response for Service Auth policies: 正しい サービストークン なしでユーザー(またはマシン)がアプリケーションへリクエストした場合に、
401レスポンスコードを返します。
-
Create を選択します。
社内アプリケーションを公開するには、Cloudflare Tunnel を設定 します。Access ポリシーに一致するユーザーだけがアクセスを許可されます。
アプリケーションがすでにパブリックに到達できる場合、トンネルは必須ではありません。ただし、その場合は ほかの方法 でオリジン IP を保護する必要があります。
オリジンを保護するには、Cloudflare Access が発行する アプリケーショントークン を検証する必要があります。トークン検証により、ネットワークの設定ミスなどで Cloudflare Access を迂回したリクエストは拒否されます。
1 つの方法は、Cloudflare Tunnel デーモンの cloudflared にトークン検証を任せる設定です。Cloudflare Tunnel の設定で Protect with Access を有効にします。Cloudflare Tunnel による自動検証を使わない場合は、オリジンを手動で設定 し、すべてのリクエストで有効なトークンを確認してください。
ユーザーは、Cloudflare Access で認証したあと、セルフホストアプリケーションに接続できます。
ドメインが 部分的な(CNAME)セットアップ の場合、Cloudflare は DNS ゾーンを管理しません。トンネルに公開アプリケーションルートを追加したあと、外部プロバイダー側で DNS レコードを手動作成する必要があります。
トンネル設定で、ホスト名を社内サービスに対応づける 公開アプリケーションルートを追加 します。たとえば、ホスト名を app.example.com にし、http://localhost:8080 へ向けます。
フル DNS セットアップ では、トンネルに公開アプリケーションルートを追加すると、Cloudflare が DNS レコードを自動作成します。部分的な(CNAME)セットアップでは、ドメインをホストしている DNS プロバイダー(権威 DNS プロバイダー)側で CNAME レコードを追加する必要があります。
外部 DNS プロバイダーで、次の値の CNAME レコードを作成します。
- Name: トンネルで設定したホスト名(例:
app.example.com) - Target:
<HOSTNAME>.cdn.cloudflare.net(例:app.example.com.cdn.cloudflare.net)
Access のセルフホストアプリケーションを使う場合、ほとんどの Cloudflare 製品はアプリケーションと互換性があります。
ただし、次の製品はサポートされていません。
ゾーン全体ではなく特定のアプリケーションだけ Zaraz を無効にするには、アプリケーションのドメインにスコープした Configuration Rule を使います。
Google tag gateway はゾーン単位で設定され、特定のホスト名にスコープできません。ホスト名で Access binding cookie を使うには、ゾーン全体で Google tag gateway を無効にします。