跳转到内容
搜索文档

自定义设备姿态集成

最后更新 查看 MarkdownAgent 设置

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

这篇文档对您有帮助吗?