Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Microsoft Entra ID

最終更新 Markdown で表示Agent セットアップ

Microsoft Entra ID(旧称 Azure Active Directory)を Cloudflare One に連携し、ユーザー ID とグループ所属に基づくポリシーを作成できます。ユーザーは Entra ID の資格情報で Cloudflare One に認証します。

Entra ID をアイデンティティプロバイダーとして設定する

1. Entra ID の設定値を取得する

連携の設定には、次の Entra ID の値が必要です。

  • Application (client) ID
  • Directory (tenant) ID
  • Client secret

これらの値を取得するには:

  1. Microsoft Entra admin center にログインします。

  2. Applications > Enterprise applications を開きます。

  3. New application を選び、Create your own application を選択します。

  4. アプリケーションに名前を付けます。

  5. Register an application to integrate with Microsoft Entra ID (App you're developing) を選択します。ギャラリーアプリの選択肢が出ても選びません。Create を選択します。

  6. Redirect URIWeb プラットフォームを選び、次の URL を入力します。

    https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback

    チーム名は、Cloudflare ダッシュボードSettings > Team name and domain > Team name で確認できます。

    Azure でアプリケーションを登録する
  7. Register を選択します。

  8. 次に Microsoft Entra ID に戻り、Applications > App registrations を開きます。

  9. All applications を開き、作成したアプリを選択します。Application (client) IDDirectory (tenant) ID をコピーします。ステップ 3 で Entra ID をアイデンティティプロバイダーとして追加する ときに使います。

    Azure で Application ID と Directory ID を確認する
  10. 同じページの Client credentialsAdd a certificate or secret を開きます。New client secret を選択します。

  11. クライアントシークレットに名前を付け、有効期限を選びます。

  12. クライアントシークレットを作成したら、Value をコピーします。作成直後にしか表示されないため、安全な場所に保管します。ステップ 3 で Entra ID をアイデンティティプロバイダーとして追加する ときに、このクライアントシークレットの値が必要です。

    Azure でのクライアントシークレットの位置

2. Entra ID で API 権限を設定する

  1. App registrations > All applications を開き、対象のアプリケーションを選び、API permissions を開きます。

  2. Add a permission を選択します。

  3. Microsoft Graph を選択します。

  4. Delegated permissions を選び、次の 権限 を有効にします。

    • email
    • offline_access
    • openid
    • profile
    • User.Read
    • Directory.Read.All
    • GroupMember.Read.All
  1. 7 つの権限をすべて有効にしたら、Add permissions を選択します。

  2. Grant admin consent を選択します。

    Azure で設定済みの権限一覧

3. Entra ID をアイデンティティプロバイダーとして追加する

  1. Cloudflare ダッシュボードZero Trust > Integrations > Identity providers を開きます。

  2. Your identity providersAdd new identity provider を選択します。

  3. Azure AD を選択します。

  4. Microsoft Entra ID で取得した Application (client) IDClient secretDirectory (tenant) ID を入力します。

  5. Save を選択します。

  6. 接続を テスト するには、Test を選択します。

  7. (任意)次の設定を行います。

Identity Providers エンドポイントに POST リクエストを送ります。

Required API token permissions

At least one of the following token permissions is required:
  • Access: Organizations, Identity Providers, and Groups Write
Add an Access identity providerbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/identity_providers" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "Entra ID example",
		"type": "azureAD",
		"config": {
				"client_id": "<your client id>",
				"client_secret": "<your client secret>",
				"directory_id": "<your azure directory uuid>",
				"support_groups": true
		}
	}'
  1. cloudflare_api_token に次の権限を追加します。

    • Access: Organizations, Identity Providers, and Groups Write
  2. cloudflare_zero_trust_access_identity_provider リソースを設定します。

    resource "cloudflare_zero_trust_access_identity_provider" "microsoft_entra_id" {
    	account_id = var.cloudflare_account_id
    	name       = "Entra ID example"
    	type       = "azureAD"
    	config 		 = {
    		client_id                  = var.entra_id_client_id
    		client_secret              = var.entra_id_client_secret
    		directory_id               = var.entra_id_directory_id
    		support_groups             = true
    		}
    }

UPN とメール

組織の UPN とユーザーのメールアドレスが一致しない場合は、メール用のカスタムクレームを追加する必要があります。たとえば、メール形式が [email protected] で UPN が [email protected] の場合、メールベースのポリシーを設定するならメールクレームを作成します。

デフォルトでは、Cloudflare はまず、メールを表すために Cloudflare One で作成・設定した一意のクレーム名(例: email_identifier)を id_token の JSON レスポンスから探します。一意のクレーム名を設定していない場合は、次に email クレームを探します。どちらもなければ、最後に UPN クレームを探します。

Microsoft Entra の id_token でメールクレームを受け取るには:

  1. Microsoft Entra admin centerApplication > App registration > All applications を開き、対象のアプリケーションを選択します。

  2. ManageToken configuration を選択します。

  3. メール用のクレームを追加します。

    Entra のメールクレーム

    上の例には UPN クレームとメールクレームの両方があります。Microsoft Entra の設定でメールクレームを作成したため、Cloudflare は JSON レスポンス内の email キーと値のペアを探します。

  4. メールクレームに email 以外の名前を付けた場合は、Cloudflare One の設定も更新します。

    a. Cloudflare ダッシュボードZero Trust > Integrations > Identity providers > Azure AD > Edit を開きます。

    b. Optional configurations > Email claim に、組織のメールアドレスを表すクレーム名を入力します。

Object ID

ユーザーのメールや UPN が変わる可能性がある場合は、Microsoft Entra のユーザー Object ID(oid)を Cloudflare Access に渡せます。Access が Object ID を受け取る設定は、カスタム OIDC クレーム を参照してください。Microsoft Entra 側の追加設定は不要です。

ユーザーとグループを同期する

Microsoft Entra ID 連携では、SCIM を使って IdP グループを同期し、ユーザーを自動デプロビジョニングできます。

SCIM が Access と Gateway のポリシー評価に与える影響は異なります。

Access は、認証時にアイデンティティプロバイダーが返す SAML アサーションまたは OIDC トークンから、ユーザーの ID とグループ所属を評価します。SCIM は Access のポリシービルダーに読みやすいグループ名を提供しますが、Access はログイン評価に SCIM のグループ所属を使いません。Enable user deprovisioning をオンにすると、SCIM アプリケーションからユーザーを削除した時点で、そのユーザーのアクティブな Access セッションが取り消されます。グループ所属の変更後にセッションを取り消すよう、SCIM を設定することもできます。Access は、ユーザーが再度認証したときに、更新後のアイデンティティプロバイダーデータを評価します。

Gateway は、User Registry の ID に対してアイデンティティベースのポリシーを評価します。ユーザーまたはグループ所属が変わると、SCIM はこの ID を更新します。ユーザーの再認証を待つ必要はありません。Cloudflare One Client のデバイスプロファイルも、同じ同期済み ID を使います。

前提条件

  • Microsoft Entra ID P1 または P2 ライセンス

1. Cloudflare One で SCIM を有効にする

  1. Cloudflare ダッシュボードZero Trust > Integrations > Identity providers を開きます。

  2. Entra ID 連携を探し、Edit を選択します。

  3. Enable SCIMSupport groups をオンにします。

  4. (任意)次の設定を行います。

  1. Regenerate Secret を選択します。SCIM EndpointSCIM Secret をコピーします。これらの値を Entra ID に入力します。

  2. Save を選択します。

SCIM シークレットに有効期限はありません。ただし、いつでも手動で再生成できます。

2. Entra ID で SCIM を設定する

  1. Microsoft Entra ID のメニューで Enterprise applications を開きます。

  2. New application > Create your own application を選択します。

  3. アプリケーションに名前を付けます(例: Cloudflare Access SCIM)。

  4. Integrate any other application you don't find in the gallery (Non-gallery) を選択します。ギャラリーアプリの選択肢が出ても選びません。Create を選択します。

  5. アプリケーション作成後、Provisioning を開き、New Configuration を選択します。

  6. Tenant URL に、前のステップ で Cloudflare One の Entra ID 連携から取得した SCIM Endpoint を入力します。

  7. Secret token に、前のステップ で Cloudflare One の Entra ID 連携から取得した SCIM Secret を入力します。

  8. Test Connection を選び、資格情報が正しく入力されていることを確認します。テストが失敗した場合は、Cloudflare One の Entra ID 連携で Regenerate Secret を選び、Save したうえで、新しい SCIM SecretSecret token に入力します。

  9. Create を選択します。

  10. SCIM アプリケーションを作成したら、アプリケーションにユーザーとグループを割り当てます

  1. Provisioning を開き、Start provisioning を選択します。

  2. Provisioning Mode は、Microsoft 側のデフォルトで Automatic になっているはずです。

  3. Entra ID の Overview ページで、同期ステータスを確認できます。

同期されたユーザーとグループを確認するには、Provisioning logs を選択します。

Cloudflare One でユーザー ID が更新されたかを確認するには、SCIM プロビジョニングログ を表示します。

Cloudflare Access と Microsoft Entra ID の間でやり取りされる ID 情報を監視するには、Cloudflare ダッシュボード > Zero Trust > Insights > Logs > SCIM provisioning logs を開き、SCIM アクティビティログ を確認します。

プロビジョニング属性

プロビジョニング属性は、Entra ID が Cloudflare Access と同期するユーザープロパティを定義します。プロビジョニング属性を変更するには、Attribute mapping を開き、Provision Microsoft Entra ID Users を選択します。

未設定の場合は、次のユーザー属性マッピングを有効にすることをおすすめします。

customappsso Attribute Entra ID Attribute 推奨
userName userPrincipalName または mail 必須。Cloudflare One 上のユーザーのメールアドレスと一致させてください。
emails[type eq "work"].value mail 必須。Cloudflare One 上のユーザーのメールアドレスと一致させてください。
name.givenName givenName 推奨
name.familyName surname 推奨

Zero Trust ポリシーでの Entra グループ

自動入力

SCIM 同期が有効 な場合、Entra グループ名が Access と Gateway のポリシービルダーに自動表示されます。

Access ポリシーを作る場合は、Azure Groups セレクターを選びます。 Access ポリシービルダーに表示される Azure グループ名

Gateway ポリシーを作る場合は、User Group Names セレクターを選びます。

手動入力

SCIM で同期していないグループでも、Access と Gateway のポリシーを作成できます。Entra ID はディレクトリグループを、Name とは別のランダムな文字列である Object Id の形式で公開します。

  1. Cloudflare One で Microsoft Entra ID を設定するときに、Support groups を有効にします。

  2. Microsoft Entra ダッシュボードで、対象の Entra グループの Object Id を控えます。次の例では、Admins というグループの ID は 61503835-b6fe-4630-af88-de551dd59a2 です。

    Azure ダッシュボードで Azure グループ ID を確認する
  3. Access ポリシーを作る場合は Azure Groups セレクターを選びます。Gateway ポリシーを作る場合は User Group IDs セレクターを選びます。

  4. Value に、Entra グループの Object Id を入力します。

    Cloudflare One に Azure グループ ID を入力する

入れ子グループ

認証

Entra グループ向けの Access および Gateway ポリシーは、すべての 入れ子グループ にも適用されます。たとえば、ユーザーが US devs に所属し、US devs がより広いグループ Devs の一部である場合、そのユーザーは Devs 向けに作成したすべてのポリシーで許可またはブロックされます。

SCIM プロビジョニング

SCIM プロビジョニングでは、入れ子グループはサポートされません。Microsoft Entra ID の SCIM 実装は、入れ子グループの所属情報を Cloudflare に送りません。明示的に割り当てたグループの直接メンバーだけがプロビジョニングされます。グループ所属を正しく同期するには、プロビジョニングしたいグループにユーザーを直接割り当てて、Entra ID 側でグループをフラット化してください。

Microsoft からの SCIM リクエストに入れ子グループの情報が含まれないため、Cloudflare も Microsoft も、入れ子グループが同期されていないことを通知できません。

デバイスクライアント再認証時にユーザー操作を必須にする

ユーザーが Cloudflare One Client のセッションを再認証する たびに、Entra ID への資格情報の再入力を必須にできます。この設定をするには:

  1. Identity Providers エンドポイントGET リクエストを送り、Entra ID アイデンティティプロバイダーのレスポンスをコピーします。

    Required API token permissions

    At least one of the following token permissions is required:
    • Access: Organizations, Identity Providers, and Groups Write
    • Access: Organizations, Identity Providers, and Groups Read
    Get an Access identity providerbash
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/identity_providers/$IDENTITY_PROVIDER_ID" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
  2. PUT リクエストで Entra ID アイデンティティプロバイダーを更新 します。リクエスト本文には既存の設定をすべて含め、prompt パラメーターを login または select_account に設定します。例:

    Required API token permissions

    At least one of the following token permissions is required:
    • Access: Organizations, Identity Providers, and Groups Write
    Update an Access identity providerbash
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/identity_providers/$IDENTITY_PROVIDER_ID" \
    	--request PUT \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
    		"type": "azureAD",
    		"uid": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
    		"name": "Entra ID",
    		"version": "31e74e9b4f033e16b604552091a72295",
    		"config": {
    				"azure_cloud": "default",
    				"client_id": "<CLIENT_ID>",
    				"conditional_access_enabled": false,
    				"directory_id": "<AZURE_DIRECTORY_ID>",
    				"redirect_url": "https://<TEAM_NAME>.cloudflareaccess.com/cdn-cgi/access/callback",
    				"prompt": "login",
    				"support_groups": true
    		},
    		"scim_config": {
    				"enabled": true,
    				"user_deprovision": true,
    				"seat_deprovision": false,
    				"group_member_deprovision": false,
    				"identity_update_behavior": "automatic"
    		},
    		"scim_base_url": "https://<TEAM_NAME>.cloudflareaccess.com/populations/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/scim/v2"
    	}'

役に立ちましたか?