POST /v2/sync
- Networks
- Hosts
- Services
- Security Groups
- Rules
Ресурс Networks представляет собой введенную нами абстракцию, которая позволяет определять группы IP-адресов или
подсетей, доступных для управления Host Based NGFW. Эти подсети затем могут быть связаны с конкретными группами
безопасности для логического разделения и использоваться в правилах для разрешения или блокирования доступа к
определенным ресурсам в вашей сети.
Более подробно по организации БД можно посмотреть здесь.
Входные параметры
networks.networks[]- Массив/Список подсетей типа IP.networks.networks[].name- название подсети.networks.networks[].network- объект содержащий CIDR подсетиnetworks.networks[].network.CIDR- Подсеть типа IP.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | значение по умолчанию |
|---|---|---|---|
| networks[] | да | Object[] | |
| networks[].name | да | String | |
| networks[].network | да | Object | |
| networks[].network.CIDR | да | String | |
| syncOp | да | Enum("Delete", "Upsert", "FullSync") |
Ограничения
networks.networks[].name:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
networks.networks[].network.CIDR:- Значение поля должно начинаться и заканчиваться символами без пробелов.
- В пределах одной Security Group и направления трафика (I/E), необходимо обеспечить, непересекаемость диапазонов адресов подсетей.
- Подсеть должна соответствовать формату записи, определенному в RFC 4632.
Пример использования
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"networks": {
"networks": [{
"name": "nw-1",
"network": {
"CIDR": "10.0.0.0/24"
}
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ресурс Groups представляет собой введенную нами абстракцию, которая позволят объединить подсети в логические группы
и применять к ним единые правила сетевого взаимодействия.
Входные параметры
groups.grous[]- Структура, содержащая описание создаваемых Security Groupgroups.groups[].defaultAction- представляет действие по умолчанию в конце цепочек для SGgroups.groups[].logs- Включить/отключить логирование.groups.groups[].name- Security Group относительно которой рассматриваются правила.groups.groups[].networks- Имена подсетейgroups.groups[].trace- Включить/отключить трассировку.sgIcmpRules.rules[]- Структура, содержащая описание создаваемых правил.sgIcmpRules.rules[].ICMP- Структура, содержащая описание создаваемых правил типа ICMP.sgIcmpRules.rules[].ICMP.IPv- Версия IP для ICMP (IPv4 или IPv6).sgIcmpRules.rules[].ICMP.Types- Список, определяющий допустимые типы ICMP запросов.sgIcmpRules.rules[].SG- Security Group относительно которой рассматриваются правила.sgIcmpRules.rules[].logs- Включить/отключить логирование.sgIcmpRules.rules[].trace- Включить/отключить трассировку.sgIcmpRules.rules[].action- Действие для пакетов в сформированных правил в цепочке.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | Значение по умолчанию | API request | |
|---|---|---|---|---|---|
| groups | sgIcmpRules | ||||
| groups.groups[] | да | Object[] | ✔ | ||
| groups.groups[].defaultAction | да | ✔ | |||
| groups.groups[].logs | нет | Boolean | false | ✔ | |
| groups.groups[].name | да | String | ✔ | ||
| groups.groups[].networks | нет | String[] | [] | ✔ | |
| groups.groups[].trace | нет | Boolean | false | ✔ | |
| sgIcmpRules.rules[] | да | Object[] | ✔ | ||
| sgIcmpRules.rules[].ICMP | да | Object | ✔ | ||
| sgIcmpRules.rules[].ICMP.IPv | да | Enum("IPv4", "IPv6") | ✔ | ||
| sgIcmpRules.rules[].ICMP.Types | нет | String[] | [] | ✔ | |
| sgIcmpRules.rules[].SG | да | String | ✔ | ||
| sgIcmpRules.rules[].logs | нет | Boolean | false | ✔ | |
| sgIcmpRules.rules[].trace | нет | Boolean | false | ✔ | |
| sgIcmpRules.rules[].action | да | ✔ | |||
| syncOp | да | ✔ | ✔ | ||
Ограничения
groups.groups[].name:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
groups.groups[].networks[]:- Значение элемента должно начинаться и заканчиваться символами без пробелов.
- Повторения значений в списке не допускаются.
- Необходимо указать минимум одно значение.
- В пределах одной Security Group и направления трафика (I/E), необходимо обеспечить, непересекаемость диапазонов адресов подсетей.
- Подсеть должна соответствовать формату записи, определенному в RFC 4632.
sgIcmpRules.rules[].SG:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
$node.rules[].type[]:- Значение должно быть числом в диапазоне от 0 до 255.
- Повторения значений в списке не допускаются.
Пример использования
- Security Groups
- ICMP
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"groups": {
"groups": [{
"defaultAction": "ACCEPT",
"logs": true,
"name": "sg-example",
"networks": ["10.0.0.0/24", "11.0.0.0/24"],
"trace": true
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"sgIcmpRules": {
"rules": [{
"ICMP": {
"IPv": "IPv4",
"Types": [0,8]
},
"SG": "sg-example",
"logs": true,
"trace": true,
"action": "DROP",
},
{
"ICMP": {
"IPv": "IPv6",
"Types": [0,8]
},
"SG": "sg-example",
"logs": true,
"trace": true,
"action": "DROP",
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Ресурс Hosts представляет собой введенную нами абстракцию, позволяющая описывать Linux-узлы, на которых работает HBF-Agent.
Эти узлы можно связывать с группами безопасности для логического разделения и использовать в правилах,
определяющих разрешение или блокировку доступа к конкретным ресурсам сети.
Входные параметры
hosts.hosts[]- Структура, содержащая список хостов.hosts.hosts[].name- Имя хоста.hosts.hosts[].uuid- uuid хоста.hosts.hosts[].sgName- Security Group, с которой устанавливаются правила взаимодействия.hosts.hosts[].ipList.IPs- список ip адресов, которыми оперирует Host.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | значение по умолчанию |
|---|---|---|---|
| hosts[] | да | Object[] | |
| hosts[].name | нет | String | |
| hosts[].uuid | да | String | |
| hosts[].sgName | нет | String | |
| hosts[].ipList | нет | Object | |
| hosts[].ipList.IPs | нет | Array | |
| syncOp | да | Enum("Delete", "Upsert", "FullSync") |
Ограничения
hosts.hosts[].name:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
hosts.hosts[].uuid:- Значение поля должно представлять собой корректный UUID в стандартной текстовой форме.
- Значение должно быть уникальным в рамках типа ресурса.
- UUID должен соответствовать формату, описанному в RFC 4122.
hosts.hosts[].sgName:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
Пример использования
curl '127.0.0.1:9006/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"hosts": {
"hosts": [{
"name": "web-04",
"uuid": "bd7f0c2e-1a0b-4ad0-9c52-1f1b3a7c2c14",
"sgName": "sg-example3",
"ipList": {
"IPs": ["10.10.1.16", "10.10.1.17"]
}
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ресурс Services представляет собой введенную нами абстракцию, используемую для описания приложений, работающих на узлах,
а также портов, на которых они принимают соединения (в случае реализации серверной логики).
Сервисы могут быть связаны с группами безопасности и использоваться в правилах, определяющих разрешение или ограничение доступа к конкретным сетевым ресурсам.
Входные параметры
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
Диаграмма последовательности
- Sgroup to Sgroup
- Sgroup to Sgroup (I/E)
- Sgroup to CIDR (I/E)
- Sgroup to FQDN (E)
Данный тип правил управляет обменом данными между различными группами безопасности. Он автоматически создает два правила на хостах: одно для исходящего трафика от инициирующей стороны и другое для входящего трафика от группы безопасности, к которой предоставлен доступ.
Входные параметры
$node.rules[]- Структура, содержащая описание создаваемых правил.$node.rules[].sgFrom- Security Group, с которой устанавливаются правила взаимодействия.$node.rules[].sgTo- Security Group, с которой устанавливаются правила взаимодействия.$node.rules[].logs- Включить/отключить логирование.$node.rules[].trace- Включить/отключить трассировку.$node.rules[].ports- Блок описывающий набор пар портов (src-dst).$node.rules[].ports[].d- Набор открытых портов получателя$node.rules[].ports[].s- Набор открытых портов отправителя.$node.rules[].transport- Протокол L3/L4 уровня модели OSI.$node.rules[].ICMP- Структура, содержащая описание создаваемых правил типа ICMP.$node.rules[].ICMP.IPv- Версия IP для ICMP (IPv4 или IPv6).$node.rules[].ICMP.Types- Список, определяющий допустимые типы ICMP запросов.$node.rules[].action- Действие для пакетов в сформированных правил в цепочке.$node.rules[].priority- Структура, содержащая описание порядка применения правил в цепочке.$node.rules[].priority.some- Поле определяющее порядок применения правил в цепочке.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | значение по умолчанию | transport* | ||
|---|---|---|---|---|---|---|
| TCP | UDP | ICMP | ||||
| $node.rules[] | да | Object[] | null | ✔ | ✔ | ✔ |
| $node.rules[].sgFrom | да | String | ✔ | ✔ | ✔ | |
| $node.rules[].sgTo | да | String | ✔ | ✔ | ✔ | |
| $node.rules[].logs | нет | Boolean | false | ✔ | ✔ | ✔ |
| $node.rules[].trace | нет | Boolean | false | ✔ | ✔ | ✔ |
| $node.rules[].ports | нет | Object[] | null | ✔ | ✔ | |
| $node.rules[].ports[].d | нет | String | null | ✔ | ✔ | |
| $node.rules[].ports[].s | нет | String | null | ✔ | ✔ | |
| $node.rules[].transport | нет | Enum("TCP", "UDP") | TCP | ✔ | ✔ | |
| $node.rules[].ICMP | да | Object | ✔ | |||
| $node.rules[].ICMP.IPv | да | Enum("IPv4", "IPv6") | ✔ | |||
| $node.rules[].ICMP.Types | нет | String[] | [] | ✔ | ||
| $node.rules[].action | да | ✔ | ✔ | ✔ | ||
| $node.rules[].priority | нет | Object | ✔ | ✔ | ✔ | |
| $node.rules[].priority.some | нет | Integer | ✔ | ✔ | ✔ | |
| syncOp | да | ✔ | ✔ | ✔ | ||
Ограничения
sgSgRules.rules[].sgFrom:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
sgSgRules.rules[].sgTo:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
sgSgRules.rules[].ports[].d:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
sgSgRules.rules[].ports[].s:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
- Не допускаются пересечения портов для ресурса.
sgSgRules.rules[].ICMP.Types[]:- Значение должно быть числом в диапазоне от 0 до 255.
- Повторения значений в списке не допускаются.
Пример использования
- TCP
- UDP
- ICMP4
- ICMP6
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"sgRules": {
"rules": [{
"sgFrom": "sg-local-example",
"sgTo": "sg-example",
"logs": true,
"trace": true,
"ports": [{
"d": "443,80",
"s": "64231"
}],
"transport": "TCP",
"action": "ACCEPT",
"priority": {
"some": -200
}
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"sgRules": {
"rules": [{
"sgFrom": "sg-local-example",
"sgTo": "sg-example",
"logs": true,
"trace": true,
"ports": [{
"d": "443,80",
"s": "64231"
}],
"transport": "UDP",
"action": "ACCEPT",
"priority": {
"some": -200
}
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"sgSgIcmpRules": {
"rules": [{
"sgFrom": "sg-local-example",
"sgTo": "sg-example",
"logs": true,
"trace": true
"ICMP": {
"IPv": "IPv4",
"Types": [0,8]
},
"action": "ACCEPT",
"priority": {
"some": -300
}
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"sgSgIcmpRules": {
"rules": [{
"sgFrom": "sg-local-example",
"sgTo": "sg-example",
"logs": true,
"trace": true
"ICMP": {
"IPv": "IPv6",
"Types": [0,8]
},
"action": "ACCEPT",
"priority": {
"some": -300
}
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ресурс Security Group to Security Group представляет собой введенную нами абстракцию, которая обеспечивает гибкое
управление и контроль сетевого трафика между разными группами безопасности, используя протоколы TCP, UDP и ICMP. Этот
ресурс позволяет точно настраивать, какой трафик может передаваться между группами, обеспечивая таким образом высокий
уровень защиты и контроля в сетевой инфраструктуре.
Входные параметры
$node.rules[]- Структура, содержащая описание создаваемых правил.$node.rules[].SG- Security Group, с которой устанавливаются правила взаимодействия.$node.rules[].sgLocal- Security Group относительно которой рассматриваются правила.$node.rules[].logs- Включить/отключить логирование.$node.rules[].trace- Включить/отключить трассировку.$node.rules[].ports- Блок описывающий набор пар портов (src-dst).$node.rules[].ports[].d- Набор открытых портов получателя$node.rules[].ports[].s- Набор открытых портов отправителя.$node.rules[].traffic- Поле описывающий направление трафика.$node.rules[].transport- Протокол L3/L4 уровня модели OSI.$node.rules[].ICMP- Структура, содержащая описание создаваемых правил типа ICMP.$node.rules[].ICMP.IPv- Версия IP для ICMP (IPv4 или IPv6).$node.rules[].ICMP.Types- Список, определяющий допустимые типы ICMP запросов.$node.rules[].action- Действие для пакетов в сформированных правил в цепочке.$node.rules[].priority- Структура, содержащая описание порядка применения правил в цепочке.$node.rules[].priority.some- Поле определяющее порядок применения правил в цепочке.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | значение по умолчанию | transport* | ||
|---|---|---|---|---|---|---|
| TCP | UDP | ICMP | ||||
| $node.rules[] | да | Object[] | null | ✔ | ✔ | ✔ |
| $node.rules[].SG | да | String | ✔ | ✔ | ✔ | |
| $node.rules[].sgLocal | да | String | ✔ | ✔ | ✔ | |
| $node.rules[].logs | нет | Boolean | false | ✔ | ✔ | ✔ |
| $node.rules[].trace | нет | Boolean | false | ✔ | ✔ | ✔ |
| $node.rules[].ports | нет | Object[] | null | ✔ | ✔ | |
| $node.rules[].ports[].d | нет | String | null | ✔ | ✔ | |
| $node.rules[].ports[].s | нет | String | null | ✔ | ✔ | |
| $node.rules[].traffic | да | Enum("Ingress", "Egress") | ✔ | ✔ | ✔ | |
| $node.rules[].transport | нет | Enum("TCP", "UDP") | TCP | ✔ | ✔ | |
| $node.rules[].ICMP | да | Object | ✔ | |||
| $node.rules[].ICMP.IPv | да | Enum("IPv4", "IPv6") | ✔ | |||
| $node.rules[].ICMP.Types | нет | String[] | [] | ✔ | ||
| $node.rules[].action | да | ✔ | ✔ | ✔ | ||
| $node.rules[].priority | нет | Object | ✔ | ✔ | ✔ | |
| $node.rules[].priority.some | нет | Integer | ✔ | ✔ | ✔ | |
| syncOp | да | ✔ | ✔ | ✔ | ||
Ограничения
sgSgRules.rules[].SG:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
sgSgRules.rules[].sgLocal:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
sgSgRules.rules[].ports[].d:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
sgSgRules.rules[].ports[].s:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
- Не допускаются пересечения портов для ресурса.
sgSgRules.rules[].ICMP.Types[]:- Значение должно быть числом в диапазоне от 0 до 255.
- Повторения значений в списке не допускаются.
Пример использования
- TCP
- UDP
- ICMP4
- ICMP6
Ingress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieSgSgRules": {
"rules": [
{
"traffic": "Ingress",
"SG": "sg-example",
"sgLocal": "sg-local-example",
"logs": true,
"trace": true,
"ports": [{
"d": "64321",
"s": "443,80"
}],
"transport": "TCP",
"action": "ACCEPT",
"priority": {
"some": 0
}
}
]
},
"syncOp": "Upsert"
}'
Egress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieSgSgRules": {
"rules": [
{
"traffic": "Egress",
"SG": "sg-example",
"sgLocal": "sg-local-example",
"logs": true,
"trace": true,
"ports": [{
"d": "64321",
"s": "443,80"
}],
"transport": "TCP",
"action": "ACCEPT",
"priority": {
"some": 0
}
}
]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ingress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieSgSgRules": {
"rules": [
{
"traffic": "Ingress",
"SG": "sg-example",
"sgLocal": "sg-local-example",
"logs": true,
"trace": true,
"ports": [{
"d": "64321",
"s": "443,80"
}],
"transport": "UDP",
"action": "ACCEPT",
"priority": {
"some": 0
}
}
]
},
"syncOp": "Upsert"
}'
Egress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieSgSgRules": {
"rules": [
{
"traffic": "Egress",
"SG": "sg-example",
"sgLocal": "sg-local-example",
"logs": true,
"trace": true,
"ports": [{
"d": "64321",
"s": "443,80"
}],
"transport": "UDP",
"action": "ACCEPT",
"priority": {
"some": 0
}
}
]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не н айден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ingress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieSgSgIcmpRules": {
"rules": [
{
"traffic": "Ingress",
"SG": "sg-example",
"sgLocal": "sg-local-example",
"logs": true,
"trace": true,
"ICMP": {
"IPv": "IPv4",
"Types": [0, 8]
},
"action": "ACCEPT",
"priority": {
"some": -100
}
}
]
},
"syncOp": "Upsert"
}'
Egress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieSgSgIcmpRules": {
"rules": [
{
"traffic": "Egress",
"SG": "sg-example",
"sgLocal": "sg-local-example",
"logs": true,
"trace": true,
"ICMP": {
"IPv": "IPv4",
"Types": [0, 8]
},
"action": "ACCEPT",
"priority": {
"some": -100
}
}
]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ingress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieSgSgIcmpRules": {
"rules": [
{
"traffic": "Ingress",
"SG": "sg-example",
"sgLocal": "sg-local-example",
"logs": true,
"trace": true,
"ICMP": {
"IPv": "IPv6",
"Types": [0, 8]
},
"action": "ACCEPT",
"priority": {
"some": -100
}
}
]
},
"syncOp": "Upsert"
}'
Egress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieSgSgIcmpRules": {
"rules": [
{
"traffic": "Egress",
"SG": "sg-example",
"sgLocal": "sg-local-example",
"logs": true,
"trace": true,
"ICMP": {
"IPv": "IPv6",
"Types": [0, 8]
},
"action": "ACCEPT",
"priority": {
"some": -100
}
}
]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ресурс Security Group to CIDR представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за
сетевым трафиком между различными группами безопасности и подсетями, используя TCP, UDP и ICMP протоколы. Этот ресурс
дает возможность детально настроить, какой трафик разре шен к передаче между группами безопасности и определенными
подсетями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
Входные параметры
$node.rules[]- Структура, содержащая описание создаваемых правил.$node.rules[].CIDR- Список, содержащий подсети типа IP.$node.rules[].SG- Security Group относительно которой рассматриваются правила.$node.rules[].logs- Включить/отключить логирование.$node.rules[].trace- Включить/отключить трассировку.$node.rules[].ports- Блок описывающий набор пар портов (src-dst).$node.rules[].ports[].d- Набор открытых портов получателя$node.rules[].ports[].s- Набор открытых портов отправителя.$node.rules[].traffic- Поле описывающий направление трафика.$node.rules[].transport- Протокол L3/L4 уровня модели OSI.$node.rules[].ICMP- Структура, содержащая описание создаваемых правил типа ICMP.$node.rules[].ICMP.IPv- Версия IP для ICMP (IPv4 или IPv6).$node.rules[].ICMP.Types- Список, определяющий допустимые типы ICMP запросов.$node.rules[].action- Действие для пакетов в сформированных правил в цепочке.$node.rules[].priority- Структура, содержащая описание порядка применения правил в цепочке.$node.rules[].priority.some- Поле определяющее порядок применения правил в цепочке.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | значение по умолчанию | transport* | ||
|---|---|---|---|---|---|---|
| TCP | UDP | ICMP | ||||
| $node.rules[] | да | Object | null | ✔ | ✔ | ✔ |
| $node.rules[].CIDR | да | String | ✔ | ✔ | ✔ | |
| $node.rules[].SG | да | String | ✔ | ✔ | ✔ | |
| $node.rules[].logs | нет | Boolean | false | ✔ | ✔ | ✔ |
| $node.rules[].trace | нет | Boolean | false | ✔ | ✔ | ✔ |
| $node.rules[].ports | нет | Object[] | null | ✔ | ✔ | |
| $node.rules[].ports[].d | нет | String | null | ✔ | ✔ | |
| $node.rules[].ports[].s | нет | String | null | ✔ | ✔ | |
| $node.rules[].traffic | да | Enum("Ingress", "Egress") | ✔ | ✔ | ✔ | |
| $node.rules[].transport | нет | Enum("TCP", "UDP") | TCP | ✔ | ✔ | |
| $node.rules[].ICMP | да | Object | ✔ | |||
| $node.rules[].ICMP.IPv | да | Enum("IPv4", "IPv6") | ✔ | |||
| $node.rules[].ICMP.Types | нет | String[] | [] | ✔ | ||
| $node.rules[].action | да | ✔ | ✔ | ✔ | ||
| $node.rules[].priority | нет | Object | ✔ | ✔ | ✔ | |
| $node.rules[].priority.some | нет | Integer | ✔ | ✔ | ✔ | |
| syncOp | да | ✔ | ✔ | ✔ | ||
Ограничения
$node.rules[].SG:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
$node.rules[].CIDR:- Значение поля должно начинаться и заканчиваться символами без пробелов.
- В пределах одной Security Group и направления трафика (I/E), необходимо обеспечить, непересекаемость диапазонов адресов подсетей.
- Подсеть должна соответствовать формату записи, определенному в RFC 4632.
$node.rules[].ports[].s:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
- Не допускаются пересечения портов для ресурса.
$node.rules[].ports[].d:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
$node.rules[].type[]:- Значение должно быть числом в диапазоне от 0 до 255.
- Повторения значений в списке не допускаются.
Пример использования
- TCP
- UDP
- ICMP4
- ICMP6
Ingress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieCidrSgRules": {
"rules": [
{
"traffic": "Ingress",
"CIDR": "10.0.0.0/8",
"SG": "sg-local-example",
"logs": true,
"trace": true,
"ports": [{
"d": "64321",
"s": "443,80"
}],
"transport": "TCP",
"action": "ACCEPT",
"priority": {
"some": 300
}
}
]
},
"syncOp": "Upsert"
}'
Egress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieCidrSgRules": {
"rules": [
{
"traffic": "Egress",
"CIDR": "10.0.0.0/8",
"SG": "sg-local-example",
"logs": true,
"trace": true,
"ports": [{
"d": "64321",
"s": "443,80"
}],
"transport": "TCP",
"action": "ACCEPT",
"priority": {
"some": 300
}
}
]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ingress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieCidrSgRules": {
"rules": [
{
"traffic": "Ingress",
"CIDR": "10.0.0.0/8",
"SG": "sg-local-example",
"logs": true,
"trace": true,
"ports": [{
"d": "64321",
"s": "443,80"
}],
"transport": "UDP",
"action": "ACCEPT",
"priority": {
"some": 300
}
}
]
},
"syncOp": "Upsert"
}'
Egress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieCidrSgRules": {
"rules": [
{
"traffic": "Egress",
"CIDR": "10.0.0.0/8",
"SG": "sg-local-example",
"logs": true,
"trace": true,
"ports": [{
"d": "64321",
"s": "443,80"
}],
"transport": "UDP",
"action": "ACCEPT",
"priority": {
"some": 300
}
}
]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ingress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieCidrSgIcmpRules": {
"rules": [
{
"traffic": "Ingress",
"CIDR": "10.0.0.0/8",
"SG": "sg-local-example",
"logs": true,
"trace": true,
"ICMP": {
"IPv": "IPv4",
"Types": [0, 8]
},
"action": "ACCEPT",
"priority": {
"some": 200
}
}
]
},
"syncOp": "Upsert"
}'
Egress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieCidrSgIcmpRules": {
"rules": [
{
"traffic": "Egress",
"CIDR": "10.0.0.0/8",
"SG": "sg-local-example",
"logs": true,
"trace": true,
"ICMP": {
"IPv": "IPv4",
"Types": [0, 8]
},
"action": "ACCEPT",
"priority": {
"some": 200
}
}
]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ingress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieCidrSgIcmpRules": {
"rules": [
{
"traffic": "Ingress",
"CIDR": "::ffff:a00:0/104",
"SG": "sg-local-example",
"logs": true,
"trace": true,
"ICMP": {
"IPv": "IPv6",
"Types": [0, 8]
},
"action": "ACCEPT",
"priority": {
"some": 200
}
}
]
},
"syncOp": "Upsert"
}'
Egress
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"ieCidrSgIcmpRules": {
"rules": [
{
"traffic": "Egress",
"CIDR": "::ffff:a00:0/104",
"SG": "sg-local-example",
"logs": true,
"trace": true,
"ICMP": {
"IPv": "IPv6",
"Types": [0, 8]
},
"action": "ACCEPT",
"priority": {
"some": 200
}
}
]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
Ресурс Security Group to FQDN представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за сетевым
трафиком между различными группами безопасности и IP адресами стоящие за FQDN записями, используя TCP, UDP протоколы. Этот ресурс дает
возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и IP адресами стоящие за определенными FQDN
записями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
Более подробно по организации БД можно посмотреть здесь.
Входные параметры
fqdnRules.rules- Структура, содержащая описание создаваемых правил.fqdnRules.rules[].FQDN- Полное доменное имя (FQDN), для которого применяется данное правило.fqdnRules.rules[].logs- Включить/отключить логирование.fqdnRules.rules[].ports- Включить/отключить трассировку.fqdnRules.rules[].ports[].d- Набор открытых портов получателяfqdnRules.rules[].ports[].s- Набор открытых портов отправителя.fqdnRules.rules[].sgFrom- Security Group относительно которой рассматриваются правила.fqdnRules.rules[].transport- Протокол L3/L4 уровня модели OSI.fqdnRules.rules[].action- Действие для пакетов в сформированных правил в цепочке.fqdnRules.rules[].priority- Структура, содержащая описание порядка применения правил в цепочке.fqdnRules.rules[].priority.some- Поле определяющее порядок применения правил в цепочке.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | значение по умолчанию | transport* | |
|---|---|---|---|---|---|
| TCP | UDP | ||||
| fqdnRules.rules | да | Object | ✔ | ✔ | |
| fqdnRules.rules[].FQDN | да | String | ✔ | ✔ | |
| fqdnRules.rules[].logs | нет | Boolean | false | ✔ | ✔ |
| fqdnRules.rules[].ports | нет | Object[] | null | ✔ | ✔ |
| fqdnRules.rules[].ports[].d | нет | String | null | ✔ | ✔ |
| fqdnRules.rules[].ports[].s | нет | String | null | ✔ | ✔ |
| fqdnRules.rules[].sgFrom | да | String | ✔ | ✔ | |
| fqdnRules.rules[].transport | да | Enum("TCP", "UDP") | ✔ | ✔ | |
| fqdnRules.rules[].action | да | Enum("UNDEF", "ACCEPT", "DROP") | ✔ | ✔ | |
| fqdnRules.rules[].priority | нет | Object | ✔ | ✔ | |
| fqdnRules.rules[].priority.some | нет | Integer | ✔ | ✔ | |
| syncOp | да | ✔ | ✔ | ||
Ограничения
fqdnRules.rules[].FQDN:fqdnRules.rules[].sgFrom:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
fqdnRules.rules[].protocols[]:- Не допускаются дубликация протоколов в списке.
- Значения должны соответствовать поддерживаемым протоколам.
fqdnRules.rules[].ports[].ports_to[]:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
- Не допускаются пересечения портов для ресурса.
fqdnRules.rules[].ports[].ports_from[]:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
Пример использования
- TCP
- UDP
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"fqdnRules": {
"rules": [{
"FQDN": "example.com",
"logs": true,
"ports": [{
"d": "443,80",
"s": "64231"
}],
"sgFrom": "sg-local-example",
"transport": "TCP",
"action": "ACCEPT",
"priority": {
"some": 100
}
}]
},
"syncOp": "Upsert"
}'
curl '127.0.0.1:9007/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"fqdnRules": {
"rules": [{
"FQDN": "example.com",
"logs": true,
"ports": [{
"d": "443,80",
"s": "64231"
}],
"sgFrom": "sg-local-example",
"transport": "UDP",
"action": "ACCEPT",
"priority": {
"some": 100
}
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5