Microsoft Entra ID(旧称 Azure Active Directory)は、アカウントが侵害された可能性に基づいてユーザーの リスクレベル ↗ を算出します。Cloudflare Zero Trust では、Entra ID のリスクユーザーリストを Cloudflare Access と同期し、リスクの高いユーザーにより厳しい Zero Trust ポリシーを適用できます。
このチュートリアルでは、Entra ID がリスクありと判断したユーザーを、自動的にリモートブラウザーへリダイレクトする方法を示します。
所要時間:
1 時間
- Microsoft Entra ID Premium P2 ライセンス
- Cloudflare Browser Isolation アドオン
- デバイスで Gateway HTTP フィルタリング が有効であること
- npm ↗ がインストールされていること
- Node.js ↗ がインストールされていること
Entra ID については、IdP の設定手順 を参照してください。
基本の IdP 連携をテストして動作を確認したら、スクリプトが Entra ID でリスクユーザーグループを作成・更新できるように、追加の権限を有効にします。
-
Microsoft Entra ID で App registrations を開きます。
-
IdP 連携用に作成したアプリケーションを選択します。
-
API permissions を開き、Add a permission を選択します。
-
Microsoft Graph を選択します。
-
Application permissions を選択し、次の 権限 ↗ を追加します。
IdentityRiskyUser.ReadAllDirectory.ReadWriteAllGroup.CreateGroup.ReadAllGroupMember.ReadAllGroupMember.ReadWriteAll
-
Grant admin consent を選択します。
有効にした権限の一覧が表示されます。
次に、リスクユーザーで Entra ID セキュリティグループを埋める自動スクリプトを設定します。
すぐに始めるには、次の手順でサンプルの Cloudflare Workers スクリプトをデプロイします。または、Azure Functions ↗ やほかのツールで同じスクリプトを実装することもできます。
-
ターミナルを開き、サンプルプロジェクトをクローンします。
npm create cloudflare@latest risky-users -- --template https://github.com/cloudflare/msft-risky-user-ad-sync -
プロジェクトディレクトリへ移動します。
cd risky-users -
Wrangler 設定ファイル に、次の値を含めます。
<ACCOUNT_ID>: Cloudflare の アカウント ID。<TENANT_ID>: Entra ID を ID プロバイダーとして設定した ときに取得した、Entra ID の Directory (tenant) ID。<CLIENT_ID>: Entra ID を ID プロバイダーとして設定した ときに取得した、Entra ID の Application (client) ID。
{ "$schema": "./node_modules/wrangler/config-schema.json", "name": "risky-users", // Set this to today's date "compatibility_date": "2026-09-20", "main": "src/index.js", "workers_dev": false, "account_id": "<ACCOUNT-ID>", "vars": { "AZURE_AD_TENANT_ID": "<TENANT-ID>", "AZURE_AD_CLIENT_ID": "<CLIENT-ID>", }, "triggers": { "crons": ["* * * * *"], }, }"$schema" = "./node_modules/wrangler/config-schema.json" name = "risky-users" # Set this to today's date compatibility_date = "2026-09-20" main = "src/index.js" workers_dev = false account_id = "<ACCOUNT-ID>" [vars] AZURE_AD_TENANT_ID = "<TENANT-ID>" AZURE_AD_CLIENT_ID = "<CLIENT-ID>" [triggers] crons = [ "* * * * *" ]
-
Worker を Cloudflare のグローバルネットワークにデプロイします。
npx wrangler deploy -
AZURE_AD_CLIENT_SECRETというシークレット変数を作成します。wrangler secret put AZURE_AD_CLIENT_SECRETシークレットの値を入力するよう求められます。Microsoft Entra ID を ID プロバイダーとして設定した ときに取得した Client secret を入力します。
Worker スクリプトは毎分 1 回実行を始めます。リアルタイムログを見るには、次のコマンドを実行し、スクリプトの実行を待ちます。
wrangler tail --format pretty初回実行のあと、自動生成されたグループが Entra ID ダッシュボードに表示されます。
次に、Entra ID のリスクユーザーグループを Cloudflare Access と同期します。
-
Entra ID で、SCIM エンタープライズアプリケーションに次のグループを割り当てます。
IdentityProtection-RiskyUser-RiskLevel-highIdentityProtection-RiskyUser-RiskLevel-mediumIdentityProtection-RiskyUser-RiskLevel-low
これで、Cloudflare Access はグループ所属の変更を Entra ID と同期します。同期状態は、SCIM アプリケーションの Provisioning ページで確認できます。
最後に、リスクユーザーグループのトラフィックを隔離する Gateway HTTP ポリシー を作成します。
-
Cloudflare One ↗ で、Traffic policies > Firewall policies > HTTP を開きます。
-
Add a policy を選択します。
-
User Group Names ルールを含む Isolate ポリシー を作成します。たとえば、次のポリシーは、高リスクと判定されたすべてのメンバーに対して、
app1.example.comとapp2.example.comをリモートブラウザーで提供します。Selector Operator Value Logic Action Domain in app1.example.com,app2.example.comAnd Isolate User Group Names in IdentityProtection-RiskyUser-RiskLevel-high
ポリシーをテストするには、Microsoft ドキュメントの リスク検出のシミュレーション ↗ を参照してください。