Перейти к основному содержимому

Service to FQDN

Ресурс Service to FQDN представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за сетевым трафиком между различными сервисами и IP адресами стоящие за FQDN записями, используя TCP, UDP протоколы. Этот ресурс дает возможность детально настроить, какой трафик разрешен к передаче между сервисами и IP адресами стоящие за определенными FQDN записями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой

Более подробную документацию по API можно посмотреть здесь.
Более подробно по организации БД можно посмотреть здесь.

Входные параметры

  • svcFqdnRules.rules[] - Список описываемых правил.
  • svcFqdnRules.rules[].name - Имя правила.
  • svcFqdnRules.rules[].svcFrom - Имя сервиса откуда уходит трафик
  • svcFqdnRules.rules[].FQDN - Полное доменное имя (FQDN), для которого применяется данное правило.
  • svcFqdnRules.rules[].logs - Включить/отключить логирование.
  • svcFqdnRules.rules[].ports - Блок описывающий набор пар портов (source-destination).
  • svcFqdnRules.rules[].ports[].d - Набор открытых портов получателя
  • svcFqdnRules.rules[].ports[].s - Набор открытых портов отправителя.
  • svcFqdnRules.rules[].trace - Включить/отключить трассировку.
  • svcFqdnRules.rules[].transport - Протокол L3/L4 уровня модели OSI.
  • svcFqdnRules.rules[].action - Действие для пакетов в сформированных правил в цепочке.
  • svcFqdnRules.rules[].priority - Структура, содержащая описание порядка применения правил в цепочке.
  • svcFqdnRules.rules[].priority.some - Поле, определяющее порядок применения правил в цепочке.
  • syncOp - Поле определяющее действие с данными из запроса.
названиеобязательностьтип данныхзначение по умолчанию
svcFqdnRules.rules[]даObject[]
svcFqdnRules.rules[].nameдаString
serviceRules.rules[].svcFromдаString
svcFqdnRules.rules[].FQDNдаString
svcFqdnRules.rules[].portsнетObject[]
svcFqdnRules.rules[].ports[].dда/нет, если нет ports[]String
svcFqdnRules.rules[].ports[].sда/нет, если нет ports[]String
svcFqdnRules.rules[].transportдаEnum("TCP", "UDP")
svcFqdnRules.rules[].logsнетBooleanfalse
svcFqdnRules.rules[].traceнетBooleanfalse
svcFqdnRules.rules[].actionдаEnum("ACCEPT", "DROP")
svcFqdnRules.rules[].priorityнетObject-350
svcFqdnRules.rules[].priority.someнетInteger | String-350
syncOpдаEnum("Delete", "Upsert", "FullSync")

Ограничения

  • svcFqdnRules.rules[].svcFrom:

    • Длина значения не должна превышать 256 символов.
    • Значение должно начинаться и заканчиваться символами без пробелов.
    • Значение не может быть пустой строкой
    • Возможно указать только существующий Service.
  • svcFqdnRules.rules[].FQDN:

    • Длина значения поля не должна превышать 256 символов.
    • Значение поля должно начинаться и заканчиваться символами без пробелов.
    • Значение не может быть пустым
    • FQDN должен соответствовать формату записи, определенному в RFC 103410351123.
  • svcFqdnRules.rules[].ports:

    • Source порты не должны пересекаться в разных пачках в рамках ресурса
    • Source || destination порт обязателен для заполнения
  • svcFqdnRules.rules[].ports[].d:

    • Значения портов должно находиться в интервале от 1 до 65535.
    • Если значение не будет указано то будет использоваться весь диапазон портов.
    • Значения портов прописываются по одному или интервально используя '-'.
    • Интервал прописывается от меньшего к большему (9090-1010)
    • Допускаются пересечения портов destination для ресурса.
  • svcFqdnRules.rules[].ports[].s:

    • Значения портов должно находиться в интервале от 1 до 65535.
    • Если значение не будет указано то будет использоваться весь диапазон портов.
    • Значения портов прописываются по одному или интервально, используя '-'.
    • Не допускаются пересечения портов для ресурса.
    • Интервал прописывается от меньшего к большему (99-110)
  • svcFqdnRules.rules[].priority.some:

    • Значения должны находиться в интервале от -32768 до 32767
    • Принимает значения (число) в виде string || integer

Пример использования

curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"svcFqdnRules": {
"rules": [
{
"name": "svc-fqdn-0",
"FQDN": "google.com",
"action": "DROP",
"logs": true,
"ports": [
{
"d": "61234-62756, 62765",
"s": "62234-63756, 63765"
}
],
"priority": {
"some": 3232
},
"svcFrom": "add-svc-0",
"trace": true,
"transport": "TCP"
}
],
"syncOp": "Upsert"
}
}'

Выходные параметры

названиетип данныхописание
-Objectв случае успеха возвращается пустое тело

Возможные ошибки API

Пользователь указал некорректные значения агрументов
  • HTTP code: 400
  • gRPC code: INVALID_ARGUMENT
  • gRPC number: 3
Не найден метод
  • HTTP code: 404
  • gRPC code: NOT_FOUND
  • gRPC number: 5
Ошибка в указанных данных
  • HTTP code: 500
  • gRPC code: INTERNAL
  • gRPC number: 13

Диаграмма последовательности