跳转到内容
搜索文档

自定义设备姿态集成

最后更新 查看 MarkdownAgent 设置

Cloudflare One 允许您在应用程序上实施自定义设备姿态检查。这涉及配置 Cloudflare One 客户端服务对服务(service-to-service)集成,该集成会定期调用您选择的外部 API,无论是第三方端点提供商还是自建解决方案。调用时,该 API 将从 Cloudflare 接收设备标识信息,并应返回 0100 之间的值。然后,您可以设置一个设备姿态检查来确定返回的值属于通过还是失败;例如,您可以仅当用户的设备姿态值大于 60 时才允许其访问。

sequenceDiagram
    participant Cloudflare One Client
		participant Cloudflare Access
    participant External API
    Cloudflare One Client->>Cloudflare Access: Client ID and Secret
		Cloudflare Access->>External API: Application token
		Cloudflare One Client->>External API: JSON with user and device identity
    External API-->>Cloudflare One Client: JSON with 0-100 result

外部 API 要求

自定义服务提供商集成适用于满足以下规范的任何 API 服务。有关自定义设备姿态集成 API 的示例,请参阅我们的 Cloudflare Workers 示例代码

身份验证

Cloudflare One 客户端通过 Cloudflare Access 向外部 API 进行身份验证。外部 API 应验证 Cloudflare Access 签发的应用程序令牌,以确保拒绝任何绕过 Access 的请求(例如,由于网络配置错误)。

传递给外部 API 的数据

Cloudflare 将向配置的 API 端点传递以下参数。您可以使用此数据来标识设备并分配姿态分数。对于某些设备,并非所有标识信息都适用,在这种情况下,该字段将为空白。每次请求最多将发送 1,000 台设备。

字段 描述
device_id 由 Cloudflare One 客户端分配的设备 UUID
email 用于验证 Cloudflare One 客户端的电子邮件地址
serial_number 设备序列号
mac_address 设备 MAC 地址
virtual_ipv4 设备虚拟 IPv4 地址
hostname 设备名称

示例请求体:

{
  "devices": {
    [
      {
        "device_id": "9ece5fab-7398-488a-a575-e25a9a3dec07",
        "email": "[email protected]",
        "serial_number": "jdR44P3d",
        "mac_address": "74:1d:3e:23:e0:fe",
        "virtual_ipv4": "100.96.0.10",
        "hostname": "string",
      },
      {...},
      {...}
    ]
  }
}

外部 API 的预期响应

对于每个 Cloudflare device_id,API 服务应返回姿态分数,并可选择返回第三方设备 ID。

字段 描述
s2s_id 第三方设备 ID(如果不可用,则为空字符串)
score 0 - 100 之间的整数值

示例响应体:

{
  "result": {
    "9ece5fab-7398-488a-a575-e25a9a3dec07": {
      "s2s_id": "",
      "score": 10
    },
    "device_id2": {...},
    "device_id3": {...}
  }
}

设置自定义设备姿态检查

1. 创建服务令牌

Cloudflare One 客户端使用 Access Client ID 和 Access Client Secret 来安全地向外部 API 进行身份验证。如果您还没有 Access Client ID 和 Access Client Secret,请创建一个新的服务令牌

2. 创建 Access 应用程序

接下来,将外部 API 保护在 Cloudflare Access 之后,以便 Cloudflare One 客户端可以使用服务令牌进行身份验证。要将 API 端点添加到 Access:

  1. 为您的 API 端点创建一个自托管应用程序

  2. 向应用程序添加以下 Access 策略。确保将 **Action(操作)**设置为 Service Auth(而非 Allow)。

    操作 规则类型 选择器
    Service Auth(服务身份验证) Include(包含) Service Token(服务令牌) <TOKEN-NAME>

3. 添加服务提供商集成

要创建自定义服务对服务集成:

  1. Cloudflare 仪表板中,前往 Zero Trust > Integrations(集成) > Service providers
  2. 选择 Add new(添加新项)
  3. 选择 Custom service provider
  4. 为该提供商输入任意名称。此名称将在整个仪表板中用于引用此连接。
  1. 在 **Access client ID(Access 客户端 ID)**和 **Access client secret(Access 客户端密钥)**中,输入用于向外部 API 进行身份验证的 Access 服务令牌。
  2. 在 **Rest API URL(REST API URL)**中,输入 Cloudflare 将查询姿态信息的外部 API 端点(例如 https://api.example.com)。有关更多信息,请参阅外部 API 要求
  3. 在 **Polling frequency(轮询频率)**中,选择 Cloudflare One 应多久向外部 API 查询一次信息。
  4. 选择 Test and save(测试并保存)。该测试将检查 Cloudflare 能否使用提供的 Access 凭据向 API URL 进行身份验证。

接下来,配置设备姿态检查以确定给定的姿态分数是否构成通过或失败。

4. 配置姿态检查

  1. Cloudflare 仪表板中,前往 Zero Trust > Reusable components(可重用组件) > Posture checks > Service provider checks
  2. 选择 Add a check(添加检查)
  3. 选择 Custom service provider 提供商。
  4. 为该态势检查输入任意名称。
  5. 配置设备通过态势检查所需的属性
  6. 选择 Save(保存)
  7. 要进行测试,请前往 Insight > Logs > Posture logs,并验证服务提供商态势检查是否返回预期结果。

您现在可以在设备态势策略中使用此态势检查。

设备姿态属性

选择器 描述
Score 由外部 API 返回的姿态分数 0100

这篇文档对您有帮助吗?