Services
Ресурс Services представляет собой введенную нами абстракцию, используемую для описания приложений, работающих на узлах,
а также портов, на которых они принимают соединения (в случае реализации серверной логики).
Сервисы могут быть связаны с группами безопасности и использоваться в правилах, определяющих разрешение или ограничение доступа к конкретным сетевым ресурсам.
- API
Более подробную документацию по 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 | нет | Object | null |
| services[].ports.tcp | нет | Object | null |
| services[].ports.tcp.ports | да | Array | |
| services[].ports.tcp.ports.d | да/нет | String | |
| services[].ports.tcp.ports.s | да/нет | String | |
| services[].ports.udp | нет | Object | null |
| services[].ports.udp.ports.d | да/нет | String | |
| services[].ports.udp.ports.s | да/нет | String | |
| services[].ports.icmpv4 | нет | Object | null |
| services[].ports.icmpv4.types | нет | Array | [] |
| services[].ports.icmpv6 | нет | Object | null |
| 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