跳转到内容
搜索文档

隔离存在风险的 Entra ID 用户

最后更新 查看 MarkdownAgent 设置

Microsoft Entra ID(前身为 Azure Active Directory)根据用户账户被入侵的概率计算用户的风险等级 (risk level) ↗。借助 Cloudflare Zero Trust,您可以将 Entra ID 存在风险的用户列表与 Cloudflare Access 进行同步,并对风险较高的用户应用更严格的 Zero Trust 策略。

本教程展示了当用户被 Entra ID 视为存在风险时,如何自动将其重定向到远程浏览器。

完成所需时间:

1 小时

前提条件

1. 将 Entra ID 设置为身份提供商

请参阅针对 Entra ID 的我们的 IdP 设置说明。

2. 添加 Entra ID API 权限

在对基础 IdP 集成进行测试并确认工作正常后,启用其他权限以允许脚本在 Entra ID 中创建和更新存在风险的用户组:

  1. 在 Microsoft Entra ID 中,转到 App registrations(应用注册)。

  2. 选择您为 IdP 集成创建的应用程序。

  3. 转到 API permissions(API 权限) 并选择 Add a permission(添加权限)。

  4. 选择 Microsoft Graph。

  5. 选择 Application permissions(应用程序权限) 并添加以下权限 ↗:

    • IdentityRiskyUser.ReadAll
    • Directory.ReadWriteAll
    • Group.Create
    • Group.ReadAll
    • GroupMember.ReadAll
    • GroupMember.ReadWriteAll
  6. 选择 Grant admin consent(授予管理员同意)。

您将看到已启用的权限列表。

Entra ID 中的 API 权限

3. 将存在风险的用户添加到 Entra ID 组

接下来,配置一个自动化脚本,该脚本将向 Entra ID 安全组中填充存在风险的用户。

要快速入门,请按照下面的分步说明部署我们的示例 Cloudflare Workers 脚本。或者,您可以使用 Azure Functions ↗ 或任何其他工具来实现该脚本。

  1. 打开终端并克隆我们的示例项目。

    npm create cloudflare@latest risky-users -- --template https://github.com/cloudflare/msft-risky-user-ad-sync
  2. 转到项目目录。

    cd risky-users
  3. 修改 Wrangler 配置文件以包含以下值:

    {
    	"$schema": "./node_modules/wrangler/config-schema.json",
    	"name": "risky-users",
    	// Set this to today's date
    	"compatibility_date": "2026-08-17",
    	"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-08-17"
    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 = [ "* * * * *" ]
  1. 将 Worker 部署到 Cloudflare 的全球网络。

    npx wrangler deploy
  2. 创建一个名为 AZURE_AD_CLIENT_SECRET 的机密变量。

    wrangler secret put AZURE_AD_CLIENT_SECRET

    系统会提示您输入机密的值。输入在将 Microsoft Entra ID 设置为身份提供商时获取的 Client secret(客户端密钥)。

Worker 脚本将开始每分钟执行一次。要查看实时日志,请运行以下命令并等待脚本执行:

wrangler tail --format pretty

初次运行后,自动生成的组将显示在 Entra ID 仪表板中。

Entra ID 仪表板中的风险用户组

4. 同步存在风险的用户组

接下来,将 Entra ID 存在风险的用户组与 Cloudflare Access 进行同步:

  1. 启用 SCIM 同步。

  2. 在 Entra ID 中,将以下组分配给您的 SCIM 企业应用程序:

    • IdentityProtection-RiskyUser-RiskLevel-high
    • IdentityProtection-RiskyUser-RiskLevel-medium
    • IdentityProtection-RiskyUser-RiskLevel-low

Cloudflare Access 现在将与 Entra ID 同步组内成员身份的变化。您可以在 SCIM 应用程序的 Provisioning 页面上验证同步状态。

5. 创建浏览器隔离策略

最后,创建一条 Gateway HTTP 策略来隔离存在风险的用户组的流量。

  1. 在 Cloudflare One ↗ 中,转到 Traffic policies(流量策略) > Firewall policies(防火墙策略) > HTTP。

  2. 选择 Add a policy(添加策略)。

  3. 构建一个包含 User Group Names 规则的隔离策略。例如,以下策略在远程浏览器中为所有被标记为高风险的成员服务 app1.example.com 和 app2.example.com:

    选择器 运算符 值 逻辑 操作
    Domain(域名) in app1.example.com, app2.example.com And(且) Isolate(隔离)
    User Group Names(用户组名称) in IdentityProtection-RiskyUser-RiskLevel-high

要测试此策略,请参阅 Microsoft 文档以模拟风险检测 ↗。

这篇文档对您有帮助吗?