INTEGRITY Документация

Пользовательская интеграция состояния устройства

Cloudflare One позволяет применять к своим приложениям пользовательские проверки состояния устройства. Для этого настраивается интеграция Cloudflare One Client по принципу «сервис-сервис», которая периодически обращается к внешнему 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 Client проходит аутентификацию во внешнем API через Cloudflare Access. Внешний API должен проверить токен приложения выданный Cloudflare Access для того, чтобы любые запросы, обходящие Access (например, из-за неправильной настройки сети), отклонялись.

Данные, переданные во внешний API

Cloudflare передаст следующие параметры на настроенную конечную точку API. Эти данные можно использовать для идентификации устройства и присвоения оценки состояния (posture score). Для некоторых устройств не вся идентифицирующая информация применима, в этом случае поле останется пустым. За один запрос передается не более 1,000 устройств.

Поле Описание
device_id UUID устройства, назначенный Cloudflare One Client
email Адрес электронной почты, используемый для аутентификации Cloudflare One Client
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 Идентификатор стороннего устройства (пустая строка, если недоступен)
score Целое число от 0 - 100

Пример тела ответа:

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

Настройте пользовательские проверки состояния устройства

1. Создайте токен службы

Cloudflare One Client использует Access Client ID и Access Client Secret для безопасной аутентификации во внешнем API. Если у вас ещё нет Access Client ID и Access Client Secret, создать новый токен службы.

2. Создать приложение Access

Далее защитите внешний API с помощью Cloudflare Access, чтобы Cloudflare One Client мог проходить аутентификацию с помощью токена службы. Чтобы добавить конечную точку API в Access:

  1. Создать Self-hosted приложение для вашей конечной точки API.

  2. Добавьте следующую политику Access в приложение. Убедитесь, что Действие имеет значение Service Auth (не Allow).

    Действие Тип правила Селектор Значение
    Service Auth Включить Service Token <TOKEN-NAME>

3. Добавьте интеграцию с поставщиком услуг

Чтобы создать пользовательскую интеграцию между сервисами:

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Интеграции > Поставщики услуг.
  2. Выберите Добавить.
  3. Выберите Пользовательский поставщик услуг.
  4. Введите любое имя для провайдера. Это имя будет использоваться в дашборде для обозначения этого подключения.
  1. В ID клиента Access и Client Secret Access, введите токен службы Access, используемый для аутентификации во внешнем API.
  2. В URL REST API, введите внешнюю конечную точку API, к которой Cloudflare будет обращаться за информацией о состоянии устройства (например, https://api.example.com). Подробнее см. Требования к внешнему API.
  3. В Частота опроса, выберите, как часто Cloudflare One должен запрашивать информацию у внешнего API.
  4. Выберите Протестировать и сохранить. Тест проверяет, может ли Cloudflare пройти аутентификацию по URL API с использованием предоставленных учётных данных Access.

Затем, настроить проверку состояния устройства чтобы определить, соответствует ли данная оценка состояния устройства значению «пройдено» или «не пройдено».

4. Настройте проверку состояния

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Многократно используемые компоненты > Проверки состояния > Проверки поставщиков услуг.
  2. Выберите Добавьте проверку.
  3. Выберите провайдера Custom service provider.
  4. Введите любое имя для проверки состояния устройства.
  5. Настройте атрибуты требуется, чтобы устройство прошло проверку состояния.
  6. Выберите Save.
  7. Чтобы протестировать, перейдите в Insight > Журналы > Журналы состояния и убедитесь, что проверка состояния поставщика услуг возвращает ожидаемые результаты.

Теперь эту проверку состояния устройства можно использовать в политика состояния устройства.

Атрибуты состояния устройства

Селектор Описание Значение
Оценка Оценка состояния, возвращаемая внешним API 0 к 100