Services
Ресурс Services представляет собой введенную нами абстракцию, используемую для описания приложений, работающих на узлах,
а также портов, на которых они принимают соединения (в случае реализации серверной логики).
Сервисы могут быть связаны с группами безопасности и использоваться в правилах, определяющих разрешение или ограничение доступа к конкретным сетевым ресурсам.
- API
Более подробную документацию по API можно посмотреть здесь.
Более подробно по организации БД можно посмотреть здесь.
Входные параметры
services.services[]- Структура, содержащая список сервисов.services.services[].name- Имя сервиса.services.services[].sgNames- Массив/Список имен Security Group(s).services.services[].protocols- Список используемых протоколов.services.services[].protocols.tcp- Структура, содержащая список портов для протокола TCP.services.services[].protocols.tcp.ports- Блок описывающий набор пар портов (source-destination).services.services[].protocols.tcp.ports[].d- Набор открытых портов получателяservices.services[].protocols.tcp.ports[].s- Набор открытых портов отправителя.services.services[].protocols.udp- Структура, содержащая список портов для протокола UDP.services.services[].protocols.udp.ports- Блок описывающий набор пар портов (source-destination).services.services[].protocols.udp.ports[].d- Набор открытых портов получателяservices.services[].protocols.udp.ports[].s- Набор открытых портов отправителя.services.services[].protocols.icmpv4- Объект, определяющий параметры настройки ICMP для сетей, использующих IPv4.services.services[].protocols.icmpv4.types- Список, определяющий допустимые типы ICMP запросов для сетей, использующих IPv4.services.services[].protocols.icmpv6- Объект, определяющий параметры настройки ICMP для сетей, использующих IPv6.services.services[].protocols.icmpv6.types- Список, определяющий допустимые типы ICMP запросов для сетей, использующих IPv6.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | значение по умолчанию |
|---|---|---|---|
| services[] | да | Object[] | |
| services[].name | да | String | |
| services[].sgNames | нет | Array | [] |
| services[].protocols | нет | Object | null |
| services[].protocols.tcp | нет | Object | null |
| services[].protocols.tcp.ports | да | Array | |
| services[].protocols.tcp.ports[].d | да/нет | String | |
| services[].protocols.tcp.ports[].s | да/нет | String | |
| services[].protocols.udp | нет | Object | null |
| services[].protocols.udp.ports | да | Object[] | |
| services[].protocols.udp.ports[].d | да/нет | String | |
| services[].protocols.udp.ports[].s | да/нет | String | |
| services[].protocols.icmpv4 | нет | Object | null |
| services[].protocols.icmpv4.types | нет | Array | [] |
| services[].protocols.icmpv6 | нет | Object | null |
| services[].protocols.icmpv6.types | нет | Array | [] |
| syncOp | да | Enum("Delete", "Upsert", "FullSync") |
Ограничения
services.services[].name:- Значение не может быть пустым.
- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
services.services[].sgNames:- Длина значения элемента не должна превышать 256 символов.
- Значение элемента должно начинаться и заканчиваться символами без пробелов.
- Повторения значений в списке не допускаются.
- В озможно привязать только к существующим Security Groups.
- Сервис не может быть связан с Security Group, если в этой SG уже подключён другой сервис и диапазоны портов пересекаются.
services.services[].protocols.tcp.ports:- Source порты не должны пересекаться в разных пачках в рамках ресурса
- Source || destination порт обязателен для заполнения
services.services[].protocols.tcp.ports[].d:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
- Интервал прописывается от меньшего к большему (9090-1010)
- Допускаются пересечения портов destination для ресурса.
services.services[].protocols.tcp[].s:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально, используя '-'.
- Не допускаются пересечения портов для ресурса.
- Интервал прописывается от меньшего к большему (99-110)
services.services[].protocols.udp[].d:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
- Интервал прописывается от меньшего к большему (9090-1010)
- Допускаются пересечения портов destination для ресурса.
services.services[].protocols.udp[].s:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально, используя '-'.
- Не допускаются пересечения портов для ресурса.
- Интервал прописывается от меньшего к большему (99-110)
services.services[].protocols.icmpv4.types[]:- Значения должны быть числами в диапазоне от 0 до 255.
- Повторения значений в списке не допускаются.
- Пустой массив разрешает все types
- Принимает значения (число) в виде string || integer
services.services[].protocols.icmpv6.types[]:- Значения должны быть числами в диапазоне от 0 до 255.
- Повторения значений в списке не допускаются.
- Пустой массив разрешает все types
- Принимает значения (число) в виде string || integer
Пример использования
curl '127.0.0.1:9006/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"services": {
"services": [
{
"name": "svc-0",
"protocols": {
"icmpv4": {
"types": [
63,
254,
3,
11,
22
]
},
"icmpv6": {
"types": [
250,
99,
9,
111,
222
]
},
"tcp": {
"ports": [
{
"d": "56000-56500, 56502",
"s": "58000-58300, 58309"
}
]
},
"udp": {
"ports": [
{
"d": "57000-57500, 57502",
"s": "59000-59300, 59309"
}
]
}
},
"sgNames": [
"sg-2",
"sg-3"
]
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | 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