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

Services

Ресурс Services представляет собой введенную нами абстракцию, используемую для описания приложений, работающих на узлах, а также портов, на которых они принимают соединения (в случае реализации серверной логики). Сервисы могут быть связаны с группами безопасности и использоваться в правилах, определяющих разрешение или ограничение доступа к конкретным сетевым ресурсам.

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

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

  • services.services[] - Структура, содержащая список сервисов.
  • services.services[].name - Имя сервиса.
  • services.services[].sgNames - Массив/Список имен Security Group(s).
  • services.services[].ports - Блок описывающий набор пар портов (src-dst).
  • services.services[].ports.tcp - Структура, содержащая список портов для протокола TCP.
  • services.services[].ports.tcp.ports - Блок описывающий набор пар портов (src-dst).
  • services.services[].ports.tcp.ports.d - Набор открытых портов получателя
  • services.services[].ports.tcp.ports.s - Набор открытых портов отправителя.
  • services.services[].ports.udp - Структура, содержащая список портов для протокола UDP.
  • services.services[].ports.udp.ports - Блок описывающий набор пар портов (src-dst).
  • services.services[].ports.udp.ports.d - Набор открытых портов получателя
  • services.services[].ports.udp.ports.s - Набор открытых портов отправителя.
  • services.services[].ports.icmpv4 - Объект, определяющий параметры настройки ICMP.
  • services.services[].ports.icmpv4.types - Список, определяющий допустимые типы ICMP запросов.
  • services.services[].ports.icmpv6 - Объект, определяющий параметры настройки ICMP.
  • services.services[].ports.icmpv6.types - Список, определяющий допустимые типы ICMP запросов.
  • syncOp - Поле определяющее действие с данными из запроса.
названиеобязательностьтип данныхзначение по умолчанию
services[]даObject[]
services[].nameдаString
services[].sgNamesнетArray[]
services[].portsнетObjectnull
services[].ports.tcpнетObjectnull
services[].ports.tcp.portsдаArray
services[].ports.tcp.ports.dда/нетString
services[].ports.tcp.ports.sда/нетString
services[].ports.udpнетObjectnull
services[].ports.udp.ports.dда/нетString
services[].ports.udp.ports.sда/нетString
services[].ports.icmpv4нетObjectnull
services[].ports.icmpv4.typesнетArray[]
services[].ports.icmpv6нетObjectnull
services[].ports.icmpv6.typesнетArray[]
syncOpдаEnum("Delete", "Upsert", "FullSync")

Ограничения

  • services.services[].name:

    • Длина значения поля не должна превышать 256 символов.
    • Значение поля должно начинаться и заканчиваться символами без пробелов.
  • services.services[].sgNames:

    • Длина значения элемента не должна превышать 256 символов.
    • Значение элемента должно начинаться и заканчиваться символами без пробелов.
    • Повторения значений в списке не допускаются.
    • Необходимо указать минимум одно значение.
  • services.services[].ports.tcp[].d:

    • Значения портов должно находиться в интервале от 1 до 65535.
    • Если значение не будет указано то будет использоваться весь диапазон портов.
    • Значения портов прописываются по одному или интервально используя '-'.
  • services.services[].ports.tcp[].s:

    • Значения портов должно находиться в интервале от 1 до 65535.
    • Если значение не будет указано то будет использоваться весь диапазон портов.
    • Значения портов прописываются по одному или интервально используя '-'.
    • Не допускаются пересечения портов для ресурса.
  • services.services[].ports.udp[].d:

    • Значения портов должно находиться в интервале от 1 до 65535.
    • Если значение не будет указано то будет использоваться весь диапазон портов.
    • Значения портов прописываются по одному или интервально используя '-'.
  • services.services[].ports.udp[].s:

    • Значения портов должно находиться в интервале от 1 до 65535.
    • Если значение не будет указано то будет использоваться весь диапазон портов.
    • Значения портов прописываются по одному или интервально используя '-'.
    • Не допускаются пересечения портов для ресурса.
  • services.services[].ports.icmpv4.types[]:

    • Значение должно быть числом в диапазоне от 0 до 255.
    • Повторения значений в списке не допускаются.
  • services.services[].ports.icmpv6.types[]:

    • Значение должно быть числом в диапазоне от 0 до 255.
    • Повторения значений в списке не допускаются.
  • services.services[].sgNames:

    • Сервис не может быть связан с Группой безопасности, если в этой Группе уже подключён другой сервис с пересекающимся диапазоном портов.

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

curl '127.0.0.1:9006/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"services": {
"services": [{
"name": "svc3",
"ports": {
"tcp": {
"ports": [
{
"d": "443",
"s": "80"
},
{
"d": "443",
"s": "80"
}
]
},
"icmpv4": {
"types": [
4,5,6
]
},
"icmpv6": {
"types": [
1,2
]
}
},
"sgNames": ["sg-example3"]

}]
},
"syncOp": "Upsert"
}'

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

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

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

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

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