← Cloudflare One / cloudflare-one / integrations / service-providers
Пользовательская интеграция состояния устройства
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:
-
Создать Self-hosted приложение для вашей конечной точки API.
-
Добавьте следующую политику Access в приложение. Убедитесь, что Действие имеет значение Service Auth (не Allow).
Действие Тип правила Селектор Значение Service Auth Включить Service Token <TOKEN-NAME>
3. Добавьте интеграцию с поставщиком услуг
Чтобы создать пользовательскую интеграцию между сервисами:
- В Панель управления Cloudflare ↗, перейдите в Zero Trust > Интеграции > Поставщики услуг.
- Выберите Добавить.
- Выберите Пользовательский поставщик услуг.
- Введите любое имя для провайдера. Это имя будет использоваться в дашборде для обозначения этого подключения.
- В ID клиента Access и Client Secret Access, введите токен службы Access, используемый для аутентификации во внешнем API.
- В URL REST API, введите внешнюю конечную точку API, к которой Cloudflare будет обращаться за информацией о состоянии устройства (например,
https://api.example.com). Подробнее см. Требования к внешнему API. - В Частота опроса, выберите, как часто Cloudflare One должен запрашивать информацию у внешнего API.
- Выберите Протестировать и сохранить. Тест проверяет, может ли Cloudflare пройти аутентификацию по URL API с использованием предоставленных учётных данных Access.
Затем, настроить проверку состояния устройства чтобы определить, соответствует ли данная оценка состояния устройства значению «пройдено» или «не пройдено».
4. Настройте проверку состояния
- В Панель управления Cloudflare ↗, перейдите в Zero Trust > Многократно используемые компоненты > Проверки состояния > Проверки поставщиков услуг.
- Выберите Добавьте проверку.
- Выберите провайдера Custom service provider.
- Введите любое имя для проверки состояния устройства.
- Настройте атрибуты требуется, чтобы устройство прошло проверку состояния.
- Выберите Save.
- Чтобы протестировать, перейдите в Insight > Журналы > Журналы состояния и убедитесь, что проверка состояния поставщика услуг возвращает ожидаемые результаты.
Теперь эту проверку состояния устройства можно использовать в политика состояния устройства.
Атрибуты состояния устройства
| Селектор | Описание | Значение |
|---|---|---|
| Оценка | Оценка состояния, возвращаемая внешним API | 0 к 100 |