diff --git a/documentation/docs/tech-docs/sgroups/api/v1/sync.mdx b/documentation/docs/tech-docs/sgroups/api/v1/sync.mdx
index c463ffea..21243130 100644
--- a/documentation/docs/tech-docs/sgroups/api/v1/sync.mdx
+++ b/documentation/docs/tech-docs/sgroups/api/v1/sync.mdx
@@ -4,12 +4,12 @@ id: sync
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
-import ApiNetworks from '@site/src/snippets/networks/_Api.mdx'
-import ApiSg from '@site/src/snippets/securityGroups/_Api.mdx'
-import ApiS2sie from '@site/src/snippets/s2s-ie/_Api.mdx'
-import ApiS2s from '@site/src/snippets/s2s/_Api.mdx'
-import ApiS2f from '@site/src/snippets/s2f-e/_Api.mdx'
-import ApiS2c from '@site/src/snippets/s2c-ie/_Api.mdx'
+import ApiNetworks from '../../../../snippets/networks/_Api.mdx'
+import ApiSg from '../../../../snippets/securityGroups/_Api.mdx'
+import ApiS2sie from '../../../../snippets/s2s-ie/_Api.mdx'
+import ApiS2s from '../../../../snippets/s2s/_Api.mdx'
+import ApiS2f from '../../../../snippets/s2f-e/_Api.mdx'
+import ApiS2c from '../../../../snippets/s2c-ie/_Api.mdx'
# POST /v1/sync
diff --git a/documentation/docs/tech-docs/sgroups/goose.mdx b/documentation/docs/tech-docs/sgroups/goose.mdx
index 459680cf..6b01e641 100644
--- a/documentation/docs/tech-docs/sgroups/goose.mdx
+++ b/documentation/docs/tech-docs/sgroups/goose.mdx
@@ -44,14 +44,17 @@ import TabItem from '@theme/TabItem'
#### Сборка
Перед сборкой необходимо склонировать репозиторий
- ```bash
- export VERSION=1.9.1
- git clone https://github.com/H-BF/sgroups
- cd sgroups
- git fetch --tags --all
- git checkout tags/v${VERSION}
- make .install-goose
- ```
+
После сборки, скомпилированный бинарный файл будет доступен в папке `./bin/goose` в корне репозитория (не путать с `/bin`,
diff --git a/documentation/docusaurus.config.ts b/documentation/docusaurus.config.ts
index 40f15619..c6a8f3ae 100644
--- a/documentation/docusaurus.config.ts
+++ b/documentation/docusaurus.config.ts
@@ -36,6 +36,12 @@ const config: Config = {
(process.env.DOC_INCLUDE_CURRENT_VERSION &&
process.env.DOC_INCLUDE_CURRENT_VERSION.toLowerCase() === 'true') ||
false,
+ versions: {
+ 'v1.14.0': {
+ label: 'v1.14.0',
+ path: 'v1.14.0',
+ },
+ },
},
blog: false,
pages: {
diff --git a/documentation/src/constants/dictionary.ts b/documentation/src/constants/dictionary.ts
index 049a4343..3cf4d711 100644
--- a/documentation/src/constants/dictionary.ts
+++ b/documentation/src/constants/dictionary.ts
@@ -1,194 +1,196 @@
-import { TDictionary } from '../customTypes/dictionary'
-
-export const DICTIONARY: TDictionary = {
- syncOp: {
- short: 'Поле определяющее действие с данными из запроса.',
- full: '',
- },
-
- traffic: {
- short: 'Поле описывающий направление трафика.',
- full: '',
- },
-
- transport: {
- short: 'Протокол L3/L4 уровня модели OSI.',
- full: '',
- },
-
- log: {
- short: 'Включить/отключить логирование.',
- full: '',
- },
-
- trace: {
- short: 'Включить/отключить трассировку.',
- full: '',
- },
-
- ports: {
- short: 'Блок описывающий набор пар портов (src-dst).',
- full: '',
- },
-
- srcPorts: {
- short: 'Набор открытых портов отправителя.',
- full: '',
- },
-
- dstPorts: {
- short: 'Набор открытых портов получателя',
- full: '',
- },
-
- apiIcmp: {
- short: 'Структура, содержащая описание создаваемых правил типа ICMP.',
- full: '',
- },
-
- icmpV: {
- short: 'Версия IP для ICMP (IPv4 или IPv6).',
- full: '',
- },
-
- icmpTypes: {
- short: 'Список, определяющий допустимые типы ICMP запросов.',
- full: '',
- },
-
- sgroupSet: {
- short: 'Список, содержащий названия Security Group(s).',
- full: '',
- },
-
- sg: {
- short: 'Security Group, с которой устанавливаются правила взаимодействия.',
- full: '',
- },
-
- sgLocal: {
- short: 'Security Group относительно которой рассматриваются правила.',
- full: '',
- },
-
- description: {
- short: 'Формальное текстовое описание.',
- full: '',
- },
-
- rules: {
- short: 'Структура, содержащая описание создаваемых правил.',
- full: '',
- },
-
- nftRuleType: {
- short: 'Характеристика описывающая, что принимается трафик типа ip.',
- full: '',
- },
-
- nftCounter: {
- short: 'Счетчик количества байтов и пакетов.',
- full: '',
- },
-
- nftRuleVerdict: {
- short: 'Результат применения правила, определяющий действие, которое будет применено к пакету.',
- full: '',
- },
-
- terraformModule: {
- short: '',
- full: `Terraform module представляет собой высокоуровневую абстракцию над terraform resources, которая
+import { TVersionedDictionary } from '@site/src/customTypes/dictionary'
+
+export const DICTIONARY: TVersionedDictionary = {
+ 'v1.13.0': {
+ syncOp: {
+ short: 'Поле определяющее действие с данными из запроса.',
+ full: '',
+ },
+
+ traffic: {
+ short: 'Поле описывающий направление трафика.',
+ full: '',
+ },
+
+ transport: {
+ short: 'Протокол L3/L4 уровня модели OSI.',
+ full: '',
+ },
+
+ log: {
+ short: 'Включить/отключить логирование.',
+ full: '',
+ },
+
+ trace: {
+ short: 'Включить/отключить трассировку.',
+ full: '',
+ },
+
+ ports: {
+ short: 'Блок описывающий набор пар портов (src-dst).',
+ full: '',
+ },
+
+ srcPorts: {
+ short: 'Набор открытых портов отправителя.',
+ full: '',
+ },
+
+ dstPorts: {
+ short: 'Набор открытых портов получателя',
+ full: '',
+ },
+
+ apiIcmp: {
+ short: 'Структура, содержащая описание создаваемых правил типа ICMP.',
+ full: '',
+ },
+
+ icmpV: {
+ short: 'Версия IP для ICMP (IPv4 или IPv6).',
+ full: '',
+ },
+
+ icmpTypes: {
+ short: 'Список, определяющий допустимые типы ICMP запросов.',
+ full: '',
+ },
+
+ sgroupSet: {
+ short: 'Список, содержащий названия Security Group(s).',
+ full: '',
+ },
+
+ sg: {
+ short: 'Security Group, с которой устанавливаются правила взаимодействия.',
+ full: '',
+ },
+
+ sgLocal: {
+ short: 'Security Group относительно которой рассматриваются правила.',
+ full: '',
+ },
+
+ description: {
+ short: 'Формальное текстовое описание.',
+ full: '',
+ },
+
+ rules: {
+ short: 'Структура, содержащая описание создаваемых правил.',
+ full: '',
+ },
+
+ nftRuleType: {
+ short: 'Характеристика описывающая, что принимается трафик типа ip.',
+ full: '',
+ },
+
+ nftCounter: {
+ short: 'Счетчик количества байтов и пакетов.',
+ full: '',
+ },
+
+ nftRuleVerdict: {
+ short: 'Результат применения правила, определяющий действие, которое будет применено к пакету.',
+ full: '',
+ },
+
+ terraformModule: {
+ short: '',
+ full: `Terraform module представляет собой высокоуровневую абстракцию над terraform resources, которая
упрощает работу с ресурсами Terraform, скрывая сложность их непосредственного использования. Он предлагает
простой и понятный интерфейс для взаимодействия, позволяя пользователям легко интегрироваться и управлять
компонентами инфраструктуры без необходимости глубоко погружаться в детали каждого ресурса.`,
- },
+ },
- terraformResource: {
- short: '',
- full: `Terraform resource является ключевым элементом в Terraform, предназначенным для управления различными
+ terraformResource: {
+ short: '',
+ full: `Terraform resource является ключевым элементом в Terraform, предназначенным для управления различными
аспектами инфраструктуры через код. Он позволяет задавать, настраивать и управлять инфраструктурными
компонентами без привязки к их конкретным типам, обеспечивая автоматизацию развертывания и поддержки
инфраструктуры согласно подходу Infrastructure as Code (IaC).`,
- },
-
- cidrSet: {
- short: 'Список, содержащий подсети типа IP.',
- full: '',
- },
-
- fqdnSet: {
- short: 'Список, содержащий FQDN записи.',
- full: '',
- },
-
- fqdn: {
- short: 'Полное доменное имя (FQDN), для которого применяется данное правило.',
- full: '',
- },
-
- l7ProtocolList: {
- short: 'Список протоколов L7 уровня модели OSI.',
- full: '',
- },
-
- networks: {
- short: 'Массив/Список подсетей типа IP.',
- full: '',
- },
-
- nw: {
- short: 'Имя подсети',
- full: '',
- },
-
- networkNames: {
- short: 'Массив/Список имен подсетей',
- full: '',
- },
-
- networkObject: {
- short: 'Структура, содержащая описание сети',
- full: '',
- },
-
- cidr: {
- short: 'Подсеть типа IP.',
- full: '',
- },
-
- srcDstCidr: {
- short: 'CIDR, с которой устанавливаются правила взаимодействия.',
- full: '',
- },
-
- terraformItems: {
- short: 'Список ресурсов создаваемые terraform ресурсом.',
- full: '',
- },
-
- terraformRuleName: {
- short: 'Уникальное имя создаваемого ресурса.',
- full: '',
- },
-
- defaultAction: {
- short: 'Действие по умолчанию.',
- full: '',
- },
-
- action: {
- short: 'Действие для пакетов в сформированных правил в цепочке.',
- full: '',
- },
-
- priority: {
- short: 'Поле определяющее порядок применения правил в цепочке.',
- full: '',
- },
-
- priorityst: {
- short: 'Структура, содержащая описание порядка применения правил в цепочке.',
- full: '',
+ },
+
+ cidrSet: {
+ short: 'Список, содержащий подсети типа IP.',
+ full: '',
+ },
+
+ fqdnSet: {
+ short: 'Список, содержащий FQDN записи.',
+ full: '',
+ },
+
+ fqdn: {
+ short: 'Полное доменное имя (FQDN), для которого применяется данное правило.',
+ full: '',
+ },
+
+ l7ProtocolList: {
+ short: 'Список протоколов L7 уровня модели OSI.',
+ full: '',
+ },
+
+ networks: {
+ short: 'Массив/Список подсетей типа IP.',
+ full: '',
+ },
+
+ nw: {
+ short: 'Имя подсети',
+ full: '',
+ },
+
+ networkNames: {
+ short: 'Массив/Список имен подсетей',
+ full: '',
+ },
+
+ networkObject: {
+ short: 'Структура, содержащая описание сети',
+ full: '',
+ },
+
+ cidr: {
+ short: 'Подсеть типа IP.',
+ full: '',
+ },
+
+ srcDstCidr: {
+ short: 'CIDR, с которой устанавливаются правила взаимодействия.',
+ full: '',
+ },
+
+ terraformItems: {
+ short: 'Список ресурсов создаваемые terraform ресурсом.',
+ full: '',
+ },
+
+ terraformRuleName: {
+ short: 'Уникальное имя создаваемого ресурса.',
+ full: '',
+ },
+
+ defaultAction: {
+ short: 'Действие по умолчанию.',
+ full: '',
+ },
+
+ action: {
+ short: 'Действие для пакетов в сформированных правил в цепочке.',
+ full: '',
+ },
+
+ priority: {
+ short: 'Поле определяющее порядок применения правил в цепочке.',
+ full: '',
+ },
+
+ priorityst: {
+ short: 'Структура, содержащая описание порядка применения правил в цепочке.',
+ full: '',
+ },
},
}
diff --git a/documentation/src/constants/errorCodes.tsx b/documentation/src/constants/errorCodes.tsx
index 9ed5f5d5..0e977aeb 100644
--- a/documentation/src/constants/errorCodes.tsx
+++ b/documentation/src/constants/errorCodes.tsx
@@ -1,108 +1,110 @@
-import { TRespondsCodes } from '../customTypes/errorCodes'
+import { TVersionedResponseCodes } from '@site/src/customTypes/errorCodes'
-export const RESPOND_CODES: TRespondsCodes = {
- ok: {
- grpcCode: 'OK',
- httpCode: '',
- grpcNumber: '0',
- description: 'Успешный ответ',
- },
- cancelled: {
- grpcCode: 'CANCELLED',
- httpCode: '',
- grpcNumber: '1',
- description: 'Операция была отменена',
- },
+export const RESPOND_CODES: TVersionedResponseCodes = {
+ 'v1.13.0': {
+ ok: {
+ grpcCode: 'OK',
+ httpCode: '',
+ grpcNumber: '0',
+ description: 'Успешный ответ',
+ },
+ cancelled: {
+ grpcCode: 'CANCELLED',
+ httpCode: '',
+ grpcNumber: '1',
+ description: 'Операция была отменена',
+ },
- unknown: {
- grpcCode: 'UNKNOWN',
- httpCode: '',
- grpcNumber: '2',
- description: 'Неизвественая ошибка',
- },
+ unknown: {
+ grpcCode: 'UNKNOWN',
+ httpCode: '',
+ grpcNumber: '2',
+ description: 'Неизвественая ошибка',
+ },
- invalid_argument: {
- grpcCode: 'INVALID_ARGUMENT',
- httpCode: '400',
- grpcNumber: '3',
- description: 'Пользователь указал некорректные значения агрументов',
- },
- deadline_exceeded: {
- grpcCode: 'DEADLINE_EXCEEDED',
- httpCode: '',
- grpcNumber: '4',
- description: 'Запрос не успел вовремя обработать информацию',
- },
- not_found: {
- grpcCode: 'NOT_FOUND',
- httpCode: '404',
- grpcNumber: '5',
- description: 'Не найден метод',
- },
- already_exists: {
- grpcCode: 'ALREADY_EXISTS',
- httpCode: '',
- grpcNumber: '6',
- description: 'Данный объект уже существует',
- },
- permition_denied: {
- grpcCode: 'PERMISSION_DENIED',
- httpCode: '',
- grpcNumber: '7',
- description: 'Доступ запрещен',
- },
- resource_exhausted: {
- grpcCode: 'RESOURCE_EXHAUSTED',
- httpCode: '',
- grpcNumber: '8',
- description: 'Недостаточно места для добавления информации',
- },
- failed_precondition: {
- grpcCode: 'FAILED_PRECONDITION',
- httpCode: '',
- grpcNumber: '9',
- description: 'Не выболнены усполовия предварительного запроса',
- },
- aborted: {
- grpcCode: 'ABORTED',
- httpCode: '',
- grpcNumber: '10',
- description: 'Операция была отменена',
- },
- out_of_range: {
- grpcCode: 'OUT_OF_RANGE',
- httpCode: '',
- grpcNumber: '11',
- description: 'Операция превысила допустимое значение',
- },
- unimplemented: {
- grpcCode: 'UNIMPLEMENTED',
- httpCode: '',
- grpcNumber: '12',
- description: 'Данная операциия не поддерживается или не была реализована',
- },
- internal: {
- grpcCode: 'INTERNAL',
- httpCode: '500',
- grpcNumber: '13',
- description: 'Ошибка в указанных данных',
- },
- unavailable: {
- grpcCode: 'UNAVAILABLE',
- httpCode: '',
- grpcNumber: '14',
- description: 'Сервис временно недоступен',
- },
- data_loss: {
- grpcCode: 'NOT_FDATA_LOSSOUND',
- httpCode: '',
- grpcNumber: '15',
- description: 'Данные были повреждены или утеряны',
- },
- unauthenticated: {
- grpcCode: 'UNAUTHENTICATED',
- httpCode: '',
- grpcNumber: '16',
- description: 'У пользователя недостаточно прав для использования этого метода',
+ invalid_argument: {
+ grpcCode: 'INVALID_ARGUMENT',
+ httpCode: '400',
+ grpcNumber: '3',
+ description: 'Пользователь указал некорректные значения агрументов',
+ },
+ deadline_exceeded: {
+ grpcCode: 'DEADLINE_EXCEEDED',
+ httpCode: '',
+ grpcNumber: '4',
+ description: 'Запрос не успел вовремя обработать информацию',
+ },
+ not_found: {
+ grpcCode: 'NOT_FOUND',
+ httpCode: '404',
+ grpcNumber: '5',
+ description: 'Не найден метод',
+ },
+ already_exists: {
+ grpcCode: 'ALREADY_EXISTS',
+ httpCode: '',
+ grpcNumber: '6',
+ description: 'Данный объект уже существует',
+ },
+ permition_denied: {
+ grpcCode: 'PERMISSION_DENIED',
+ httpCode: '',
+ grpcNumber: '7',
+ description: 'Доступ запрещен',
+ },
+ resource_exhausted: {
+ grpcCode: 'RESOURCE_EXHAUSTED',
+ httpCode: '',
+ grpcNumber: '8',
+ description: 'Недостаточно места для добавления информации',
+ },
+ failed_precondition: {
+ grpcCode: 'FAILED_PRECONDITION',
+ httpCode: '',
+ grpcNumber: '9',
+ description: 'Не выболнены усполовия предварительного запроса',
+ },
+ aborted: {
+ grpcCode: 'ABORTED',
+ httpCode: '',
+ grpcNumber: '10',
+ description: 'Операция была отменена',
+ },
+ out_of_range: {
+ grpcCode: 'OUT_OF_RANGE',
+ httpCode: '',
+ grpcNumber: '11',
+ description: 'Операция превысила допустимое значение',
+ },
+ unimplemented: {
+ grpcCode: 'UNIMPLEMENTED',
+ httpCode: '',
+ grpcNumber: '12',
+ description: 'Данная операциия не поддерживается или не была реализована',
+ },
+ internal: {
+ grpcCode: 'INTERNAL',
+ httpCode: '500',
+ grpcNumber: '13',
+ description: 'Ошибка в указанных данных',
+ },
+ unavailable: {
+ grpcCode: 'UNAVAILABLE',
+ httpCode: '',
+ grpcNumber: '14',
+ description: 'Сервис временно недоступен',
+ },
+ data_loss: {
+ grpcCode: 'NOT_FDATA_LOSSOUND',
+ httpCode: '',
+ grpcNumber: '15',
+ description: 'Данные были повреждены или утеряны',
+ },
+ unauthenticated: {
+ grpcCode: 'UNAUTHENTICATED',
+ httpCode: '',
+ grpcNumber: '16',
+ description: 'У пользователя недостаточно прав для использования этого метода',
+ },
},
}
diff --git a/documentation/src/constants/restrictions.tsx b/documentation/src/constants/restrictions.tsx
index 2bcabd2c..13c27e81 100644
--- a/documentation/src/constants/restrictions.tsx
+++ b/documentation/src/constants/restrictions.tsx
@@ -1,122 +1,124 @@
import React from 'react'
-import { TRestrictions } from '../customTypes/restrictions'
+import { TVersionedRestrictions } from '@site/src/customTypes/restrictions'
const templateS2s = `"$\{transport\}:sg-local($\{sg_local\})sg($\{sg\})"`
const templateS2sIe = `"$\{transport\}:sg-local($\{sg_local\})sg($\{sg\})$\{traffic\}"`
const ttemplateS2cIe = `"$\{transport\}:cidr($\{cidr\})sg($\{sg_name\})$\{traffic\}"`
const templateS2fE = `"$\{transport\}:sg($\{sg_from\})fqdn($\{fqdn\})"`
-export const RESTRICTIONS: TRestrictions = {
- name: [
- 'Длина значения поля не должна превышать 256 символов.',
- 'Значение поля должно начинаться и заканчиваться символами без пробелов.',
- 'Значение должно быть уникальным в рамках типа ресурса.',
- ],
-
- cidr: [
- 'Значение поля должно начинаться и заканчиваться символами без пробелов.',
- 'В пределах одной Security Group и направления трафика (I/E), необходимо обеспечить, непересекаемость диапазонов адресов подсетей.',
- <>
- Подсеть должна соответствовать формату записи, определенному в RFC{' '}
-
4632.
- >,
- ],
-
- fqdn: [
- 'Длина значения поля не должна превышать 256 символов.',
- 'Значение поля должно начинаться и заканчиваться символами без пробелов.',
- <>
- FQDN должен соответствовать формату записи, определенному в RFC
-
1034,
-
1035,
-
1123.
- >,
- ],
-
- sgroupSet: [
- 'Длина значения элемента не должна превышать 256 символов.',
- 'Значение элемента должно начинаться и заканчиваться символами без пробелов.',
- 'Повторения значений в списке не допускаются.',
- 'Необходимо указать минимум одно значение.',
- ],
-
- cidrSet: [
- 'Значение элемента должно начинаться и заканчиваться символами без пробелов.',
- 'Повторения значений в списке не допускаются.',
- 'Необходимо указать минимум одно значение.',
- 'В пределах одной Security Group и направления трафика (I/E), необходимо обеспечить, непересекаемость диапазонов адресов подсетей.',
- <>
- Подсеть должна соответствовать формату записи, определенному в RFC{' '}
-
4632.
- >,
- ],
-
- fqdnSet: [
- 'Длина значения элемента не должна превышать 256 символов.',
- 'Значение элемента должно начинаться и заканчиваться символами без пробелов.',
- 'Повторения значений в списке не допускаются.',
- 'Необходимо указать минимум одно значение.',
- <>
- FQDN должны соответствовать формату записи, определенному в RFC
-
1034,
-
1035,
-
1123.
- >,
- ],
-
- srcPorts: [
- 'Значения портов должно находиться в интервале от 1 до 65535.',
- 'Если значение не будет указано то будет использоваться весь диапазон портов.',
- "Значения портов прописываются по одному или интервально используя '-'.",
- 'Не допускаются пересечения портов в правилах в рамках одной пары Security Group. ',
- ],
-
- dstPorts: [
- 'Значения портов должно находиться в интервале от 1 до 65535.',
- 'Если значение не будет указано то будет использоваться весь диапазон портов.',
- "Значения портов прописываются по одному или интервально используя '-'.",
- ],
-
- icmpType: ['Значение должно быть числом в диапазоне от 0 до 255.', 'Повторения значений в списке не допускаются.'],
-
- items: ['Каждое правило должно обладать уникальным ключом для предотвращения конфликтов.'],
-
- protocols: [
- 'Не допускаются дубликация протоколов в списке.',
- 'Значения должны соответствовать поддерживаемым протоколам.',
- ],
-
- priority: ['Значения должны находиться в интервале от -32768 до 32767'],
-
- itemsRuleName_nw: ['Имя ключа должно совпадать с значением из поля name.'],
-
- itemsRuleName_sg: ['Имя ключа должно совпадать с значением из поля name.'],
-
- itemsRuleName_s2s: [
- <>
- Форма ruleName должна быть организована в соответствии с определенной последовательностью, которую нужно соблюдать{' '}
-
{templateS2s}.
- >,
- ],
-
- itemsRuleName_s2s_ie: [
- <>
- Форма ruleName должна быть организована в соответствии с определенной последовательностью, которую нужно соблюдать{' '}
-
{templateS2sIe}.
- >,
- ],
-
- itemsRuleName_s2c_ie: [
- <>
- Форма ruleName должна быть организована в соответствии с определенной последовательностью, которую нужно соблюдать{' '}
-
{ttemplateS2cIe}.
- >,
- ],
-
- itemsRuleName_s2f_e: [
- <>
- Форма ruleName должна быть организована в соответствии с определенной последовательностью, которую нужно соблюдать{' '}
-
{templateS2fE}.
- >,
- ],
+export const RESTRICTIONS: TVersionedRestrictions = {
+ 'v1.13.0': {
+ name: [
+ 'Длина значения поля не должна превышать 256 символов.',
+ 'Значение поля должно начинаться и заканчиваться символами без пробелов.',
+ 'Значение должно быть уникальным в рамках типа ресурса.',
+ ],
+
+ cidr: [
+ 'Значение поля должно начинаться и заканчиваться символами без пробелов.',
+ 'В пределах одной Security Group и направления трафика (I/E), необходимо обеспечить, непересекаемость диапазонов адресов подсетей.',
+ <>
+ Подсеть должна соответствовать формату записи, определенному в RFC{' '}
+
4632.
+ >,
+ ],
+
+ fqdn: [
+ 'Длина значения поля не должна превышать 256 символов.',
+ 'Значение поля должно начинаться и заканчиваться символами без пробелов.',
+ <>
+ FQDN должен соответствовать формату записи, определенному в RFC
+
1034,
+
1035,
+
1123.
+ >,
+ ],
+
+ sgroupSet: [
+ 'Длина значения элемента не должна превышать 256 символов.',
+ 'Значение элемента должно начинаться и заканчиваться символами без пробелов.',
+ 'Повторения значений в списке не допускаются.',
+ 'Необходимо указать минимум одно значение.',
+ ],
+
+ cidrSet: [
+ 'Значение элемента должно начинаться и заканчиваться символами без пробелов.',
+ 'Повторения значений в списке не допускаются.',
+ 'Необходимо указать минимум одно значение.',
+ 'В пределах одной Security Group и направления трафика (I/E), необходимо обеспечить, непересекаемость диапазонов адресов подсетей.',
+ <>
+ Подсеть должна соответствовать формату записи, определенному в RFC{' '}
+
4632.
+ >,
+ ],
+
+ fqdnSet: [
+ 'Длина значения элемента не должна превышать 256 символов.',
+ 'Значение элемента должно начинаться и заканчиваться символами без пробелов.',
+ 'Повторения значений в списке не допускаются.',
+ 'Необходимо указать минимум одно значение.',
+ <>
+ FQDN должны соответствовать формату записи, определенному в RFC
+
1034,
+
1035,
+
1123.
+ >,
+ ],
+
+ srcPorts: [
+ 'Значения портов должно находиться в интервале от 1 до 65535.',
+ 'Если значение не будет указано то будет использоваться весь диапазон портов.',
+ "Значения портов прописываются по одному или интервально используя '-'.",
+ 'Не допускаются пересечения портов в правилах в рамках одной пары Security Group. ',
+ ],
+
+ dstPorts: [
+ 'Значения портов должно находиться в интервале от 1 до 65535.',
+ 'Если значение не будет указано то будет использоваться весь диапазон портов.',
+ "Значения портов прописываются по одному или интервально используя '-'.",
+ ],
+
+ icmpType: ['Значение должно быть числом в диапазоне от 0 до 255.', 'Повторения значений в списке не допускаются.'],
+
+ items: ['Каждое правило должно обладать уникальным ключом для предотвращения конфликтов.'],
+
+ protocols: [
+ 'Не допускаются дубликация протоколов в списке.',
+ 'Значения должны соответствовать поддерживаемым протоколам.',
+ ],
+
+ priority: ['Значения должны находиться в интервале от -32768 до 32767'],
+
+ itemsRuleName_nw: ['Имя ключа должно совпадать с значением из поля name.'],
+
+ itemsRuleName_sg: ['Имя ключа должно совпадать с значением из поля name.'],
+
+ itemsRuleName_s2s: [
+ <>
+ Форма ruleName должна быть организована в соответствии с определенной последовательностью, которую нужно
+ соблюдать
{templateS2s}.
+ >,
+ ],
+
+ itemsRuleName_s2s_ie: [
+ <>
+ Форма ruleName должна быть организована в соответствии с определенной последовательностью, которую нужно
+ соблюдать
{templateS2sIe}.
+ >,
+ ],
+
+ itemsRuleName_s2c_ie: [
+ <>
+ Форма ruleName должна быть организована в соответствии с определенной последовательностью, которую нужно
+ соблюдать
{ttemplateS2cIe}.
+ >,
+ ],
+
+ itemsRuleName_s2f_e: [
+ <>
+ Форма ruleName должна быть организована в соответствии с определенной последовательностью, которую нужно
+ соблюдать
{templateS2fE}.
+ >,
+ ],
+ },
}
diff --git a/documentation/src/constants/terminology.tsx b/documentation/src/constants/terminology.tsx
index 568df7be..955bc31e 100644
--- a/documentation/src/constants/terminology.tsx
+++ b/documentation/src/constants/terminology.tsx
@@ -1,81 +1,83 @@
-import { TTerminology } from '../customTypes/terminology'
+import { TVersionedTerminology } from '@site/src/customTypes/terminology'
-export const TERMINOLOGY: TTerminology[] = [
- {
- name: 'Security group',
- comment: 'SG',
- definition: `это логическая группа для виртуального брандмауэра, которая включает набор инстансов или подсетей
+export const TERMINOLOGY: TVersionedTerminology = {
+ 'v1.13.0': [
+ {
+ name: 'Security group',
+ comment: 'SG',
+ definition: `это логическая группа для виртуального брандмауэра, которая включает набор инстансов или подсетей
для фильтрации ingress/Egress правилами для сетевого трафика. Security group работает на уровне инстансов,
контролируя трафик на основе правил, определенных в нем. Каждое правило содержит исходные и целевые IP-адреса/диапазоны,
протокол и порт. Если трафик соответствует любому из определенных правил, он будет разрешен или запрещен в зависимости от настроек Security group.`,
- },
- {
- name: 'FQDN',
- comment: `Fully Qualified Domain Name`,
- definition:
- 'имя домена, не имеющее неоднозначностей в определении. Включается в себя имена всех родительских доменов иерархии DNS.',
- },
- {
- name: 'ICMP',
- comment: 'Internet Control Message Protocol',
- definition: `сетевой протокол, входящий в стек протоколов TCP/IP. В основном используется для передачи данных сообщений об ошибках
+ },
+ {
+ name: 'FQDN',
+ comment: `Fully Qualified Domain Name`,
+ definition:
+ 'имя домена, не имеющее неоднозначностей в определении. Включается в себя имена всех родительских доменов иерархии DNS.',
+ },
+ {
+ name: 'ICMP',
+ comment: 'Internet Control Message Protocol',
+ definition: `сетевой протокол, входящий в стек протоколов TCP/IP. В основном используется для передачи данных сообщений об ошибках
и других исключительных ситуациях, возникших при передаче данных, например, запрашивая услуга недоступна или хост, или маршрутизатор
не отвечают. Так же на ICMP возлагают некоторые сервисные функции.`,
- },
- {
- name: 'Ingress',
- definition:
- 'трафик исходящий из инстанса в HBF правил описывающее разрешающее правило для входящего трафика инстанса.',
- },
- {
- name: 'Egress',
- definition:
- 'трафик исходящий из инстанса в HBF правил описывающее разрешающее правило для исходящего трафика инстанса.',
- },
- {
- name: 'CIDR',
- comment: 'Classless Inter-Domain Routing',
- definition: 'это подсеть которая включает в себя диапазон IP адресов.',
- },
- {
- name: 'Namespace',
- comment: 'пространство имен',
- definition: 'пространство имен.',
- },
- {
- name: 'Netspace',
- comment: 'сеть',
- definition: 'сетевое пространство имен.',
- },
- {
- name: 'Subnet',
- comment: 'подсеть',
- definition: 'часть сети с присвоенным адресом CIDR',
- },
- {
- name: 'ВМ',
- comment: 'деплоймент/compute instance',
- definition: 'виртуальная машина.',
- },
- {
- name: 'Array',
- comment: 'массив',
- definition: 'упорядоченный набор элементов, каждый из которых хранит одно значение.',
- },
- {
- name: 'Object',
- comment: 'объект',
- definition: `неупорядоченный набор пар ключ/значение. Объект начинается с открывающей фигурной скобки и заканчивается закрывающей
+ },
+ {
+ name: 'Ingress',
+ definition:
+ 'трафик исходящий из инстанса в HBF правил описывающее разрешающее правило для входящего трафика инстанса.',
+ },
+ {
+ name: 'Egress',
+ definition:
+ 'трафик исходящий из инстанса в HBF правил описывающее разрешающее правило для исходящего трафика инстанса.',
+ },
+ {
+ name: 'CIDR',
+ comment: 'Classless Inter-Domain Routing',
+ definition: 'это подсеть которая включает в себя диапазон IP адресов.',
+ },
+ {
+ name: 'Namespace',
+ comment: 'пространство имен',
+ definition: 'пространство имен.',
+ },
+ {
+ name: 'Netspace',
+ comment: 'сеть',
+ definition: 'сетевое пространство имен.',
+ },
+ {
+ name: 'Subnet',
+ comment: 'подсеть',
+ definition: 'часть сети с присвоенным адресом CIDR',
+ },
+ {
+ name: 'ВМ',
+ comment: 'деплоймент/compute instance',
+ definition: 'виртуальная машина.',
+ },
+ {
+ name: 'Array',
+ comment: 'массив',
+ definition: 'упорядоченный набор элементов, каждый из которых хранит одно значение.',
+ },
+ {
+ name: 'Object',
+ comment: 'объект',
+ definition: `неупорядоченный набор пар ключ/значение. Объект начинается с открывающей фигурной скобки и заканчивается закрывающей
фигурной скобкой. Каждое имя сопровождается двоеточием, пары ключ/значение разделяются запятой.`,
- },
- {
- name: 'Hook',
- definition: `система отслеживания соединений, NAT-движок, инфраструктура логирования и пользовательские очереди остаются без изменений.
+ },
+ {
+ name: 'Hook',
+ definition: `система отслеживания соединений, NAT-движок, инфраструктура логирования и пользовательские очереди остаются без изменений.
Новым является только фреймворк классификации пакетов.`,
- link: 'https://wiki.nftables.org/wiki-nftables/index.php/Netfilter_hooks',
- },
- {
- name: 'Resource',
- definition: 'TODO',
- },
-]
+ link: 'https://wiki.nftables.org/wiki-nftables/index.php/Netfilter_hooks',
+ },
+ {
+ name: 'Resource',
+ definition: 'TODO',
+ },
+ ],
+}
diff --git a/documentation/src/customTypes/dictionary.ts b/documentation/src/customTypes/dictionary.ts
index 0acd5b39..fa81fdb9 100644
--- a/documentation/src/customTypes/dictionary.ts
+++ b/documentation/src/customTypes/dictionary.ts
@@ -4,3 +4,5 @@ export type TDefinition = {
}
export type TDictionary = Record
+
+export type TVersionedDictionary = Record
diff --git a/documentation/src/customTypes/errorCodes.ts b/documentation/src/customTypes/errorCodes.ts
index 63aa7140..0ed980b6 100644
--- a/documentation/src/customTypes/errorCodes.ts
+++ b/documentation/src/customTypes/errorCodes.ts
@@ -1,8 +1,10 @@
-export type TRespondsCodesItems = {
+export type TResponseCodesItems = {
grpcCode: string
grpcNumber: string
httpCode: string
description: string | React.JSX.Element
}
-export type TRespondsCodes = Record
+export type TResponseCodes = Record
+
+export type TVersionedResponseCodes = Record
diff --git a/documentation/src/customTypes/restrictions.ts b/documentation/src/customTypes/restrictions.ts
index 24aa7810..0bba0df3 100644
--- a/documentation/src/customTypes/restrictions.ts
+++ b/documentation/src/customTypes/restrictions.ts
@@ -1,3 +1,5 @@
export type TRestrictionItems = (string | React.JSX.Element)[]
export type TRestrictions = Record
+
+export type TVersionedRestrictions = Record
diff --git a/documentation/src/customTypes/terminology.ts b/documentation/src/customTypes/terminology.ts
index c16c6d44..b4883e00 100644
--- a/documentation/src/customTypes/terminology.ts
+++ b/documentation/src/customTypes/terminology.ts
@@ -4,3 +4,5 @@ export type TTerminology = {
definition: string | React.JSX.Element
link?: string
}
+
+export type TVersionedTerminology = Record
diff --git a/documentation/src/utils/getVersionFromPath.ts b/documentation/src/utils/getVersionFromPath.ts
new file mode 100644
index 00000000..c4aed4c9
--- /dev/null
+++ b/documentation/src/utils/getVersionFromPath.ts
@@ -0,0 +1 @@
+export const getVersionFromPath = (): string => window.location.pathname.split('/')[2].substring(1)
diff --git a/documentation/versioned_docs/version-v1.13.0/info/introduction.mdx b/documentation/versioned_docs/version-v1.13.0/info/introduction.mdx
deleted file mode 100644
index 1511a6d7..00000000
--- a/documentation/versioned_docs/version-v1.13.0/info/introduction.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-id: introduction
----
-
-# Что такое SGroups
-
-SGroups - это Host Based NGFW с использованием технологии nftables.
-Данный продукт распространяется по лицензии MIT.
-
-Он был создан для:
-
-- упрощения процесса настройки/поддержки правил сетевого трафика;
-- увеличения надежности передаваемых данных в условиях нулевого доверия.
-
-Что делает его идеальным решением для использования в крупных корпоративных сетях, а также в малых и средних предприятиях.
-
-## Какие проблемы решает
-
-
- Проект разрабатывается с учетом потребностей крупных финансовых компаний, которые столкнулись с рядом проблем в
- области сетовой изоляции. Среди этих проблем можно выделить:
-
-
-- неоднородность конфигурации межсетевого оборудования от разных производителей;
-- сложность и высокая стоимость точечной изоляции (ip to ip, team to team);
-- отсутствие единого декларативного подхода к конфигурации сетевых правил;
-- высокая стоимость оборудования.
-
-## Преимущества
-
-
- Использование SGroups, работающего на уровне операционной системы Linux, обладает несколькими преимуществами по
- сравнению с железными брандмауэра от популярных производителей сетевого оборудования:
-
-
-
- -
-
Удобство управления.
-
- Управление и настройка SGroups осуществляется с помощью инструментов управления операционной системы, что
- обеспечивает простоту и удобство в работе, а также сокращает затраты на обслуживание. Это значительно упрощает
- задачу администрирования и управления системой.
-
-
- -
-
Низкая стоимость.
-
- SGroups предоставляет возможность использовать уже имеющееся оборудование, что позволяет снизить затраты на
- приобретение дополнительного оборудования. Это особенно полезно для небольших организаций или отделов, у которых
- ограниченный бюджет на IT-инфраструктуру.
-
-
- -
-
Гибкость.
-
- SGroups обеспечивает возможность настройки политик безопасности на уровне отдельных приложений и сервисов, что
- позволяет более гибко контролировать защиту.
-
-
- -
-
Масштабируемость.
-
- SGroups обладает возможностью легкого масштабирования на большом количестве серверов, без необходимости
- приобретения дополнительного оборудования и проведения сложной интеграции.
-
-
- -
-
Улучшенная защита.
-
- SGroups обладает высоким уровнем безопасности, так как он работает на уровне операционной системы каждого
- устройства в сети, что позволяет обеспечить защиту на более глубоком уровне.
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/info/terminology.mdx b/documentation/versioned_docs/version-v1.13.0/info/terminology.mdx
deleted file mode 100644
index 33b32c57..00000000
--- a/documentation/versioned_docs/version-v1.13.0/info/terminology.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-id: terminology
----
-
-import { Terminology } from '@site/src/components/commonBlocks/Terminology'
-import { TERMINOLOGY } from '@site/src/constants/terminology.tsx'
-
-# Терминология
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/info/toolset.mdx b/documentation/versioned_docs/version-v1.13.0/info/toolset.mdx
deleted file mode 100644
index cfa6c22d..00000000
--- a/documentation/versioned_docs/version-v1.13.0/info/toolset.mdx
+++ /dev/null
@@ -1,86 +0,0 @@
----
-id: toolset
----
-
-# Выбор инструмента
-
-
- Изначально было принято решение использовать технологию ebpf, так как она обладает рядом очевидных преимуществ по
- сравнению с nftables и iptables. Однако, учитывая тот факт, что многие крупные компании до сих пор используют
- устаревшие версии ядра Linux, которые не поддерживают ebpf, мы были вынуждены пересмотреть свое решение в пользу
- nftables (преимущества описаны ниже).
-
-
-
- Наша команда всегда учитывает потребности наших клиентов и разрабатывает архитектуру с учетом возможности
- использования SGroups на ebpf. Мы уверены, что в будущем это обеспечит наибольшую эффективность и безопасность работы
- нашей инфраструктуры для всех наших пользователей.
-
-
-## iptables
-
-
-Плюсы
-
- - Имеет длительную историю использования и широкое распространение.
- - Обладает качественной документацией и обширным набором ресурсов для обучения и отладки.
- - Представляет собой мощный инструмент для управления трафиком с обширным набором настроек и возможностей.
- - Обеспечивается хорошей поддержкой и имеет широкое сообщество пользователей.
- - Совместим с другими инструментами, такими как fail2ban, для обеспечения дополнительной защиты сервера.
-
-
-
-
-Минусы
-
- - Обладает сложным и запутанным синтаксисом, что может затруднить работу начинающих пользователей.
- - Не полностью поддерживает декларативную конфигурацию, что усложняет отслеживание и управление правилами.
- - Некоторые функции, такие как обработка фрагментированных пакетов, могут работать медленнее, чем в nftables и ebpf.
- - Имеет ограниченную гибкость по сравнению с более современными решениями, такими как nftables и ebpf.
-
-
-
-## ebpf
-
-
-Плюсы
-
-- Высокая производительность и гибкость достигаются за счет использования JIT-компиляции и возможности динамической загрузки и отключения программ. Это особенно важно в условиях высокой нагрузки и сложной сетевой инфраструктуры.
-- Более широкий набор инструментов для анализа сетевых пакетов и принятия решений на основе различных метрик позволяет эффективно контролировать сетевой трафик.
-- Универсальность ebpf позволяет использовать эту технологию не только для задач брандмауэра, но и для мониторинга и анализа сетевого трафика.
-
-
-
-
-Минусы
-
- - Ограничения в возможностях: ebpf не поддерживает некоторые функции, которые могут быть полезны в качестве брандмауэра, например, отслеживание состояния соединения.
- - Сложность настройки: использование ebpf требует определенного уровня знаний, что может сделать его настройку и использование более сложным для неопытных пользователей. Учитывайте это при выборе инструмента для обеспечения безопасности вашей сетевой инфраструктуры.
-
-
-
-## nftables
-
-
-Плюсы
-
- - Имеет простой и понятный синтаксис, что упрощает конфигурирование и отладку правил.
- - Обеспечивает полностью декларативный подход к конфигурации брандмауэра.
- - Обрабатывает фрагменты пакетов быстрее, чем iptables.
- - Поддерживает широкий спектр функций, включая отложенное применение правил и автоматическое управление временными правилами.
- - Позволяет динамически обновлять правила без перезагрузки или перекомпиляции ядра, что особенно важно в случаях, когда необходимо быстро изменить конфигурацию брандмауэра в реальном времени.
- - Обладает возможностью группировки правил для более эффективного управления правилами, связанными с различными группами пакетов.
- - Обладает поддержкой более сложных типов матчей, которые могут использоваться для определения конкретных условий, таких как наличие определенных флагов TCP или значений IP-адресов.
- - Поддерживает нативный синтаксис для работы с IP-адресами и другими типами данных, что упрощает конфигурацию брандмауэра.
- - Позволяет отслеживать состояние соединений, что позволяет создавать более сложные правила, основанные на состоянии соединения.
-
-
-
-
-Минусы
-
- - Относительно новый инструмент, поэтому у него меньше сообщество пользователей и ресурсов для обучения и отладки, чем у iptables.
- - Некоторые функции, такие как поддержка определенных модулей ядра, могут быть ограничены.
- - Не все возможности, доступные в iptables, могут быть доступны в nftables.
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/components.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/components.mdx
deleted file mode 100644
index d53e8bcf..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/components.mdx
+++ /dev/null
@@ -1,71 +0,0 @@
----
-id: components
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-
-#
-
-
-
-
-```mermaid
-flowchart LR
- client([Клиент])
- agent[Агент]
- api[API]
- db[(База данных)]
- nl[netlink]
- nf[netfilter]
-
- subgraph Узел
- nl<-->|socket|agent
- nl-->|socket|nf
- end
-
- subgraph Сервер
- api-->|sql|db
- end
-
- agent<-->|gRPC|api
- client-->|https, gRPC|api
-```
-
-
-
-
-## Сервер
-
-Сервером является приложение состоящие из API-сервиса и базы данных.
-
-
- API: данный сервис разработан на языке программирования Go и предоставляет реализацию подходов GRPC и REST API
- с использованием protobuf схем. Он реализует интерфейс взаимодействия 'агентов' с данными, хранящимися в базе данных.
-
-
-
- База данных: В качестве базы данных выступает PostgreSQL. Используется для хранения матрицы сетевого
- взаимодействия.
-
-
-## Узел
-
-
- Агент: программное обеспечение осуществляющее конфигурацию netfilter'а в соответствии с правилами, указанные в
- API. Взаимодействие агента с API происходит через протокол gRPC, а получение конфигурации осуществляется посредством
- push/pull-запросов.
-
-
-
- netlink: механизм, который позволяет различным компонентам операционной системы обмениваться информацией. Это
- как система передачи сообщений между разными частями операционной системы Linux, чтобы они могли работать вместе.
-
-
-
- netfilter: часть ядра Linux, которая отвечает за фильтрацию и манипуляцию сетевым трафиком в операционной
- системе.
-
-
-## Клиент
-
-Клиент - это инструмент, который использует для взаимодействия интерфейсы API.
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/networks.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/networks.mdx
deleted file mode 100644
index e03e3dd8..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/networks.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-id: networks
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-import TerraforModule from '@site/src/snippets/networks/_TerraformModule.mdx'
-import TerraforResource from '@site/src/snippets/networks/_TerraformResource.mdx'
-import Api from '@site/src/snippets/networks/_Api.mdx'
-import Nftables from '@site/src/snippets/networks/_Nftables.mdx'
-
-# Networks
-
-
- Ресурс `Networks` представляет собой введенную нами абстракцию, которая позволяет определять группы IP-адресов или
- подсетей, доступных для управления Host Based NGFW. Эти подсети затем могут быть связаны с конкретными группами
- безопасности для логического разделения и использоваться в правилах для разрешения или блокирования доступа к
- определенным ресурсам в вашей сети.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Более подробную документацию по API можно посмотреть [здесь](../sgroups/api/v1/sync.mdx).
- Более подробно по организации БД можно посмотреть [здесь](../sgroups/database.mdx#tbl_network).
-
-
-
-
-
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2c-ie.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2c-ie.mdx
deleted file mode 100644
index 3df4828d..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2c-ie.mdx
+++ /dev/null
@@ -1,54 +0,0 @@
----
-id: s2c-ie
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-import TerraforModule from '@site/src/snippets/s2c-ie/_TerraformModule.mdx'
-import TerraformResource from '@site/src/snippets/s2c-ie/_TerraformResource.mdx'
-import Nftables from '@site/src/snippets/s2c-ie/_Nftables.mdx'
-import Api from '@site/src/snippets/s2c-ie/_Api.mdx'
-
-# Sgroup to CIDR (Ingress/Egress)
-
-
- Ресурс `Security Group to CIDR` представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за
- сетевым трафиком между различными группами безопасности и подсетями, используя TCP, UDP и ICMP протоколы. Этот ресурс
- дает возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и определенными
- подсетями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Более подробную документацию по API можно посмотреть [здесь](../sgroups/api/v1/sync.mdx).
- Более подробно по организации БД можно посмотреть [здесь](../sgroups/database.mdx#tbl_cidr_sg_rule) и [здесь](../sgroups/database.mdx#tbl_cidr_sg_icmp_rule).
-
-
- Далее везде в документе подразумевается что все места, содержащие переменную `$node`, могут принять одно из двух значений: `cidrSgRules` `cidrSgIcmpRules`.
-
-
-
-
-
-
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2f-e.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2f-e.mdx
deleted file mode 100644
index 4c425325..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2f-e.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-id: s2f-e
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-import TerraforModule from '@site/src/snippets/s2f-e/_TerraformModule.mdx'
-import TerraformResource from '@site/src/snippets/s2f-e/_TerraformResource.mdx'
-import Nftables from '@site/src/snippets/s2f-e/_Nftables.mdx'
-import Api from '@site/src/snippets/s2f-e/_Api.mdx'
-
-# Sgroup to FQDN (Egress)
-
-
- Ресурс `Security Group to FQDN` представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за сетевым
- трафиком между различными группами безопасности и FQDN записями, используя TCP, UDP протоколы. Этот ресурс дает
- возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и определенными FQDN
- записями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Более подробную документацию по API можно посмотреть [здесь](../sgroups/api/v1/sync.mdx).
- Более подробно по организации БД можно посмотреть [здесь](../sgroups/database.mdx#tbl_fqdn_rule).
-
-
-
-
-
-
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2s-ie.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2s-ie.mdx
deleted file mode 100644
index 79c90e5d..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2s-ie.mdx
+++ /dev/null
@@ -1,54 +0,0 @@
----
-id: s2s-ie
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-import TerraforModule from '@site/src/snippets/s2s-ie/_TerraformModule.mdx'
-import TerraformResource from '@site/src/snippets/s2s-ie/_TerraformResource.mdx'
-import Nftables from '@site/src/snippets/s2s-ie/_Nftables.mdx'
-import Api from '@site/src/snippets/s2s-ie/_Api.mdx'
-
-# Sgroup to Sgroup (Ingress/Egress)
-
-
- Ресурс `Security Group to Security Group` представляет собой введенную нами абстракцию, которая обеспечивает гибкое
- управление и контроль сетевого трафика между разными группами безопасности, используя протоколы TCP, UDP и ICMP. Этот
- ресурс позволяет точно настраивать, какой трафик может передаваться между группами, обеспечивая таким образом высокий
- уровень защиты и контроля в сетевой инфраструктуре.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Более подробную документацию по API можно посмотреть [здесь](../sgroups/api/v1/sync.mdx).
- Более подробно по организации БД можно посмотреть [здесь](../sgroups/database.mdx#tbl_ie_sg_sg_rule) и [здесь](../sgroups/database.mdx#tbl_ie_sg_sg_icmp_rule).
-
-
- Далее везде в документе подразумевается что все места, содержащие переменную `$node`, могут принять одно из двух
- значений: `sgSgRules`, `ieSgSgIcmpRules`.
-
-
-
-
-
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2s.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2s.mdx
deleted file mode 100644
index b715e25e..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/s2s.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-id: s2s
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-import TerraforModule from '@site/src/snippets/s2s/_TerraformModule.mdx'
-import TerraformResource from '@site/src/snippets/s2s/_TerraformResource.mdx'
-import Nftables from '@site/src/snippets/s2s/_Nftables.mdx'
-import Api from '@site/src/snippets/s2s/_Api.mdx'
-
-# Sgroup to Sgroup
-
-
- Данный тип правил управляет обменом данными между различными группами безопасности. Он автоматически создает два
- правила на хостах: одно для исходящего трафика от инициирующей стороны и другое для входящего трафика от группы
- безопасности, к которой предоставлен доступ.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Более подробную документацию по API можно посмотреть [здесь](../sgroups/api/v1/sync.mdx).
- Более подробно по организации БД можно посмотреть [здесь](../sgroups/database.mdx#tbl_sg_rule) и [здесь](../sgroups/database.mdx#tbl_sg_sg_icmp_rule) .
-
-
- Далее везде в документе подразумевается что все места, содержащие переменную `$node`, могут принять одно из двух значений: `sgRules`, `sgSgIcmpRules`.
-
-
-
-
-
-
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/security-groups.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/security-groups.mdx
deleted file mode 100644
index 3bd399d6..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/rule-configuration/security-groups.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-id: security-groups
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-import Api from '@site/src/snippets/securityGroups/_Api.mdx'
-import Nftables from '@site/src/snippets/securityGroups/_Nftables.mdx'
-import TerraforModule from '@site/src/snippets/securityGroups/_TerraformModule.mdx'
-import TerraformResource from '@site/src/snippets/securityGroups/_TerraformResource.mdx'
-
-# Security Groups
-
-
- Ресурс `Groups` представляет собой введенную нами абстракцию, которая позволят объединить подсети в логические группы
- и применять к ним единые правила сетевого взаимодействия.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Более подробную документацию по API можно посмотреть [здесь](../sgroups/api/v1/sync.mdx).
- Более подробно по организации БД можно посмотреть [здесь](../sgroups/database.mdx#tbl_sg) и [здесь](../sgroups/database.mdx#tbl_sg_icmp_rule).
-
-
- Приведеные ранее примеры создания Security Group c правилами по умолчанию для ICMP с использованием Terraform Module и
- Terraform Resource преобразуются в два API запроса.
-
-
-
-
-
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/address-sg.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/address-sg.mdx
deleted file mode 100644
index 2600b6aa..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/address-sg.mdx
+++ /dev/null
@@ -1,143 +0,0 @@
----
-id: address-sg
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# GET /v1/\{address\}/sg
-
-Этот метод отображает Security Group по IP или CIDR входящей в нее подсети.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_network) и
- [здесь](../../database.mdx#tbl_sg).
-
-
-#### Входные параметры
-
-
- -
- `{address}` - {DICTIONARY.cidr.short}
-
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | \{address\} |
- да |
- String |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/10.150.0.224/sg' \
---header 'Content-Type: application/json'
-```
-
-Выходные параметры
-
-
- - `$node.name` - {DICTIONARY.sg.short}
- - `$node.logs` - {DICTIONARY.log.short}
- - `$node.trace` - {DICTIONARY.trace.short}
- - `$node.networks` - {DICTIONARY.networkNames.short}
- - `$node.defaultAction` - {DICTIONARY.defaultAction.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.name |
- String |
-
-
- | $node.logs |
- Boolean |
-
-
- | $node.trace |
- Boolean |
-
-
- | $node.networks |
- Object[] |
-
-
- | $node.defaultAction |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "name": "network-example",
- "logs": "false",
- "name": "false",
- "network": ["network-example"],
- "defaultAction": "DROP"
-}
-```
-
-Возможные ошибки API
-
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить SG по IP или CIDR
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Возникла ошибка при некорректном вводе IP или CIDR
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ с SG по указаному IP или CIDR соответствующий запросу
-server-->>user: Список доступных сетей связанных с SG соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/cidr-sg-icmp-rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/cidr-sg-icmp-rules.mdx
deleted file mode 100644
index 2609bc8b..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/cidr-sg-icmp-rules.mdx
+++ /dev/null
@@ -1,181 +0,0 @@
----
-id: cidr-sg-icmp-rules
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
-
-# POST /v1/cidr-sg-icmp/rules
-
-
- Этот метод отображает список Security Group to CIDR правил, в соответствии с указанным списком Security Groups.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_cidr_sg_icmp_rule).
-
-
-#### Входные параметры
-
-
- - `sg[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | sg[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Ограничения
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/cidr-sg-icmp/rules' \
---header 'Content-Type: application/json' \
---data '{
- "sg": ["sg-example"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.rules[]` - {DICTIONARY.rules.short}
- - `$node.rules[].CIDR` - {DICTIONARY.cidr.short}
- - `$node.rules[].SG` - {DICTIONARY.sg.short}
- - `$node.rules[].logs` - {DICTIONARY.log.short}
- - `$node.rules[].trace` - {DICTIONARY.trace.short}
- - `$node.rules[].ICMP` - {DICTIONARY.apiIcmp.short}
- - `$node.rules[].ICMP.IPv` - {DICTIONARY.icmpV.short}
- - `$node.rules[].ICMP.Types[]` - {DICTIONARY.icmpTypes.short}
- - `$node.rules[].traffic` - {DICTIONARY.traffic.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.rules[] |
- Object[] |
-
-
- | $node.rules[].CIDR |
- String |
-
-
- | $node.rules[].sg |
- String |
-
-
- | $node.rules[].logs |
- Boolean |
-
-
- | $node.rules[].ICMP |
- Object |
-
-
- | $node.rules[].ICMP.IPv |
- String |
-
-
- | $node.rules[].ICMP.Types[] |
- Object[] |
-
-
- | $node.rules[].trace |
- Boolean |
-
-
- | $node.rules[].traffic |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "rules": [{
- "CIDR": "10.0.0.0/24",
- "sg": "sg-example",
- "logs": "true",
- "ICMP": {
- "IPv": "IPv4",
- "Types": [0, 8]
- },
- "trace": "true",
- "traffic": "ingress",
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список CIDR-SG-ICMP правил для входящего и исходящего траффика
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Указано некорректное значение существующего параметра
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком CIDR-SG-ICMP правил соответствующий запросу
-server-->>user: Список CIDR-SG-ICMP правил соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/cidr-sg-rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/cidr-sg-rules.mdx
deleted file mode 100644
index ff0d930b..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/cidr-sg-rules.mdx
+++ /dev/null
@@ -1,187 +0,0 @@
----
-id: cidr-sg-rules
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
-
-# POST /v1/cidr-sg/rules
-
-
- Этот метод отображает список Security Group to CIDR правил, в соответствии с указанным списком Security Groups.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_cidr_sg_rule).
-
-
-#### Входные параметры
-
-
- - `sg[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | sg[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Ограничения
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/cidr-sg/rules' \
---header 'Content-Type: application/json' \
---data '{
- "sg": ["sg-example"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.rules[]` - {DICTIONARY.rules.short}
- - `$node.rules[].CIDR` - {DICTIONARY.cidr.short}
- - `$node.rules[].SG` - {DICTIONARY.sg.short}
- - `$node.rules[].logs` - {DICTIONARY.log.short}
- - `$node.rules[].trace` - {DICTIONARY.trace.short}
- - `$node.rules[].ports` - {DICTIONARY.ports.short}
- - `$node.rules[].ports[].d` - {DICTIONARY.dstPorts.short}
- - `$node.rules[].ports[].s` - {DICTIONARY.srcPorts.short}
- - `$node.rules[].transport` - {DICTIONARY.transport.short}
- - `$node.rules[].traffic` - {DICTIONARY.traffic.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.rules[] |
- Object[] |
-
-
- | $node.rules[].CIDR |
- String |
-
-
- | $node.rules[].sg |
- String |
-
-
- | $node.rules[].logs |
- Boolean |
-
-
- | $node.rules[].ports |
- Object[] |
-
-
- | $node.rules[].ports[].d |
- String |
-
-
- | $node.rules[].ports[].s |
- String |
-
-
- | $node.rules[].trace |
- Boolean |
-
-
- | $node.rules[].traffic |
- String |
-
-
- | $node.rules[].transport |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "rules": [{
- "CIDR": "10.0.0.0/24",
- "sg": "sg-example",
- "logs": "true",
- "ports": [{
- "d": "7800",
- "s": ""
- }],
- "trace": "true",
- "traffic": "ingress",
- "transport": "TCP",
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список CIDR-SG правил для входящего и исходящего траффика
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Указано некорректное значение существующего параметра
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком CIDR-SG правил соответствующий запросу
-server-->>user: Список CIDR-SG правил соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/fqdn-rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/fqdn-rules.mdx
deleted file mode 100644
index f028e40e..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/fqdn-rules.mdx
+++ /dev/null
@@ -1,182 +0,0 @@
----
-id: fqdn-rules
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
-
-# POST /v1/fqdn/rules
-
-
- Этот метод отображает список Security Group to FQDN правил, в соответствии с указанным списком Security Groups.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_fqdn_rule).
-
-
-#### Входные параметры
-
-
- - `sgFrom[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | sgFrom[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Ограничения
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/fqdn/rules' \
---header 'Content-Type: application/json' \
---data '{
- "sgFrom": ["sg-example"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.rules[]` - {DICTIONARY.rules.short}
- - `$node.rules[].FQDN` - {DICTIONARY.fqdn.short}
- - `$node.rules[].sgFrom` - {DICTIONARY.sg.short}
- - `$node.rules[].logs` - {DICTIONARY.log.short}
- - `$node.rules[].ports` - {DICTIONARY.ports.short}
- - `$node.rules[].ports[].d` - {DICTIONARY.dstPorts.short}
- - `$node.rules[].ports[].s` - {DICTIONARY.srcPorts.short}
- - `$node.rules[].transport` - {DICTIONARY.transport.short}
- - `$node.rules[].protocols` - {DICTIONARY.l7ProtocolList.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.rules[] |
- Object[] |
-
-
- | $node.rules[].FQDN |
- String |
-
-
- | $node.rules[].sgFrom |
- String |
-
-
- | $node.rules[].logs |
- Boolean |
-
-
- | $node.rules[].ports |
- Object[] |
-
-
- | $node.rules[].ports[].d |
- String |
-
-
- | $node.rules[].ports[].s |
- String |
-
-
- | $node.rules[].protocols |
- Object[] |
-
-
- | $node.rules[].transport |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "rules": [{
- "FQDN": "example.com",
- "sgFrom": "sg-example",
- "logs": "true",
- "ports": [{
- "d": "7800",
- "s": ""
- }],
- "protocols": ["ssh"],
- "transport": "TCP",
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить FQDN правил
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Указано некорректное значение существующего параметра
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком FQDN правил соответствующий запросу
-server-->>user: Список FQDN правил соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/ie-sg-sg-icmp-rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/ie-sg-sg-icmp-rules.mdx
deleted file mode 100644
index 41394a2b..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/ie-sg-sg-icmp-rules.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-id: ie-sg-sg-icmp-rules
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# POST /v1/ie-sg-sg-icmp/rules
-
-
- Этот метод отображает список Security Group to Security Group правил, в соответствии с указанным списком Security
- Groups и типом траффика.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_ie_sg_sg_icmp_rule).
-
-
-#### Входные параметры
-
-
- - `Sg[]` - {DICTIONARY.sgroupSet.short}
- - `SgLocal[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | Sg[] |
- да |
- Object[] |
- |
-
-
- | SgLocal[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/ie-sg-sg-icmp/rules' \
---header 'Content-Type: application/json' \
---data '{
- "Sg": ["sg-example"],
- "SgLocal": ["sg-example-2"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.rules[]` - {DICTIONARY.rules.short}
- - `$node.rules[].Sg` - {DICTIONARY.sg.short}
- - `$node.rules[].SgLocal` - {DICTIONARY.sg.short}
- - `$node.rules[].logs` - {DICTIONARY.log.short}
- - `$node.rules[].trace` - {DICTIONARY.trace.short}
- - `$node.rules[].ICMP` - {DICTIONARY.apiIcmp.short}
- - `$node.rules[].ICMP.IPv` - {DICTIONARY.icmpV.short}
- - `$node.rules[].ICMP.Types[]` - {DICTIONARY.icmpTypes.short}
- - `$node.rules[].traffic` - {DICTIONARY.traffic.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.rules[] |
- Object[] |
-
-
- | $node.rules[].Sg |
- String |
-
-
- | $node.rules[].SgLocal |
- String |
-
-
- | $node.rules[].logs |
- Boolean |
-
-
- | $node.rules[].trace |
- Boolean |
-
-
- | $node.rules[].ICMP |
- Object |
-
-
- | $node.rules[].ICMP.IPv |
- String |
-
-
- | $node.rules[].ICMP.Types[] |
- Object[] |
-
-
- | $node.rules[].traffic |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "rules": [{
- "Sg": "sg-example",
- "SgLocal": "sg-example-2",
- "logs": "true",
- "trace": "true",
- "traffic": "ingress",
- "ICMP": {
- "IPv": "IPv4",
- "Types": [0, 8]
- },
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список IE-SG-SG:ICMP правил для входящего и исходящего траффика
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt sg и/или sg_local были указаны некорректно
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком IE-SG-SG:ICMP правил входящего и исходящего траффика соответствующий запросу
-server-->>user: Список IE-SG-SG:ICMP правил входящего и исходящего траффика соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/ie-sg-sg-rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/ie-sg-sg-rules.mdx
deleted file mode 100644
index 2bdeb1d0..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/ie-sg-sg-rules.mdx
+++ /dev/null
@@ -1,185 +0,0 @@
----
-id: ie-sg-sg-rules
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# POST /v1/ie-sg-sg/rules
-
-
- Этот метод отображает список Security Group to Security Group правил, в соответствии с указанным списком Security
- Groups и типом траффика.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_ie_sg_sg_rule).
-
-
-#### Входные параметры
-
-
- - `Sg[]` - {DICTIONARY.sgroupSet.short}
- - `SgLocal[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | Sg[] |
- да |
- Object[] |
- |
-
-
- | SgLocal[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/ie-sg-sg/rules' \
---header 'Content-Type: application/json' \
---data '{
- "Sg": ["sg-example"],
- "SgLocal": ["sg-example-2"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.rules[]` - {DICTIONARY.rules.short}
- - `$node.rules[].Sg` - {DICTIONARY.sg.short}
- - `$node.rules[].SgLocal` - {DICTIONARY.sg.short}
- - `$node.rules[].logs` - {DICTIONARY.log.short}
- - `$node.rules[].trace` - {DICTIONARY.trace.short}
- - `$node.rules[].ports` - {DICTIONARY.ports.short}
- - `$node.rules[].ports[].d` - {DICTIONARY.dstPorts.short}
- - `$node.rules[].ports[].s` - {DICTIONARY.srcPorts.short}
- - `$node.rules[].traffic` - {DICTIONARY.traffic.short}
- - `$node.rules[].transport` - {DICTIONARY.transport.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.rules[] |
- Object[] |
-
-
- | $node.rules[].Sg |
- String |
-
-
- | $node.rules[].SgLocal |
- String |
-
-
- | $node.rules[].logs |
- Boolean |
-
-
- | $node.rules[].trace |
- Boolean |
-
-
- | $node.rules[].ports |
- Object[] |
-
-
- | $node.rules[].ports[].s |
- String |
-
-
- | $node.rules[].ports[].d |
- String[] |
-
-
- | $node.rules[].traffic |
- String |
-
-
- | $node.rules[].transport |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "rules": [{
- "Sg": "sg-example",
- "SgLocal": "sg-example-2",
- "logs": "true",
- "trace": "true",
- "ports": [{
- "d": "7800",
- "s": "4446"
- }],
- "traffic": "ingress",
- "transport": "TCP",
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список IE-SG-SG правил для входящего и исходящего траффика
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Sg и/или SgLocal были указаны некорректно
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком IE-SG-SG правил входящего и исходящего траффика соответствующий запросу
-server-->>user: Список IE-SG-SG правил входящего и исходящего траффика соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/networks.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/networks.mdx
deleted file mode 100644
index fdb0135a..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/networks.mdx
+++ /dev/null
@@ -1,141 +0,0 @@
----
-id: networks
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# POST /v1/list/networks
-
-
- Этот метод отображает список подсетей (networks) и их IP, в соответствии с указанным списком имен подсетей (networks).
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_network).
-
-
-#### Входные параметры
-
-
- - `neteworkNames[]` - {DICTIONARY.networkNames.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | neteworkNames[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/list/networks' \
---header 'Content-Type: application/json' \
---data '{
- "neteworkNames": ["network-example"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.networks[]` - {DICTIONARY.rules.short}
- - `$node.networks[].name` - {DICTIONARY.nw.short}
- - `$node.networks[].network` - {DICTIONARY.networkObject.short}
- - `$node.networks[].network.CIDR` - {DICTIONARY.networks.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.networks[] |
- Object[] |
-
-
- | $node.networks[].name |
- String |
-
-
- | $node.networks[].network |
- Object |
-
-
- | $node.networks[].network.CIDR |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "networks": [{
- "network": "network-example",
- "ICMP": {
- "CIDR": "10.150.0.220/32"
- },
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список доступных сетей
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Указано некорректное значение существующего параметра
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком доступных сетей соответствующий запросу
-server-->>user: Список доступных сетей соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/rules.mdx
deleted file mode 100644
index d03ac5de..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/rules.mdx
+++ /dev/null
@@ -1,174 +0,0 @@
----
-id: rules
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# POST /v1/rules
-
-
- Этот метод отображает список Security Group to Security Group правил, в соответствии с указанным списком Security
- Groups.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_sg_rule).
-
-
-#### Входные параметры
-
-
- - `sgFrom[]` - {DICTIONARY.sgroupSet.short}
- - `sgTo[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | sgFrom[] |
- да |
- Object[] |
- |
-
-
- | sgTo[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/rules' \
---header 'Content-Type: application/json' \
---data '{
- "sgFrom": ["sg-example"],
- "sgTo": ["sg-example-2"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.rules[]` - {DICTIONARY.rules.short}
- - `$node.rules[].sgFrom` - {DICTIONARY.sg.short}
- - `$node.rules[].sgTo` - {DICTIONARY.sg.short}
- - `$node.rules[].logs` - {DICTIONARY.log.short}
- - `$node.rules[].ports` - {DICTIONARY.ports.short}
- - `$node.rules[].ports[].d` - {DICTIONARY.dstPorts.short}
- - `$node.rules[].ports[].s` - {DICTIONARY.srcPorts.short}
- - `$node.rules[].transport` - {DICTIONARY.transport.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.rules[] |
- Object[] |
-
-
- | $node.rules[].sgFrom |
- String |
-
-
- | $node.rules[].sgTo |
- String |
-
-
- | $node.rules[].logs |
- Boolean |
-
-
- | $node.rules[].ports |
- Object[] |
-
-
- | $node.rules[].ports.d |
- String |
-
-
- | $node.rules[].ports.s |
- String |
-
-
- | $node.rules[].transport |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "rules": [{
- "sgFrom": "sg-example",
- "sgTo": "sg-example-2",
- "logs": "true",
- "transport": "TCP",
- "ports": [{
- "d": "5000",
- "s": ""
- }],
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список правил SG ограниченных по условиям from>to
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Указано некорректное значение существующего параметра
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком правил SG ограниченных по условиям from>to соответствующий запросу
-server-->>user: Список правил SG ограниченных по условиям from>to соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/security-groups.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/security-groups.mdx
deleted file mode 100644
index 562d9741..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/security-groups.mdx
+++ /dev/null
@@ -1,153 +0,0 @@
----
-id: security-groups
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# POST /v1/list/security-groups
-
-
- Этот метод отображает список сетей (networks) и действия по умолчанию, в соответствии с указанным списком имен
- Security Groups.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_network) и
- [здесь](../../database.mdx#tbl_sg).
-
-
-#### Входные параметры
-
-
- - `sgNames[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | sgNames[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/list/security-groups' \
---header 'Content-Type: application/json' \
---data '{
- "sgNames": ["sg-example"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.groups[]` - {DICTIONARY.rules.short}
- - `$node.groups[].name` - {DICTIONARY.sg.short}
- - `$node.groups[].logs` - {DICTIONARY.log.short}
- - `$node.groups[].trace` - {DICTIONARY.trace.short}
- - `$node.groups[].networks` - {DICTIONARY.networks.short}
- - `$node.groups[].defaultAction` - {DICTIONARY.apiIcmp.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.groups[] |
- Object[] |
-
-
- | $node.groups[].name |
- String |
-
-
- | $node.groups[].logs |
- Boolean |
-
-
- | $node.groups[].trace |
- Boolean |
-
-
- | $node.groups[].networks |
- Object[] |
-
-
- | $node.groups[].defaultAction |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "groups": [{
- "name": "sg-example",
- "logs": "true",
- "trace": "true",
- "networks": ["network-example"],
- "defaultAction": "DROP"
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список Security Group
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Указано некорректное значение существующего параметра
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком Security Group соответствующий запросу
-server-->>user: Список доступных сетей соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sg-icmp-rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sg-icmp-rules.mdx
deleted file mode 100644
index 97616e9a..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sg-icmp-rules.mdx
+++ /dev/null
@@ -1,159 +0,0 @@
----
-id: sg-icmp-rules
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# POST /v1/sg-icmp/rules
-
-
- Этот метод отображает список Security Group правил, в соответствии с указанным списком Security Groups.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_sg_icmp_rule).
-
-
-#### Входные параметры
-
-
- - `sg[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | sg[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/sg-icmp/rules' \
---header 'Content-Type: application/json' \
---data '{
- "sg": ["sg-example"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.rules[]` - {DICTIONARY.rules.short}
- - `$node.rules[].Sg` - {DICTIONARY.sg.short}
- - `$node.rules[].logs` - {DICTIONARY.log.short}
- - `$node.rules[].trace` - {DICTIONARY.trace.short}
- - `$node.rules[].ICMP` - {DICTIONARY.apiIcmp.short}
- - `$node.rules[].ICMP.IPv` - {DICTIONARY.icmpV.short}
- - `$node.rules[].ICMP.Types[]` - {DICTIONARY.icmpTypes.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.rules[] |
- Object[] |
-
-
- | $node.rules[].Sg |
- String |
-
-
- | $node.rules[].logs |
- Boolean |
-
-
- | $node.rules[].trace |
- Boolean |
-
-
- | $node.rules[].ICMP |
- Object |
-
-
- | $node.rules[].ICMP.IPv |
- String |
-
-
- | $node.rules[].ICMP.Types[] |
- Object[] |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "rules": [{
- "Sg": "sg-example",
- "logs": "true",
- "trace": "true",
- "ICMP": {
- "IPv": "IPv4",
- "Types": [0, 8]
- },
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список правил SG:ICMP ограниченных по типу SG
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Указано некорректное значение существующего параметра
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком правил SG:ICMP ограниченных по типу SG соответствующий запросу
-server-->>user: Список правил SG:ICMP ограниченных по типу SG соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sg-sg-icmp-rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sg-sg-icmp-rules.mdx
deleted file mode 100644
index e9e69332..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sg-sg-icmp-rules.mdx
+++ /dev/null
@@ -1,174 +0,0 @@
----
-id: sg-sg-icmp-rules
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# POST /v1/sg-sg-icmp/rules
-
-
- Этот метод отображает список Security Group to Security Group правил, в соответствии с указанным списком Security
- Groups.
-
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_sg_sg_icmp_rule).
-
-
-#### Входные параметры
-
-
- - `sgFrom[]` - {DICTIONARY.sgroupSet.short}
- - `sgTo[]` - {DICTIONARY.sgroupSet.short}
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | sgFrom[] |
- да |
- Object[] |
- |
-
-
- | sgTo[] |
- да |
- Object[] |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/sg-sg-icmp/rules' \
---header 'Content-Type: application/json' \
---data '{
- "sgFrom": ["sg-example"],
- "sgTo": ["sg-example-2"]
-}'
-```
-
-Выходные параметры
-
-
- - `$node.rules[]` - {DICTIONARY.rules.short}
- - `$node.rules[].SgFrom` - {DICTIONARY.sg.short}
- - `$node.rules[].SgTo` - {DICTIONARY.sg.short}
- - `$node.rules[].logs` - {DICTIONARY.log.short}
- - `$node.rules[].trace` - {DICTIONARY.trace.short}
- - `$node.rules[].ICMP` - {DICTIONARY.apiIcmp.short}
- - `$node.rules[].ICMP.IPv` - {DICTIONARY.icmpV.short}
- - `$node.rules[].ICMP.Types[]` - {DICTIONARY.icmpTypes.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.rules[] |
- Object[] |
-
-
- | $node.rules[].SgFrom |
- String |
-
-
- | $node.rules[].SgTo |
- String |
-
-
- | $node.rules[].logs |
- Boolean |
-
-
- | $node.rules[].trace |
- Boolean |
-
-
- | $node.rules[].ICMP |
- Object |
-
-
- | $node.rules[].ICMP.IPv |
- String |
-
-
- | $node.rules[].ICMP.Types[] |
- Object[] |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "rules": [{
- "SgFrom": "sg-example",
- "SgTo": "sg-example-2",
- "logs": "true",
- "trace": "true",
- "ICMP": {
- "IPv": "IPv4",
- "Types": [0, 8]
- },
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список правил SG-SG:ICMP ограниченных по типу SG from>to
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Указано некорректное значение существующего параметра
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком правил SG-SG:ICMP ограниченных по типу SG from>to соответствующий запросу
-server-->>user: Список правил SG-SG:ICMP ограниченных по типу SG from>to соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/status.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/status.mdx
deleted file mode 100644
index 55566960..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/status.mdx
+++ /dev/null
@@ -1,84 +0,0 @@
----
-id: status
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-
-# GET /v1/sync/status
-
-Этот метод отображает дату последнего успешного изменения данных.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_sync_status).
-
-
-#### Входные параметры
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/sync/status' \
---header 'Content-Type: application/json'
-```
-
-Выходные параметры
-
-
- - `$node.updatedAt` - Дата последнего успешного изменения данных
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.updatedAt |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "updatedAt": "2023-11-21T17:02:30.717786Z"
-}
-```
-
-Возможные ошибки API
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить статус последнего успешного обновления БД
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-db-->>server: Ответ с датой последнего успешного обновления БД
-server-->>user: Дата последнего успешного обновления БД
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/subnets.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/subnets.mdx
deleted file mode 100644
index d79425f4..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/subnets.mdx
+++ /dev/null
@@ -1,138 +0,0 @@
----
-id: subnets
----
-
-import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
-import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
-import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
-import { DICTIONARY } from '@site/src/constants/dictionary.ts'
-
-# GET /v1/sg/\{sgName\}/subnets
-
-Этот метод отображает список подсетей по указанной Security Group.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_network).
-
-
-#### Входные параметры
-
-
- -
- `{sgName}` - {DICTIONARY.sg.short}
-
-
-
-
-
-
-
- | название |
- обязательность |
- тип данных |
- Значение по умолчанию |
-
-
-
-
- | \{sgName\} |
- да |
- String |
- |
-
-
-
-
-
-Пример использования
-
-```bash
-curl '127.0.0.1:9007/v1/sg/sg-example/subnets' \
---header 'Content-Type: application/json'
-```
-
-Выходные параметры
-
-
- - `$node.networks[]` - {DICTIONARY.networkNames.short}
- - `$node.networks[].name` - {DICTIONARY.nw.short}
- - `$node.networks[].network` - {DICTIONARY.networkObject.short}
- - `$node.networks[].network.CIDR` - {DICTIONARY.cidr.short}
-
-
-
-
-
-
- | название |
- тип данных |
-
-
-
-
- | $node.networks[] |
- Object[] |
-
-
- | $node.networks[].name |
- String |
-
-
- | $node.networks[].network |
- Object |
-
-
- | $node.networks[].network.CIDR |
- String |
-
-
-
-
-
-Пример ответа
-
-```bash
-{
- "networks": [{
- "name": "network-example",
- "network": {
- "CIDR": "10.150.0.222/32"
- },
- }]
-}
-```
-
-Возможные ошибки API
-
-
-
-
-Диаграмма последовательности
-
-
-
-```mermaid
-sequenceDiagram
-participant user as User
-participant server as Server
-participant db as Database
-
-user->>server: Отобразить список доступных сетей связанных с SG
-
-alt Ошибка в запросе
- server-->>user: Показать ошибку в запросе
-end
-
-server->>db: Отправить запрос
-db->>db: Проверка входящего запроса
-
-alt Возникла ошибка при некорректном вводе SG
- db-->>server: Ответ с ошибкой
- server-->>user: Показать ошибку в запросе
-end
-
-db-->>server: Ответ со списком доступных сетей связанных с SG соответствующий запросу
-server-->>user: Список доступных сетей связанных с SG соответствующий запросу
-```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sync.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sync.mdx
deleted file mode 100644
index fc8afe01..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/api/v1/sync.mdx
+++ /dev/null
@@ -1,112 +0,0 @@
----
-id: sync
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-import ApiNetworks from '@site/src/snippets/networks/_Api.mdx'
-import ApiSg from '@site/src/snippets/securityGroups/_Api.mdx'
-import ApiS2sie from '@site/src/snippets/s2s-ie/_Api.mdx'
-import ApiS2s from '@site/src/snippets/s2s/_Api.mdx'
-import ApiS2f from '@site/src/snippets/s2f-e/_Api.mdx'
-import ApiS2c from '@site/src/snippets/s2c-ie/_Api.mdx'
-
-# POST /v1/sync
-
-
-
-
-
- Ресурс `Networks` представляет собой введенную нами абстракцию, которая позволяет определять группы IP-адресов или
- подсетей, доступных для управления Host Based NGFW. Эти подсети затем могут быть связаны с конкретными группами
- безопасности для логического разделения и использоваться в правилах для разрешения или блокирования доступа к
- определенным ресурсам в вашей сети.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_network).
-
-
-
-
-
-
- Ресурс `Groups` представляет собой введенную нами абстракцию, которая позволят объединить подсети в логические группы
- и применять к ним единые правила сетевого взаимодействия.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_sg) и [здесь](../../database.mdx#tbl_sg_icmp_rule).
-
-
-
-
-
-
-
-
-
- Данный тип правил управляет обменом данными между различными группами безопасности. Он автоматически создает два
- правила на хостах: одно для исходящего трафика от инициирующей стороны и другое для входящего трафика от группы
- безопасности, к которой предоставлен доступ.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_sg_rule) и [здесь](../../database.mdx#tbl_sg_sg_icmp_rule).
-
-
-
-
-
- Ресурс `Security Group to Security Group` представляет собой введенную нами абстракцию, которая обеспечивает гибкое
- управление и контроль сетевого трафика между разными группами безопасности, используя протоколы TCP, UDP и ICMP. Этот
- ресурс позволяет точно настраивать, какой трафик может передаваться между группами, обеспечивая таким образом высокий
- уровень защиты и контроля в сетевой инфраструктуре.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_ie_sg_sg_rule) и
- [здесь](../../database.mdx#tbl_ie_sg_sg_icmp_rule).
-
-
-
-
-
- Ресурс `Security Group to CIDR` представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за
- сетевым трафиком между различными группами безопасности и подсетями, используя TCP, UDP и ICMP протоколы. Этот ресурс
- дает возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и определенными
- подсетями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_cidr_sg_rule) и [здесь](../../database.mdx#tbl_cidr_sg_icmp_rule).
-
-
-
-
-
- Ресурс `Security Group to FQDN` представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за сетевым
- трафиком между различными группами безопасности и FQDN записями, используя TCP, UDP протоколы. Этот ресурс дает
- возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и определенными FQDN
- записями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
-
-
- Более подробно по организации БД можно посмотреть [здесь](../../database.mdx#tbl_fqdn_rule).
-
-
-
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/database.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/database.mdx
deleted file mode 100644
index e804c890..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/database.mdx
+++ /dev/null
@@ -1,1361 +0,0 @@
----
-id: database
----
-
-import { FancyboxImage } from '@site/src/components/commonBlocks/FancyboxImage'
-
-# Описание базы данных
-
-Ниже приводится схема и описание таблиц базы данных, созданных для стандартного использования HBF-Server.
-
-HBF-Server поддерживает PostgreSQL версии 14.8
-
-Поскольку HBF-Server взаимодействует с этой базой данных самостоятельно, конечному пользователю не нужно беспокоиться о ее структуре и о том как хранятся данные.
-
-## Схема базы данных
-
-На диаграмме ниже представлен визуальный обзор базы данных HBF-Server и связей между таблицами. В приведенном ниже Обзоре Таблиц, содержатся дополнительные сведения о таблицах и столбцах базы данных.
-
-
-
-## **Обзор таблиц (сущности)**
-
-В этом разделе представлен обзор всех таблиц, созданных для стандартного использования HBF-Server. С последующим детальным описанием, что находится в каждой таблице.
-
-
-
-
-
- | **Название таблицы** |
- **Описание** |
- **Соответствующие области взаимодействия интерфейса (API)** |
-
-
-
-
- | [tbl_network](#tbl_network) |
-
- таблица tbl_network хранит информацию о IP Subnets c уникальным названием, CIDR и ссылкой на SG к сети которой
- она принадлежит
- |
-
-
- - [Отобразить список доступных сетей (Networks)](./api/v1/networks.mdx)
- - [Отобразить список доступных сетей (Networks) связанных с SG](./api/v1/subnets.mdx)
- - [Отобразить SG по IP или CIDR](./api/v1/address-sg.mdx)
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_sg](#tbl_sg) |
-
- таблица tbl_sg хранит информацию о Security Groups (SG) с уникальным названием, правилом применяемым для
- входящих или исходящих пакетов, также возможностью включить логирование
- |
-
-
- - [Отобразить список Security Groups (SG)](./api/v1/security-groups.mdx)
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_ie_sg_sg_rule](#tbl_ie_sg_sg_rule) |
-
- таблица tbl_ie_sg_sg_rule хранит информацию SG-SG правил для входящего и исходящего траффика с сетевым
- транспортным протоколами и диапазоном портов
- |
-
-
- -
- [Отобразить список IE-SG-SG правил для входящего и исходящего траффика](./api/v1/ie-sg-sg-rules.mdx)
-
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_ie_sg_sg_icmp_rule](#tbl_ie_sg_sg_icmp_rule) |
-
- таблица tbl_ie_sg_sg_icmp_rule хранит информацию SG-SG правил для входящего и исходящего траффика через
- сетевой протокол ICMP
- |
-
-
- -
- [Отобразить список IE-SG-SG-ICMP правил для входящего и исходящего траффика](./api/v1/ie-sg-sg-icmp-rules)
-
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_cidr_sg_rule](#tbl_cidr_sg_rule) |
-
- таблица tbl_cidr_sg_rule хранит информацию CIDR-SG правил для входящего и исходящего траффика с сетевым
- транспортным протоколом, бесклассовой междоменной маршрутизацией (CIDR) и диапазоном портов
- |
-
-
- - [Отобразить список CIRD-SG правил для входящего и исходящего траффика](./api/v1/cidr-sg-rules.mdx)
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_cidr_sg_icmp_rule](#tbl_cidr_sg_icmp_rule) |
-
- таблица tbl_cidr_sg_icmp_rule хранит информацию CIDR-SG правил для входящего и исходящего траффика с сетевым
- протоколом ICMP, бесклассовой междоменной маршрутизацией (CIDR)
- |
-
-
- - [Отобразить список CIRD-SG правил для входящего и исходящего траффика](./api/v1/cidr-sg-icmp-rules.mdx)
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_fqdn_rule](#tbl_fqdn_rule) |
-
- таблица tbl_fqdn_rule хранит информацию SG-to-FQDN правил с сетевым транспортным протоколом и диапазоном
- портов
- |
-
-
- - [Отобразить список полных доменных имен (FQDN)](./api/v1/fqdn-rules.mdx)
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_sg_icmp_rule](#tbl_sg_icmp_rule) |
- таблица tbl_sg_icmp_rule хранит информацию SG:ICMP правил |
-
-
- - [Отобразить список правил SG:ICMP ограниченных по типу SG](./api/v1/sg-icmp-rules.mdx)
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_sg_rule](#tbl_sg_rule) |
-
- таблица tbl_sg_rules хранит информацию о правилах виртуального файрволла который можно настраивать для того
- чтобы контролировать входящий и выходящий трафик
- |
-
-
- - [Отобразить список SG правил ограниченных по условиям from -> to](./api/v1/rules.mdx)
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_sg_sg_icmp_rule](#tbl_sg_sg_icmp_rule) |
- таблица tbl_sg_sg_icmp_rule хранит информацию SG-SG:ICMP правил |
-
-
- -
- [Отобразить список правил SG-SG:ICMP ограниченных по типу SG from -> to](./api/v1/sg-sg-icmp-rules.mdx)
-
- - [Внести изменения в БД](./api/v1/sync.mdx)
-
- |
-
-
- | [tbl_sync_status](#tbl_sync_status) |
-
- в таблице tbl_sync_status хранится информация об изменениях внесенных пользователем (дата последнего успешного
- изменения и кол-во изменённых строк)
- |
-
-
- - [Отобразить статус последнего успешного обновления БД](./api/v1/status.mdx)
-
- |
-
-
-
-
-
-## **Подробное описание таблиц**
-
-Ниже приведены конкретные поля в каждой из таблиц, созданных для стандартного использования HBF-Server
-
-### tbl_network
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | sg |
- int(8) |
- YES |
- FK |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | name |
- cname |
- |
- ALT |
- |
-
-
- - длина значения не должна превышать 256 символов
- - значения должно начинаться и заканчиваться символами без пробелов
- - значение должно быть уникальным
-
- |
-
-
- | network |
- cidr |
- |
- |
- |
-
-
- - значение от 7 до 19 байт пример `192.168.100.128/25`
- - сетевые интервалы не должны пересекаться
-
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Simple Key |
- cname |
-
-
-
-
-
-### tbl_sg
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | name |
- cname |
- |
- ALT |
- |
-
-
- - длина значения не должна превышать 256 символов
- - значения должно начинаться и заканчиваться символами без пробелов
- - значение должно быть уникальным
-
- |
-
-
- | logs |
- bool |
- |
- |
- false |
- |
-
-
- | trace |
- bool |
- |
- |
- false |
- |
-
-
- | default_action |
- chain_default_action |
- |
- |
- ‘DROP’::chain_default_action |
-
- одно из двух значений:
-
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Simple Key |
- cname |
-
-
-
-
-
-### tbl_ie_sg_sg_rule
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | proto |
- proto |
- |
- ALT |
- |
-
- одно из двух значений:
-
- |
-
-
- | sg |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | sg_local |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | traffic |
- traffic |
- |
- ALT |
- |
-
- одно из двух значений:
-
- |
-
-
- | ports |
- sg_rule_ports[] |
- YES |
- |
- |
-
-
- - должно быть указано значение порта исходящего либо входящего трафика
- - значение должно находиться в интервале от 1 до 65535
- -
- интервалы введённых значений портов для исходящего трафика не должны пересекаться
-
-
- |
-
-
- | logs |
- bool |
- |
- |
- |
- |
-
-
- | trace |
- bool |
- |
- |
- |
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Compound Key |
-
-
- - proto
- - sg
- - sg_local
- - traffic
-
- |
-
-
-
-
-
-### tbl_ie_sg_sg_icmp_rule
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | sg |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | sg_local |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | traffic |
- traffic |
- |
- ALT |
- |
- одно из двух значений "ingress" или "egress" |
-
-
- | ip_v |
- ip_family |
- |
- ALT |
- |
- одно из двух значений "IPv6" или "IPv4" |
-
-
- | types |
- icmp_types |
- |
- |
- |
- массив из smallint[] кодов типа ICMP |
-
-
- | logs |
- Boolean |
- |
- |
- false |
- |
-
-
- | trace |
- Boolean |
- |
- |
- false |
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Compound Key |
-
-
- - sg
- - sg_local
- - traffic
- - ip_v
-
- |
-
-
-
-
-
-### tbl_cidr_sg_rule
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | proto |
- proto |
- |
- ALT |
- |
-
- одно из двух значений:
-
- |
-
-
- | cidr |
- cidr |
- |
- ALT |
- |
-
- значение cidr (диапазон ip адресов) в рамках одного правила (proto, sg, traffic) не должны пересекаться
- |
-
-
- | sg |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | traffic |
- traffic |
- |
- ALT |
- |
-
-
- |
-
-
- | ports |
- sg_rule_ports[] |
- YES |
- |
- |
-
-
- - должно быть указано значение порта исходящего либо входящего трафика
- - значение должно находиться в интервале от 1 до 65535
- -
- интервалы введённых значений портов для исходящего трафика не должны пересекаться
-
-
- |
-
-
- | logs |
- bool |
- |
- |
- |
- |
-
-
- | trace |
- bool |
- |
- |
- |
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Compound Key |
-
-
- - proto
- - cidr
- - sg
- - traffic
-
- |
-
-
-
-
-
-### tbl_cidr_sg_icmp_rule
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | cidr |
- cidr |
- |
- ALT |
- |
-
- значение cidr (диапазон ip адресов) в рамках одного правила (ip_v, sg, traffic) не должны пересекаться
- |
-
-
- | sg |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | traffic |
- traffic |
- |
- ALT |
- |
-
-
- |
-
-
- | ip_v |
- ip_family |
- |
- ALT |
- |
-
- одно из двух значений:
-
- |
-
-
- | types |
- icmp_types |
- |
- |
- |
-
- массив из smallint[] кодов типа ICMP
- |
-
-
- | logs |
- bool |
- |
- |
- |
- |
-
-
- | trace |
- bool |
- |
- |
- |
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Compound Key |
-
-
- - ip_v
- - cidr
- - sg
- - traffic
-
- |
-
-
-
-
-
-### tbl_fqdn_rule
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | sg_from |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | fqdn_to |
- fqdn |
- |
- ALT |
- |
-
-
- - длина значения не должна превышать 256 символов
- -
- значение начинается со строки, которая содержит один или более символов, являющихся буквами нижнего
- регистра, цифрами, символом `.` или символами `_` и `-` (кроме первого символа, который не может быть `-`
- или `_`), и должна быть длиной от 1 до 62 символов
-
- -
- затем может следовать любое количество строк, начинающихся с символа `.`, за которым идет один символ,
- являющийся буквой нижнего регистра, цифрой, символом `_` или символом `-`, и длина строки от 0 до 62
- символов
-
-
- |
-
-
- | proto |
- proto |
- |
- ALT |
- |
-
- одно из двух значений:
-
- |
-
-
- | ports |
- sg_rule_ports[] |
- YES |
- |
- |
-
-
- - должно быть указано значение порта исходящего либо входящего трафика
- - значение должно находиться в интервале от 1 до 65535
- -
- интервалы введённых значений портов для исходящего трафика не должны пересекаться
-
-
- |
-
-
- | logs |
- bool |
- |
- |
- false |
- |
-
-
- | ndpi_protocols |
- citext |
- |
- |
- |
-
-
- -
- количество элементов в массиве (наименований протоколов) не должно превышать 255
-
- -
- значение элемента (наименование протокола) не должно начинаться или заканчиваться пробелом и не должно
- быть пустым
-
-
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Compound Key |
-
-
- - sg_from
- - fqdn_to
- - proto
-
- |
-
-
-
-
-
-### tbl_sg_icmp_rule
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | ip_v |
- ip_family |
- |
- ALT |
- |
-
- одно из двух значений:
-
- |
-
-
- | types |
- icmp_types |
- |
- |
- |
- массив из smallint[] кодов типа ICMP |
-
-
- | sg |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | logs |
- bool |
- |
- |
- |
- |
-
-
- | trace |
- bool |
- |
- |
- |
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Compound Key |
-
-
- |
-
-
-
-
-
-### tbl_sg_rule
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | sg_from |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | sg_to |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | proto |
- proto |
- |
- ALT |
- |
-
- одно из двух значений:
-
- |
-
-
- | ports |
- sg_rule_ports[] |
- YES |
- |
- |
-
-
- - должно быть указано значение порта исходящего либо входящего трафика
- - значение должно находиться в интервале от 1 до 65535
- -
- интервалы введённых значений портов для исходящего трафика не должны пересекаться
-
-
- |
-
-
- | logs |
- bool |
- |
- |
- false |
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Compound Key |
-
-
- - sg_from
- - sg_to
- - proto
-
- |
-
-
-
-
-
-### tbl_sg_sg_icmp_rule
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | ip_v |
- ip_family |
- |
- ALT |
- |
-
- одно из двух значений:
-
- |
-
-
- | types |
- icmp_types |
- |
- |
- |
- массив из smallint[] кодов типа ICMP |
-
-
- | sg_from |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | sg_to |
- int(8) |
- |
- FK/ALT |
- |
- внешний ключ к таблице tbl_sg.id |
-
-
- | logs |
- bool |
- |
- |
- |
- |
-
-
- | trace |
- bool |
- |
- |
- |
- |
-
-
-
-
-
-Ключи
-
-
-
-
-
- | Имя ключа |
- Тип |
- Поля |
-
-
-
-
- | Alternative key |
- Compound Key |
-
-
- - ip_v
- - sg_from
- - sg_to
-
- |
-
-
-
-
-
-### tbl_sync_status
-
-
-
-
-
- | Поле |
- Тип |
- Null |
- Ключ |
- По умолчанию |
- Дополнительно |
-
-
-
-
- | id |
- int(8) |
- |
- PRI |
- |
- auto_increment |
-
-
- | total_affected_rows |
- int(8) |
- |
- |
- |
-
- при любой процедуре (удаление/добавление/редактирование) данных в таблицах, tbl_network, tbl_sg,
- tbl_fqdn_rule, tbl_sg_rule, tbl_sg_icmp_rule, tbl_sg_sg_icmp_rule, будет учтена сумма всех изменённых строк
- |
-
-
- | updated_at |
- timstamptz |
- YES |
- |
- |
- дата изменения |
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/goose.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/goose.mdx
deleted file mode 100644
index 459680cf..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/goose.mdx
+++ /dev/null
@@ -1,212 +0,0 @@
----
-id: goose
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-
-# Миграция
-
-
- В качестве инструмента для миграции базы данных использует goose. Когда в качестве хранилища используется
- Postgres, goose запускается перед началом работы hbf-server'a. Более подробную информацию о goose можно найти
- [здесь](https://github.com/pressly/goose).
-
-
-
- Перед запуском *goose* необходимо настроить скрипт миграции командой:
-
-
- ```bash
- cat < migration.sh
- #!/bin/bash
- SG_DB_USER="user"
- SG_DB_PASSWORD="password"
- SG_DB_URL="localhost:5432"
- SG_DB_NAME="swarm"
-
- SG_STORAGE_POSTGRES_URL="postgres://${SG_DB_USER}:${SG_DB_PASSWORD}@${SG_DB_URL}/${SG_DB_NAME}?sslmode=disable"
-
- export SG_STORAGE_POSTGRES_URL=$SG_STORAGE_POSTGRES_URL
-
- exec ./bin/goose postgres $SG_STORAGE_POSTGRES_URL up
- EOF
- ```
-
-
-
- #### Сборка
- Перед сборкой необходимо склонировать репозиторий
-
- ```bash
- export VERSION=1.9.1
- git clone https://github.com/H-BF/sgroups
- cd sgroups
- git fetch --tags --all
- git checkout tags/v${VERSION}
- make .install-goose
- ```
-
-
- После сборки, скомпилированный бинарный файл будет доступен в папке `./bin/goose` в корне репозитория (не путать с `/bin`,
- расположенным в корне файловой системы).
-
-
-
-
- По умолчанию файлы миграции расположены в папке `./internal/registry/sgroups/pg/migrations`, но пользователь может
- указать и другой путь, определив переменную окружения `PG_MIGRATIONS`.
-
-
-
- Используемые переменные
-
-
- | Название |
- Описание |
- Значение по умолчанию |
-
-
-
-
- | `SG_STORAGE_POSTGRES_URL` |
- Переменная необходимая для подключения к БД |
- |
-
-
- | `PG_MIGRATIONS` |
- Переменная, содержащая путь к файлам миграций |
- "./internal/registry/sgroups/pg/migrations" |
-
-
- | `SG_DB_USER` |
- Имя пользователя БД |
- |
-
-
- | `SG_DB_PASSWORD` |
- Пароль пользователя БД |
- |
-
-
- | `SG_DB_URL` |
- Адрес базы данных (HOST:PORT) |
- |
-
-
- | `SG_DB_NAME` |
- Имя БД |
- swarm |
-
-
-
-
- #### Запуск
-
- Для выполнения миграции базы данных вручную пользователь может запустить следующую команду (рекомендуемый способ):
-
- ```bash
- sh migration.sh
- ```
-
-
-
-
- #### Сборка
-
-
- Перед развертыванием убедитесь, что у вас установлен [docker](https://docs.docker.com/engine/install/):
-
-
- ```bash title='Get docker version'
- docker -v
- ```
-
-
- Клонируем репозиторий, переходим в директорию репозитория и переключаемся на тег необходимой версии командой:
-
-
- ```bash
- export VERSION=1.9.1
- git clone https://github.com/H-BF/sgroups
- cd sgroups
- git fetch --tags --all
- git checkout tags/v${VERSION}
- ```
-
-
- Собираем образ *goose* командой:
-
-
- ```bash
- docker build -f docker/Dockerfile.goose --tag goose:v$(cat VERSION) .
- ```
-
-
- По умолчанию файлы миграции расположены в папке `./internal/registry/sgroups/pg/migrations`, но пользователь может
- указать и другой путь, определив переменную окружения `PG_MIGRATIONS`.
-
-
-
- Используемые переменные
-
-
- | Название |
- Описание |
- Значение по умолчанию |
-
-
-
-
- | `SG_STORAGE_POSTGRES_URL` |
- Переменная необходимая для подключения к БД |
- |
-
-
- | `PG_MIGRATIONS` |
- Переменная, содержащая путь к файлам миграций |
- "./internal/registry/sgroups/pg/migrations" |
-
-
- | `SG_DB_USER` |
- Имя пользователя БД |
- |
-
-
- | `SG_DB_PASSWORD` |
- Пароль пользователя БД |
- |
-
-
- | `SG_DB_URL` |
- Адрес базы данных (HOST:PORT) |
- |
-
-
- | `SG_DB_NAME` |
- Имя БД |
- swarm |
-
-
-
-
- #### Запуск
-
- Для выполнения миграции базы данных с помощью Docker необходимо выполнить команду:
-
-
- ```bash
- docker run -d -t --name=goose-migration --rm \
- -v "./migration.sh:/app/migration.sh" \
- --entrypoint /app/migration.sh \
- goose:$(cat VERSION)
- ```
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/installation.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/installation.mdx
deleted file mode 100644
index 57de8cc2..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/installation.mdx
+++ /dev/null
@@ -1,622 +0,0 @@
----
-id: installation-server
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-
-# Установка
-
-
- Перед развертыванием, пользователь должен решить, где hbf-server будет хранить данные. Предоставляется два варианта
- для выбора:
-
- - In Memory.
- - Postgres: В этом случае необходимо перед запуском hbf-server выполнить [миграцию базы данных](./goose.mdx).
-
-
-
-
- Независимо от выбранного метода установки hbf-server, необходимо сконфигурировать следующие переменные окружения:
-
`HBF_SERVER` - IP-адрес hbf-server.
-
-```bash title='Setup HBF_SERVER'
-export HBF_SERVER=0.0.0.0
-```
-
-{' '}
-
-
`HBF_SERVER_PORT` - порт, используемый hbf-server.
-
-```bash title='Setup HBF_SERVER_PORT'
-export HBF_SERVER_PORT=9650
-```
-
-{' '}
-
-
`VERSION` - версия hbf-server.
-
-```bash title='Setup VERSION'
-export VERSION=1.9.1
-```
-
-{' '}
-
-
`SG_STORAGE_TYPE` - тип хранилища для hbf-server. Допустимые значени: `internal` или `postgres`.
-
-В случае выбора типа хранилища "In Memory" установите переменную окружения командой:
-
-```bash title='Setup SG_STORAGE_TYPE'
-export SG_STORAGE_TYPE=internal
-```
-
-В случае выбора типа хранилища "Postgres" установите переменную окружения командой:
-
-```bash title='Setup SG_STORAGE_TYPE'
-export SG_STORAGE_TYPE=postgres
-```
-
-{' '}
-
-
- `SG_STORAGE_POSTGRES_URL` - URL для подключения к Postgres базе данных. Для корректного формирования воспользуйтесь
- командой:
-
-
-```bash title='Setup SG_STORAGE_POSTGRES_URL'
-cat <
setup.sh
-#!/bin/bash
-SG_DB_USER="user"
-SG_DB_PASSWORD="password"
-SG_DB_URL="localhost:5432"
-SG_DB_NAME="swarm"
-
-SG_STORAGE_POSTGRES_URL="postgres://${SG_DB_USER}:${SG_DB_PASSWORD}@${SG_DB_URL}/${SG_DB_NAME}?sslmode=disable"
-
-export SG_STORAGE_POSTGRES_URL=$SG_STORAGE_POSTGRES_URL
-EOF
-sh setup.sh
-```
-
-
-
-
-
-
-
- Перед развертыванием убедитесь, что у вас установлен [docker](https://docs.docker.com/engine/install/):
-
-
-```bash title='Get docker version'
-docker -v
-```
-
-{' '}
-
-Клонируем репозиторий, переходим в директорию репозитория и переключаемся на тег необходимой версии командой:
-
-```bash title='Git setup'
-git clone https://github.com/H-BF/sgroups
-cd sgroups
-git fetch --tags --all
-git checkout tags/v${VERSION}
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-server командой:
-
-```bash title='Configuration file setup'
-cat < config-server.yaml
----
-logger:
- # log level
- level: INFO
-
-metrics:
- # enable api metrics
- enable: true
-
-healthcheck:
- # enables|disables health check handler
- enable: true
-
-server:
- # server endpoint
- endpoint: tcp://${HBF_SERVER}:${HBF_SERVER_PORT}
- # graceful shutdown period
- graceful-shutdown: 30s
-EOF
-```
-
-{' '}
-
-Собираем образ hbf-server командой:
-
-```bash
-docker build -f docker/Dockerfile.server --tag sgroups:v$(cat VERSION) .
-```
-
-{' '}
-
-В случае выбора типа хранилища "In Memory" запустите hbf-server командой:
-
-```bash
-docker run \
--d \
--v ./config-server.yaml:/opt/swarm/etc/sgroups/config-server.yaml \
---name hbf-server \
---entrypoint "/app/bin/sgroups" \
---env SG_STORAGE_TYPE \
-sgroups:v$(cat VERSION) -config /opt/swarm/etc/sgroups/config-server.yaml
-```
-
-{' '}
-
-В случае выбора типа хранилища "Postgres" запустите hbf-server командой:
-
-```bash
-sh setup.sh
-docker run \
--d \
--v ./config-server.yaml:/opt/swarm/etc/sgroups/config-server.yaml \
---name hbf-server \
---entrypoint "/app/bin/sgroups" \
---env SG_STORAGE_TYPE \
---env SG_STORAGE_POSTGRES_URL \
-sgroups:v$(cat VERSION) -config /opt/swarm/etc/sgroups/config-server.yaml
-```
-
-
-
-
-{' '}
-
-{' '}
-
-Устанавливаем дополнительные переменные окружения командой:
-
-```bash title='Environment setup'
-export PACKAGE_TYPE=deb
-export URL=https://github.com/H-BF/sgroups/releases/download
-export RELEASE=v$VERSION/sgroups-$VERSION-any.$PACKAGE_TYPE
-```
-
-{' '}
-
-Скачиваем и устанавливаем deb-пакет командой:
-
-```bash title='Install deb package'
-sudo wget -O /tmp/sgroups.deb $URL/$RELEASE
-sudo dpkg -i /tmp/sgroups.deb
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-server.service командой:
-
-```bash title='Server service setup'
-cat < /etc/systemd/system/hbf-server.service
-[Unit]
-Description=sgroups
-Documentation=TODO:
-After=network.target
-
-[Service]
-EnvironmentFile=/opt/swarm/etc/sgroups/env
-ExecStart=/opt/swarm/sbin/sgroups --config=/opt/swarm/etc/sgroups/config.yaml
-Restart=always
-RestartSec=5
-Delegate=yes
-KillMode=process
-OOMScoreAdjust=-999
-LimitNOFILE=1048576
-LimitNPROC=infinity
-LimitCORE=infinity
-
-[Install]
-WantedBy=multi-user.target
-EOF
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-server командой:
-
-```bash title='Setup server service'
-cat < /opt/swarm/etc/sgroups/config.yaml
----
-logger:
- # log level
- level: INFO
-
-metrics:
- # enable api metrics
- enable: true
-
-healthcheck:
- # enables|disables health check handler
- enable: true
-
-server:
- # server endpoint
- endpoint: tcp://${HBF_SERVER}:${HBF_SERVER_PORT}
- # graceful shutdown period
- graceful-shutdown: 30s
-EOF
-```
-
-{' '}
-
-В случае выбора типа хранилища "In Memory" необходимо настроить файл */opt/swarm/etc/sgroups/env* командой:
-
-```bash title="Environment file setup"
-mkdir -p /opt/swarm/etc/sgroups
-cat < /opt/swarm/etc/sgroups/env
-#!/bin/bash
-SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
-EOF
-```
-
-{' '}
-
-В случае выбора типа хранилища "Postgres" необходимо настроить файл */opt/swarm/etc/sgroups/env* командой:
-
-```bash title="Environment file setup"
-mkdir -p /opt/swarm/etc/sgroups
-cat < /opt/swarm/etc/sgroups/env
-#!/bin/bash
-SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
-SG_STORAGE_POSTGRES_URL=${SG_STORAGE_POSTGRES_URL}
-EOF
-```
-
-{' '}
-
-Запустите сервис hbf-server.service командой:
-
-```bash title='Server service start'
-systemctl enable hbf-server.service
-systemctl start hbf-server.service
-```
-
-
-
-
-{' '}
-
-{' '}
-
-Настроим необходимые переменные окружения командой:
-
-```bash title='bash'
-export PACKAGE_TYPE=rpm
-export URL=https://github.com/H-BF/sgroups/releases/download
-export RELEASE=v$VERSION/sgroups-$VERSION-any.$PACKAGE_TYPE
-```
-
-{' '}
-
-Скачиваем и устанавливаем rpm-пакет командой:
-
-```bash title='Install rpm package'
-sudo wget -O /tmp/sgroups.rpm $URL/$RELEASE
-sudo yum localinstall -i /tmp/sgroups.rpm
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-server.service командой:
-
-```bash title='Server service setup'
-cat < /etc/systemd/system/hbf-server.service
-[Unit]
-Description=sgroups
-Documentation=TODO:
-After=network.target
-
-[Service]
-EnvironmentFile=/opt/swarm/etc/sgroups/env
-ExecStart=/opt/swarm/sbin/sgroups --config=/opt/swarm/etc/sgroups/config.yaml
-Restart=always
-RestartSec=5
-Delegate=yes
-KillMode=process
-OOMScoreAdjust=-999
-LimitNOFILE=1048576
-LimitNPROC=infinity
-LimitCORE=infinity
-
-[Install]
-WantedBy=multi-user.target
-EOF
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-server командой:
-
-```bash title='Setup server service'
-cat < /opt/swarm/etc/sgroups/config.yaml
----
-logger:
- # log level
- level: INFO
-
-metrics:
- # enable api metrics
- enable: true
-
-healthcheck:
- # enables|disables health check handler
- enable: true
-
-server:
- # server endpoint
- endpoint: tcp://${HBF_SERVER}:${HBF_SERVER_PORT}
- # graceful shutdown period
- graceful-shutdown: 30s
-EOF
-```
-
-{' '}
-
-В случае выбора типа хранилища "In Memory" необходимо настроить файл */opt/swarm/etc/sgroups/env* командой:
-
-```bash title="Environment file setup"
-mkdir -p /opt/swarm/etc/sgroups
-cat < /opt/swarm/etc/sgroups/env
-#!/bin/bash
-SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
-EOF
-```
-
-{' '}
-
-В случае выбора типа хранилища "Postgres" необходимо настроить файл */opt/swarm/etc/sgroups/env* командой:
-
-```bash title="Environment file setup"
-mkdir -p /opt/swarm/etc/sgroups
-cat < /opt/swarm/etc/sgroups/env
-#!/bin/bash
-SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
-SG_STORAGE_POSTGRES_URL=${SG_STORAGE_POSTGRES_URL}
-EOF
-```
-
-{' '}
-
-Запустите сервис hbf-server.service командой:
-
-```bash title='Server service start'
-systemctl enable hbf-server.service
-systemctl start hbf-server.service
-```
-
-
-
-
-
-{' '}
-
-Перед развертыванием, необходимо создать директории для хранения бинарного файла и файлов конфигурации командой:
-
-```bash title='Environment setup'
-mkdir -p /opt/swarm/sbin
-mkdir -p /opt/swarm/etc/to-nft
-```
-
-{' '}
-
-
- Клонируем репозиторий, переходим в директорию репозитория, переключаемся на тег необходимой версии и Создайте
- необходимые директории командой:
-
-
-```bash title='Git setup'
-git clone https://github.com/H-BF/sgroups
-cd sgroups
-git fetch --tags --all
-git checkout tags/v${VERSION}
-make sg-service platform=linux/amd64
-cp bin/sgroups /opt/swarm/sbin/hbf-server
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-server командой:
-
-```bash title='Configuration file setup'
-cat < /opt/swarm/etc/sgroups/config-server.yaml
----
-logger:
- # log level
- level: INFO
-
-metrics:
- # enable api metrics
- enable: true
-
-healthcheck:
- # enables|disables health check handler
- enable: true
-
-server:
- # server endpoint
- endpoint: tcp://${HBF_SERVER}:${HBF_SERVER_PORT}
- # graceful shutdown period
- graceful-shutdown: 30s
-EOF
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-server.service командой:
-
-```bash title='Server service setup'
-cat < /etc/systemd/system/hbf-server.service
-[Unit]
-Description=sgroups
-Documentation=TODO:
-After=network.target
-
-[Service]
-EnvironmentFile=/opt/swarm/etc/sgroups/env
-ExecStart=/opt/swarm/sbin/hbf-server --config=/opt/swarm/etc/sgroups/config-server.yaml
-Restart=always
-RestartSec=5
-Delegate=yes
-KillMode=process
-OOMScoreAdjust=-999
-LimitNOFILE=1048576
-LimitNPROC=infinity
-LimitCORE=infinity
-
-[Install]
-WantedBy=multi-user.target
-EOF
-```
-
-{' '}
-
-В случае выбора типа хранилища "In Memory" необходимо настроить файл */opt/swarm/etc/sgroups/env* командой:
-
-```bash title="Environment file setup"
-cat < /opt/swarm/etc/sgroups/env
-#!/bin/bash
-export SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
-EOF
-```
-
-{' '}
-
-В случае выбора типа хранилища "Postgres" необходимо настроить файл */opt/swarm/etc/sgroups/env* командой:
-
-```bash title="Environment file setup"
-cat < /opt/swarm/etc/sgroups/env
-#!/bin/bash
-SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
-SG_STORAGE_POSTGRES_URL=${SG_STORAGE_POSTGRES_URL}
-EOF
-```
-
-{' '}
-
-Запустите сервис hbf-server.service командой:
-
-```bash title='Server service start'
-systemctl enable hbf-server.service
-systemctl start hbf-server.service
-```
-
-
-
-
-#### Параметры конфигурационного файла
-
-
- Для настройки агентов требуется использовать конфигурационный файл, который содержит поля, позволяющие настраивать
- параметры в соответствии с потребностями пользователей. Так же есть алтьтернативный способ - переменные окружения.
- Обратите внимание, что переменные окружения являются более приоритетными, чем параметры из файла. Так же часть
- параметров можно настроить через файл, а часть через переменные окружения.
-
-
-
-
- Параметры файла config-server.yaml
-
-
- | Параметр |
- Описание |
- Тип |
- Обязательно |
-
-
-
-
- |
- logger.level
- `SG_LOGGER_LEVEL`
- |
- Уровень логгирования. Допустимые значения: `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `FATAL`, `PANIC`. |
- String |
- Нет |
-
-
- |
- server.endpoint
- `SG_SERVER_ENDPOINT`
- |
- IP адрес и порт hbf-сервер. Рекомендуемое значение: `0.0.0.0:9650`. |
- String |
- Да |
-
-
- |
- server.graceful-shutdow
- `SG_SERVER_GRACEFUL_SHUTDOW`
- |
-
- Определяет период времени, в течение которого процесс сервера должен корректно завершиться. По истечению
- периода, процесс завершиться с кодом 1. Значение по умолчанию: `10s`
- |
- String |
- Нет |
-
-
- |
- telemetry.metrics.enable
- `SG_METRICS_ENABLE`
- |
-
- Включить/Отключить возможность получения метрик. Значение по умолчанию: `true`. Пример получения метрик: `curl
- 0.0.0.0:9650/metrics`.
- |
- Boolean |
- Нет |
-
-
- |
- healthcheck.enable
- `SG_HEALTHCHECK_ENABLE`
- |
-
- Включить/Отключить возможность получения информации о статусе hbf-сервера. Значение по умолчанию: `true`.
- Пример получения статуса: `curl 0.0.0.0:9650/healthcheck`.
- |
- Boolean |
- Нет |
-
-
- |
- storage.type
- `SG_STORAGE_TYPE`
- |
-
- Подключаемый тип базы данных. Значение по умолчанию: `internal`. Допустимые значения: `internal`, `postgres`.
- |
- String |
- Нет |
-
-
- |
- storage.postgres.url
- `SG_STORAGE_POSTGRES_URL`
- |
-
- URL для подключения к базе данных Postgres. При использовании `storage.type:postgres`, данный параметр должен
- иметь корректный URL подключения. В ином случае, в параметре нет необходимости.
- |
- String |
- Нет |
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/monitoring.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/monitoring.mdx
deleted file mode 100644
index 10f0a169..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/sgroups/monitoring.mdx
+++ /dev/null
@@ -1,270 +0,0 @@
----
-id: monitoring
----
-
-# Мониторинг
-
-
- Информация о состоянии сервера основывается на метриках. В таблице ниже предоставлены доступные метрики и их описания.
-
-
-
-
- Зеленым
-
- цветом выделены ключевые метрики.
-
-
-
-
-
-
- | Metric Name |
- Metric Type |
- Description |
-
-
-
-
- | go_gc_duration_seconds |
- summary |
- Сводка длительности пауз циклов сборки мусора |
-
-
- | go_gc_duration_seconds_count |
- counter |
- Сводка длительности пауз циклов сборки мусора |
-
-
- | go_gc_duration_seconds_sum |
- counter |
- Сумма длительности паузы циклов сборки мусора |
-
-
- | go_goroutines |
- gauge |
- Количество текущих горутин |
-
-
- | go_info |
- gauge |
- Информация о среде выполнения |
-
-
- | go_memstats_alloc_bytes |
- gauge |
- Количество выделенных и все еще используемых байтов |
-
-
- | go_memstats_alloc_bytes_total |
- counter |
- Общее количество выделенных байтов, даже если они были освобождены |
-
-
- | go_memstats_buck_hash_sys_bytes |
- gauge |
- Количество байтов, используемых хэш-таблицей профилирования |
-
-
- | go_memstats_frees_total |
- counter |
- Общее количество "освобожденных" объектов кучи |
-
-
- | go_memstats_gc_sys_bytes |
- gauge |
- Количество байтов, используемых для метаданных системы сборки мусора |
-
-
- | go_memstats_heap_alloc_bytes |
- gauge |
- Количество выделенных и все еще используемых байтов кучи |
-
-
- | go_memstats_heap_idle_bytes |
- gauge |
- Количество байтов кучи в ожидании использования |
-
-
- | go_memstats_heap_inuse_bytes |
- gauge |
- Количество байтов кучи, используемых в данный момент |
-
-
- | go_memstats_heap_objects |
- gauge |
- Количество выделенных объектов |
-
-
- | go_memstats_heap_released_bytes |
- gauge |
- Количество байтов кучи, освобожденных в ОС |
-
-
- | go_memstats_heap_sys_bytes |
- gauge |
- Количество байтов кучи, полученных от системы |
-
-
- | go_memstats_last_gc_time_seconds |
- gauge |
- Количество секунд с 1970 года последней сборки мусора |
-
-
- | go_memstats_lookups_total |
- counter |
- Общее количество поисков указателей |
-
-
- | go_memstats_mallocs_total |
- counter |
- Общее количество выделений памяти |
-
-
- | go_memstats_mcache_inuse_bytes |
- gauge |
- Количество байтов, используемых структурами mcache |
-
-
- | go_memstats_mcache_sys_bytes |
- gauge |
- Количество байтов, используемых структурами mcache, полученных из системы |
-
-
- | go_memstats_mspan_inuse_bytes |
- gauge |
- Количество байтов, используемых структурами mspan |
-
-
- | go_memstats_mspan_sys_bytes |
- gauge |
- Количество байтов, используемых структурами mspan, полученных из системы |
-
-
- | go_memstats_next_gc_bytes |
- gauge |
- Количество байтов кучи при следующей сборке мусора |
-
-
- | go_memstats_other_sys_bytes |
- gauge |
- Количество байтов, используемых для других системных выделений |
-
-
- | go_memstats_stack_inuse_bytes |
- gauge |
- Количество байтов, используемых выделителем стека |
-
-
- | go_memstats_stack_sys_bytes |
- gauge |
- Количество байтов, полученных от системы для выделителя стека |
-
-
- | go_memstats_sys_bytes |
- gauge |
- Количество байтов, полученных от системы |
-
-
- | go_threads |
- gauge |
- Количество созданных ОС потоков |
-
-
- |
- healthcheck
- |
- gauge |
- Индикатор проверки состояния процесса (0 или 1) |
-
-
- |
- process_cpu_seconds_total
- |
- counter |
- Общее количество времени CPU пользователя и системы в секундах |
-
-
- | process_max_fds |
- gauge |
- Максимальное количество открытых дескрипторов файлов |
-
-
- | process_open_fds |
- gauge |
- Количество открытых дескрипторов файлов |
-
-
- |
- process_resident_memory_bytes
- |
- gauge |
- Размер резидентной памяти в байтах |
-
-
- | process_start_time_seconds |
- gauge |
- Время запуска процесса с начала эпохи Unix в секундах |
-
-
- | process_virtual_memory_bytes |
- gauge |
- Размер виртуальной памяти в байтах |
-
-
- | process_virtual_memory_max_bytes |
- gauge |
- Максимальный объем доступной виртуальной памяти в байтах |
-
-
- |
- promhttp_metric_handler_requests_in_flight
- |
- counter |
- Количество обрабатываемых запросов в моменте на ручке /metrics |
-
-
- | promhttp_metric_handler_requests_total |
- counter |
- Котичество запросов на ручку /metrics |
-
-
- |
- server_grpc_connections
- |
- gauge |
- Количество подключенных на данный момент агентов |
-
-
- | server_grpc_response_time_sum |
- histogram |
- Суммарная гистограмма времени ответа по всем методам |
-
-
- | server_grpc_response_time_count |
- histogram |
- Гистограмма времени ответа по каждому методу |
-
-
- | server_grpc_response_time_bucket |
- histogram |
- Гистограмма времени ответа |
-
-
- | server_grpc_methods_started |
- counter |
- Количество заходов в метод |
-
-
- | server_grpc_methods_finished |
- counter |
- Количество выходов из метод |
-
-
- | server_grpc_messages |
- counter |
- Количество полученных и отправленных сообщений |
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/system-requirements.md b/documentation/versioned_docs/version-v1.13.0/tech-docs/system-requirements.md
deleted file mode 100644
index 8eac52ae..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/system-requirements.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-id: installation-system-requirements
----
-
-# Требования
-
-:::info "SGroups совместим с `x86_64`, `amd64`, `armhf`, `arm64`, `s390x` архитектурами."
-:::
-
-Для установки потребуется:
-
-`linux kernel >= 3.10.0`
-
-`nft --version >= v0.9.3 (Topsy)`
-
-`go version >= 1.19`
-
-`postgresql >= 14.8`
-
----
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/terraform/provider.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/terraform/provider.mdx
deleted file mode 100644
index ac54355b..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/terraform/provider.mdx
+++ /dev/null
@@ -1,88 +0,0 @@
----
-id: provider-terraform
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-
-# Установка провайдера
-
-
-
-
-
- Перед развертыванием убедитесь, что у вас установлен [terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli):
-
- ```bash
- terraform -v
- ```
- Далее установкой убедитесь, что вы корректно указали версию,
- установив переменную `VERSION` без символа 'v', а также переменные `OS` и `ARCH`.
-
-
-
-```bash title='Environment setup'
-export VERSION=1.9.1
-export OS=linux
-export ARCH=amd64
-export GIT=https://github.com/H-BF/sgroups/releases/download/v${VERSION}
-export RELEASE_NAME=terraform-provider-sgroups
-export PLUGIN_PATH=~/.terraform.d/plugins/registry.terraform.io/sgroups
-export PROVIDER_PATH=${PLUGIN_PATH}/${VERSION}/${OS}_${ARCH}/${RELEASE_NAME}_v${VERSION}
-mkdir -p ${PLUGIN_PATH}/${VERSION}/${OS}_${ARCH}
-```
-
-```bash title='Install provider'
-wget -O ${PROVIDER_PATH} ${GIT}/${RELEASE_NAME}
-chmod +x ${PROVIDER_PATH}
-```
-
-```bash title='Terraform setup'
-cat <> ~/.terraformrc
-plugin_cache_dir = "${HOME}/.terraform.d/plugin-cache"
-disable_checkpoint = true
-EOF
-```
-
-
-
-
-{' '}
-
-
- Перед развертыванием убедитесь, что вы корректно указали версию, установив переменную `VERSION` без символа 'v', а
- также переменные `OS` и `ARCH`.
-
-
-```bash title='Environment setup'
-export VERSION=1.9.1
-export OS=linux
-export ARCH=amd64
-export RELEASE_NAME=terraform-provider-sgroups
-export PLUGIN_PATH=~/.terraform.d/plugins/registry.terraform.io/sgroups
-export PROVIDER_PATH=${PLUGIN_PATH}/${VERSION}/${OS}_${ARCH}/${RELEASE_NAME}_v${VERSION}
-mkdir -p ${PLUGIN_PATH}/${VERSION}/${OS}_${ARCH}
-```
-
-```bash title='Build provider'
-git clone https://github.com/H-BF/sgroups
-cd sgroups
-make sgroups-tf-v2
-cp bin/${RELEASE_NAME} ${PROVIDER_PATH}
-chmod +x ${PROVIDER_PATH}
-```
-
-```bash title='Terraform setup'
-cat <> ~/.terraformrc
-plugin_cache_dir = "${HOME}/.terraform.d/plugin-cache"
-disable_checkpoint = true
-EOF
-```
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/terraform/spec.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/terraform/spec.mdx
deleted file mode 100644
index 2d13693c..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/terraform/spec.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: spec-terraform
----
-
-# Запуск
-
-
- После установки провайдера, пользователь может приступать к описанию собственных sgroups. В качестве отправной точки,
- воспользуемся готовым шаблоном.
-
-
-```bash title='Install terraform-spec-template'
-git clone https://github.com/H-BF/swarm-spec-template
-cd swarm-spec-template
-```
-
-
- Следующим шагом настроим файл *providers.tf*:
-
- -
- Убедитесь, что вы корректно настроили backend,
- который будет хранить актуальный terraform-state.
-
- -
- Убедитесь, что вы корректно указали версию провайдер в секции required_providers.
-
- -
- Убедитесь, что вы корректно указали IP адресс и порт hbf-server'a.
- Либо укажите данное значение через переменную окружения `SGROUPS_ADDRESS`.
-
- -
- Убедитесь, что вы корректно указали период времени ожидания подключения к серверу.
- Либо укажите данное значение через переменную окружения `SGROUPS_DIAL_DURATION`.
-
-
-
- Далее убедимся в корректной настройке файл *main.tf*:
-
- -
- Убедитесь, что вы корректно настроили параметр source. Важной часть параметра, является то, куда ссылается
- Все возможные варианты описания данного параметра можно найти в официальной документации.
-
-
-
- Воспользуйтесь предоставленными в репозитории sgroups для проверки работоспособности провайдера.
- Для этого выполните команду (важно устанавливать флаг `--parallelism=1`):
-
- ```bash title='Run terraform plan'
- terraform plan --parallelism=1
- ```
- Результатом выполнения команды, должен быть список ресурсов, которые описаны в директории *spec/*.
-
- Следующим шагом будет описание собственных sgroups опираясь, на примеры из документации. Вы можете создавать любую иерархичность в директорию *spec/*, поскольку при описании
- сетевых политик sgroups, они ссылаются *на имена sgroups*, а не на пути расположения файлов до sgroups.
-
- Для того, чтобы применить описанные правила, выполните команду (важно устанавливать флаг `--parallelism=1`):
-
- ```bash title='Run terraform plan'
- terraform apply --auto-approve --parallelism=1
- ```
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/installation.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/installation.mdx
deleted file mode 100644
index 59838080..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/installation.mdx
+++ /dev/null
@@ -1,784 +0,0 @@
----
-id: installation-agent
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-
-# Установка
-
-
- В не зависимости от выбраного вида установки hbf-server, необходимо настроить общие переменные окружения:
-
`HBF_SERVER` - IP-адрес hbf-server.
-
- ```bash title='Setup HBF_SERVER'
- export HBF_SERVER=0.0.0.0
- ```
-
-
`HBF_SERVER_PORT` - порт, используемый hbf-server.
-
- ```bash title='Setup HBF_SERVER_PORT'
- export HBF_SERVER_PORT=9650
- ```
-
-
`DNS_SERVER` - Список доверенных IP-адресов DNS серверов.
-
- ```bash title='Setup DNS_SERVER'
- export DNS_SERVER=['8.8.8.8']
- ```
-
-
`VERSION` - версия агента, которую пользователь хочет установить.
-
- ```bash title='Setup VERSION'
- export VERSION=1.9.1
- ```
-
-
-
-
-
-
-
-{' '}
-
-Перед развертыванием убедитесь, что у вас установлен [docker](https://docs.docker.com/engine/install/):
-
-```bash title='Get docker version'
-docker -v
-```
-
-{' '}
-
-Клонируем репозиторий, переходим в директорию репозитория и переключаемся на тег необходимой версии командой:
-
-```bash title='Git setup'
-git clone https://github.com/H-BF/sgroups
-cd sgroups
-git fetch --tags --all
-git checkout tags/v${VERSION}
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-agent командой:
-
-```bash title='Configuration file setup'
-cat < config-agent.yaml
----
-graceful-shutdown: 10s
-
-logger:
- level: DEBUG
-
-fqdn-rules:
- strategy: dns
-
-extapi:
- svc:
- def-daial-duration: 10s
- sgroups:
- dial-duration: 3s
- address: 'tcp://${HBF_SERVER}:${HBF_SERVER_PORT}'
- sync-status:
- interval: 3s #mandatory
- push: true
-
-netlink:
- watcher: #netlink watcher
- linger: 1s
-
-base-rules:
- networks: ['${HBF_SERVER}/32']
-
-dns:
- nameservers: ${DNS_SERVER}
- proto: tcp
- port: 53
- dial-duration: 3s
- read-duration: 5s #default
- write-duration: 5s #default 5s
- retries: 5 #default 1
- retry-timeout: 3s #default 1s
-
-telemetry:
- useragent: "string"
- endpoint: 0.0.0.0:9660
- metrics:
- enable: true
- healthcheck:
- enable: true
-EOF
-```
-
-{' '}
-
-Собираем образ hbf-agent командой:
-
-```bash
-docker build -f docker/Dockerfile.agent --tag to-nft:v${VERSION} .
-```
-
-{' '}
-
-Запускаем hbf-agent командой:
-
-```bash
-docker run \
--d \
--v ./config-agent.yaml:/opt/swarm/etc/to-nft/config-agent.yaml \
---name hbf-agent \
---entrypoint "/app/bin/to-nft" \
---privileged \
---user=0 \
-to-nft:v${VERSION} -config /opt/swarm/etc/to-nft/config-agent.yaml
-```
-
-
-
-
-
-{' '}
-
-Настроим необходимые переменные окружения командой:
-
-```bash title='Environment setup'
-export PACKAGE_TYPE=deb
-export URL=https://github.com/H-BF/sgroups/releases/download
-export RELEASE=v$VERSION/to-nft-$VERSION-any.$PACKAGE_TYPE
-```
-
-{' '}
-
-Скачиваем и устанавливаем deb-пакет командой:
-
-```bash title='Install deb package'
-sudo wget -O /tmp/to-nft.deb $URL/$RELEASE
-sudo dpkg -i /tmp/to-nft.deb
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-agent командой:
-
-```bash title='Configuration file setup'
-mkdir -p /opt/swarm/etc/to-nft
-cat < /opt/swarm/etc/to-nft/config-agent.yaml
----
-graceful-shutdown: 10s
-
-logger:
- level: DEBUG
-
-fqdn-rules:
- strategy: dns
-
-extapi:
- svc:
- def-daial-duration: 10s
- sgroups:
- dial-duration: 3s
- address: 'tcp://${HBF_SERVER}:${HBF_SERVER_PORT}'
- sync-status:
- interval: 3s #mandatory
- push: true
-
-netlink:
- watcher: #netlink watcher
- linger: 1s
-
-base-rules:
- networks: ['${HBF_SERVER}/32']
-
-dns:
- nameservers: ${DNS_SERVER}
- proto: tcp
- port: 53
- dial-duration: 3s
- read-duration: 5s #default
- write-duration: 5s #default 5s
- retries: 5 #default 1
- retry-timeout: 3s #default 1s
-
-telemetry:
- useragent: "string"
- endpoint: 0.0.0.0:9660
- metrics:
- enable: true
- healthcheck:
- enable: true
-EOF
-```
-
-{' '}
-
-Запустите сервис hbf-server.service командой:
-
-```bash title='Agent service start'
-systemctl enable hbf-agent.service
-systemctl start hbf-agent.service
-```
-
-
-
-
-
- Настроим необходимые переменные окружения командой:
-
-
-```bash title='Environment setup'
-export PACKAGE_TYPE=rpm
-export URL=https://github.com/H-BF/sgroups/releases/download
-export RELEASE=v$VERSION/to-nft-$VERSION-any.$PACKAGE_TYPE
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-agent командой:
-
-```bash title='Configuration file setup'
-mkdir -p /opt/swarm/etc/to-nft
-cat < /opt/swarm/etc/to-nft/config-agent.yaml
----
-graceful-shutdown: 10s
-
-logger:
- level: DEBUG
-
-fqdn-rules:
- strategy: dns
-
-extapi:
- svc:
- def-daial-duration: 10s
- sgroups:
- dial-duration: 3s
- address: 'tcp://${HBF_SERVER}:${HBF_SERVER_PORT}'
- sync-status:
- interval: 3s #mandatory
- push: true
-
-netlink:
- watcher: #netlink watcher
- linger: 1s
-
-base-rules:
- networks: ['${HBF_SERVER}/32']
-
-dns:
- nameservers: ${DNS_SERVER}
- proto: tcp
- port: 53
- dial-duration: 3s
- read-duration: 5s #default
- write-duration: 5s #default 5s
- retries: 5 #default 1
- retry-timeout: 3s #default 1s
-
-telemetry:
- useragent: "string"
- endpoint: 0.0.0.0:9660
- metrics:
- enable: true
- healthcheck:
- enable: true
-EOF
-```
-
-{' '}
-
-Скачиваем и устанавливаем rpm-пакет командой:
-
-```bash title='Install rpm package'
-sudo wget -O /tmp/to-nft.rpm $URL/$RELEASE
-sudo yum localinstall /tmp/to-nft.rpm
-```
-
-{' '}
-
-Запустите сервис hbf-agent.service командой:
-
-```bash title='Agent service start'
-systemctl enable hbf-agent.service
-systemctl start hbf-agent.service
-```
-
-
-
-
-
-{' '}
-
-Перед развертыванием, необходимо создать директории для хранения бинарного файла и файлов конфигурации командой:
-
-```bash title='Environment setup'
-mkdir -p /opt/swarm/sbin
-mkdir -p /opt/swarm/etc/to-nft
-```
-
-{' '}
-
-
- Клонируем репозиторий, переходим в директорию репозитория, переключаемся на тег необходимой версии и Создайте
- необходимые директории командой:
-
-
-```bash title='Git setup'
-git clone https://github.com/H-BF/sgroups
-cd sgroups
-git fetch --tags --all
-git checkout tags/v${VERSION}
-make to-nft platform=linux/amd64
-cp bin/to-nft /opt/swarm/sbin/hbf-agent
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-agent командой:
-
-```bash title='Configuration file setup'
-cat < /opt/swarm/etc/to-nft/config-agent.yaml
----
-graceful-shutdown: 10s
-
-logger:
- level: DEBUG
-
-fqdn-rules:
- strategy: dns
-
-extapi:
- svc:
- def-daial-duration: 10s
- sgroups:
- dial-duration: 3s
- address: 'tcp://${HBF_SERVER}:${HBF_SERVER_PORT}'
- sync-status:
- interval: 3s #mandatory
- push: true
-
-netlink:
- watcher: #netlink watcher
- linger: 1s
-
-base-rules:
- networks: ['${HBF_SERVER}/32']
-
-dns:
- nameservers: ${DNS_SERVER}
- proto: tcp
- port: 53
- dial-duration: 3s
- read-duration: 5s #default
- write-duration: 5s #default 5s
- retries: 5 #default 1
- retry-timeout: 3s #default 1s
-
-telemetry:
- useragent: "string"
- endpoint: 0.0.0.0:9660
- metrics:
- enable: true
- healthcheck:
- enable: true
-EOF
-```
-
-{' '}
-
-Создайте конфигурационный файл для hbf-server.agent командой:
-
-```bash title='Agent service setup'
-cat < /etc/systemd/system/hbf-agent.service
-[Unit]
-Description=hbf agent
-After=network.target
-
-[Service]
-ExecStart=/opt/swarm/sbin/hbf-agent --config=/opt/swarm/etc/to-nft/config-agent.yaml
-Restart=always
-RestartSec=5
-Delegate=yes
-KillMode=process
-OOMScoreAdjust=-999
-LimitNOFILE=1048576
-LimitNPROC=infinity
-LimitCORE=infinity
-
-[Install]
-WantedBy=multi-user.target
-EOF
-```
-
-{' '}
-
-Запустите сервис hbf-server.service командой:
-
-```bash title='Agent service start'
-systemctl enable hbf-agent.service
-systemctl start hbf-agent.service
-```
-
-
-
-
-
- Перед развертыванием убедитесь, что у вас установлен [ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html):
-
- ```bash
- ansible-playbook --version
- ```
- Далее убедитесь, что вы корректно указали версию, установив переменную `VERSION` без символа 'v'.
- Следующим шагом склонируйте репозиторий:
-
-
-
-```bash
-git clone https://github.com/H-BF/ansible
-cd ansible
-git fetch --tags --all
-git checkout tags/v${VERSION}
-```
-
-#### Требования
-
-{' '}
-
-
- Перед выполнением ansible-playbook убедитесь, что текущая версия дистрибутива ОС имеет необходимый пакет
- linux-headers. Как пример, на Ubuntu/Debian, вы можете проверить это с помощью команды:
-
-
-```bash
-apt search linux-headers-$(uname -r)
-```
-
-В случае, если такой пакет существует вывод будет следующим:
-
-```bash
-Sorting... Done
-Full Text Search... Done
-linux-headers-5.10.0-26-amd64/oldstable, now 5.10.197-1 amd64 [installed]
- Header files for Linux 5.10.0-26-amd64
-```
-
-{' '}
-
-
- Сообщение `linux-headers-5.10.0-26-amd64/oldstable, now 5.10.197-1 amd64 [installed]` говорит о том, что необходимый
- пакет заголовков найден. В противном случае необходимо обновить версию ядра до ближайшей версии имеющей пакет
- `linux-headers-$(uname -r)`
-
-
-#### Использование
-
-{' '}
-
-
- Перед запуском плейбука убедитесь, что вы добавили необходимые хосты в `env/hosts`. Чтобы выполнить плейбук,
- запустите:
-
-
-```bash
-ansible-playbook main.yaml
-```
-
-#### Удаление
-
-
- Чтобы удалить определенные компоненты hbf-agent, установите переменную `_enabled: false`.
- Если вы удаляете сам _hbf-agent_, все правила, созданные им в _nft_, будут автоматически удалены.
-
-
-
-
-
-#### Параметры конфигурационного файла
-
-
- Для настройки агентов требуется использовать конфигурационный файл, который содержит поля, позволяющие настраивать
- параметры в соответствии с потребностями пользователей. Так же есть алтьтернативный способ - переменные окружения.
- Обратите внимание, что переменные окружения являются более приоритетными, чем параметры из файла. Так же часть
- параметров можно настроить через файл, а часть через переменные окружения.
-
-
-
-
- Параметры файла config-agent.yaml
-
-
- | Параметр / Переменная окружения |
- Описание |
- Тип |
- Обязательно |
-
-
-
-
- |
- exit-on-success
- `NFT_EXIT_ON_SUCCESS`
- |
- Завершение процесса, если успешно применилась конфигурация для nft. Значение по умолчанию: `false`. |
- Boolean |
- Нет |
-
-
- |
- continue-on-failure
- `NFT_CONTINUE_ON_FAILURE`
- |
-
- В случае ошибки на уровне job, агент не завершает свою работу (идет на цикл перезапуска своих job). Значение
- по умолчанию: `true`
- |
- Boolean |
- Нет |
-
-
- |
- logger.level
- `NFT_LOGGER_LEVEL`
- |
- Уровень логгирования. Допустимые значения: `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `FATAL`, `PANIC`. |
- String |
- Нет |
-
-
- |
- graceful-shutdown
- `NFT_GRACEFUL_SHUTDOWN`
- |
-
- Определяет период времени, в течение которого процесс агента должен корректно завершиться. По истечению
- периода, процесс завершиться с кодом 1. Значение по умолчанию: `10s`
- |
- String |
- Нет |
-
-
- |
- netns
- `NFT_NETNS`
- |
- Имя сетевого namespac'a. |
- String |
- Нет |
-
-
- |
- netlink.watcher.linger
- `NFT_NETLINK_WATCHER_LINGER`
- |
- Время, в течение которого из netlink'а ожидаются события. Минимальное значение: `1s`. |
- String |
- |
-
-
- |
- base-rules.networks
- `NFT_BASE_RULES_NETWORKS`
- |
-
- Список IP адресов, к которым всегда должен egress быть доступ. Не рекомендуется устанавливать в качестве
- значения пустой список.
- |
- List |
- Да |
-
-
- |
- fqdn-rules.strategy
- `NFT_FQDN_RULES_STRATEGY`
- |
-
- Способ обработки fqdn-правил. Значение по умолчанию: `dns`. Допустимые значения: `dns`, `ndpi`, `combine`.
- |
- String |
- Нет |
-
-
- |
- dns.nameservers
- `NFT_DNS_NAMESERVERS`
- |
- Список доверенных IP-адресов DNS серверов. |
- List |
- Да |
-
-
- |
- dns.proto
- `NFT_DNS_PROTO`
- |
-
- Протокол L4, используемый DNS сервером. Значение по умолчанию: `udp`. Допустимые значения: `udp`, `tcp`.
- |
- String |
- Да |
-
-
- |
- dns.port
- `NFT_DNS_PORT`
- |
- Порт, используемый DNS сервером. Значение по умолчанию: `53`. |
- Int |
- Да |
-
-
- |
- dns.retries
- `NFT_DNS_RETRIES`
- |
- Количество повторных запросов к DNS серверу при сбое. Значение по умолчанию: `3`. |
- Int |
- Нет |
-
-
- |
- dns.retry-timeout
- `NFT_DNS_RETRY_TIMEOUT`
- |
- Период между повторным запросом DNS сервера при сбое. Значение по умолчанию: `1s`. |
- String |
- Нет |
-
-
- |
- dns.dial-duration
- `NFT_DNS_DIAL_DURATION`
- |
- Период времени подключения к DNS серверу. Значение по умолчанию: `3s`. |
- String |
- Нет |
-
-
- |
- dns.write-duration
- `NFT_DNS_WRITE_DURATION`
- |
-
- Максимальное временя ожидания ответа от DNS сервера при запросе резолва FQDN. Значение по умолчанию: `5s`.
- |
- String |
- Нет |
-
-
- |
- dns.read-duration
- `NFT_DNS_READ_DURATION`
- |
- Максимальное временя ожидания ответа от DNS сервера. Значение по умолчанию: `5s`. |
- String |
- Нет |
-
-
- |
- extapi.svc.def-dial-duration
- `NFT_EXTAPI_SVC_DEF_DIAL_DURATION`
- |
- Длительность ожидания подключения к службе. |
- String |
- Нет |
-
-
- |
- extapi.svc.sgroups.address
- `NFT_EXTAPI_SVC_SGROUPS_ADDRESS`
- |
- IP адрес hbf-сервера. |
- String |
- Да |
-
-
- |
- extapi.svc.sgroups.dial-duration
- `NFT_EXTAPI_SVC_SGROUPS_DIAL_DURATION`
- |
- Продолжительность ожидания подключения к hbf-серверу. |
- String |
- Нет |
-
-
- |
- extapi.svc.sgroups.sync-status.interval
- `NFT_EXTAPI_SVC_SGROUPS_SYNC_STATUS_INTERVAL`
- |
- Период синхронизации с hbf-сервером. Значение по умолчанию: `10s`. |
- String |
- Да |
-
-
- |
- extapi.svc.sgroups.sync-status.push
- `NFT_EXTAPI_SVC_SGROUPS_SYNC_STATUS_PUSH`
- |
- Использовать push модель для синхронизации с hbf-сервером. Значение по умолчанию: `false`. |
- Boolean |
- Нет |
-
-
- |
- telemetry.endpoint
- `NFT_TELEMETRY_ENDPOINT`
- |
- IP адрес и порт, для доступа к метрикам. Рекомендуемое значение: `0.0.0.0:9660`. |
- String |
- Нет |
-
-
- |
- telemetry.metrics.enable
- `NFT_TELEMETRY_METRICS_ENABLE`
- |
-
- Включить/Отключить возможность получения метрик. Значение по умолчанию: `true`. Пример получения метрик: `curl
- 0.0.0.0:9660/metrics`.
- |
- Boolean |
- Нет |
-
-
- |
- telemetry.healthcheck.enable
- `NFT_TELEMETRY_HEALTHCHECK_ENABLE`
- |
-
- Включить/Отключить возможность получения информации о статусе hbf-агента. Значение по умолчанию: `true`.
- Пример получения статуса: `curl 0.0.0.0:9660/healthcheck`.
- |
- Boolean |
- Нет |
-
-
- |
- telemetry.useragent
- `NFT_TELEMETRY_USERAGENT`
- |
- Позволяет устанавливать метку в параметры метрик |
- String |
- Нет |
-
-
- |
- telemetry.profile.enable
- `NFT_TELEMETRY_PROFILE_ENABLE`
- |
-
- Включить/Отключить возможность получения профиля hbf-агента. Значение по умолчанию: `true`. Пример получения
- профиля: `curl 0.0.0.0:9660/debug/pprof/goroutine?debug=2`.
- |
- Boolean |
- Нет |
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/monitoring.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/monitoring.mdx
deleted file mode 100644
index 59da4964..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/monitoring.mdx
+++ /dev/null
@@ -1,235 +0,0 @@
----
-id: monitoring
----
-
-# Мониторинг
-
-
- Информация о состоянии агента на различных узлах основывается на метриках. В таблице ниже предоставлены доступные
- метрики и их описания.{' '}
-
- Зеленым
-
- цветом выделены ключевые метрики.
-
-
-
-
-
-
- | Название метрики |
- Тип метрики |
- Описание |
-
-
-
-
- |
- agent_applied_configs
- |
- counter |
- Количество успешно примененных конфигураций |
-
-
- | go_gc_duration_seconds |
- summary |
- Сводка длительности паузы циклов сборки мусора |
-
-
- | go_gc_duration_seconds_sum |
- counter |
- Сумма длительности паузы циклов сборки мусора |
-
-
- | go_gc_duration_seconds_count |
- counter |
- Количество циклов сборки мусора |
-
-
- | go_goroutines |
- gauge |
- Количество горутин, существующих в данный момент |
-
-
- |
- go_info
- |
- gauge |
- Информация о среде выполнения Go |
-
-
- | go_memstats_alloc_bytes |
- gauge |
- Количество выделенных и еще используемых байтов |
-
-
- | go_memstats_alloc_bytes_total |
- counter |
- Общее количество выделенных байтов, даже если они освобождены |
-
-
- | go_memstats_buck_hash_sys_bytes |
- gauge |
- Количество байтов, используемых хэш-таблицей профилирования |
-
-
- | go_memstats_frees_total |
- counter |
- Общее количество освобождений |
-
-
- | go_memstats_gc_sys_bytes |
- gauge |
- Количество байтов, используемых для метаданных системы сборки мусора |
-
-
- | go_memstats_heap_alloc_bytes |
- gauge |
- Количество выделенных байтов кучи и еще используемых |
-
-
- | go_memstats_heap_idle_bytes |
- gauge |
- Количество байтов кучи в ожидании использования |
-
-
- | go_memstats_heap_inuse_bytes |
- gauge |
- Количество используемых байтов кучи |
-
-
- | go_memstats_heap_objects |
- gauge |
- Количество выделенных объектов |
-
-
- | go_memstats_heap_released_bytes |
- gauge |
- Количество байтов кучи, освобожденных в ОС |
-
-
- | go_memstats_heap_sys_bytes |
- gauge |
- Количество байтов кучи, полученных от системы |
-
-
- | go_memstats_last_gc_time_seconds |
- gauge |
- Количество секунд с 1970 года последней сборки мусора |
-
-
- | go_memstats_lookups_total |
- counter |
- Общее количество запросов указателей |
-
-
- | go_memstats_mallocs_total |
- counter |
- Общее количество выделений памяти |
-
-
- | go_memstats_mcache_inuse_bytes |
- gauge |
- Количество байтов, используемых структурами mcache |
-
-
- | go_memstats_mcache_sys_bytes |
- gauge |
- Количество байтов, используемых структурами mcache, полученных от системы |
-
-
- | go_memstats_mspan_inuse_bytes |
- gauge |
- Количество байтов, используемых структурами mspan |
-
-
- | go_memstats_mspan_sys_bytes |
- gauge |
- Количество байтов, используемых структурами mspan, полученных от системы |
-
-
- | go_memstats_next_gc_bytes |
- gauge |
- Количество байтов кучи, когда произойдет следующая сборка мусора |
-
-
- | go_memstats_other_sys_bytes |
- gauge |
- Количество байтов, используемых для других системных выделений |
-
-
- | go_memstats_stack_inuse_bytes |
- gauge |
- Количество байтов, используемых аллокатором стека |
-
-
- | go_memstats_stack_sys_bytes |
- gauge |
- Количество байтов, полученных от системы для аллокатора стека |
-
-
- | go_memstats_sys_bytes |
- gauge |
- Количество байтов, полученных от системы |
-
-
- | go_threads |
- gauge |
- Количество созданных потоков ОС |
-
-
- |
- healthcheck
- |
- gauge |
- Индикатор проверки состояния процесса (0 или 1) |
-
-
- |
- process_cpu_seconds_total
- |
- counter |
- Общее количество времени процессора, затраченного в секундах |
-
-
- | process_max_fds |
- gauge |
- Максимальное количество открытых файловых дескрипторов |
-
-
- | process_open_fds |
- gauge |
- Количество открытых файловых дескрипторов |
-
-
- |
- process_resident_memory_bytes
- |
- gauge |
- Размер резидентной памяти в байтах |
-
-
- | process_start_time_seconds |
- gauge |
- Время запуска процесса с начала эпохи Unix в секундах |
-
-
- | process_virtual_memory_bytes |
- gauge |
- Размер виртуальной памяти в байтах |
-
-
- | process_virtual_memory_max_bytes |
- gauge |
- Максимальное количество виртуальной памяти в байтах |
-
-
- |
- promhttp_metric_handler_errors_total
- |
- counter |
- Общее количество http ошибок, выявленных обработчиком |
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/chains.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/chains.mdx
deleted file mode 100644
index 2b62b3ad..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/chains.mdx
+++ /dev/null
@@ -1,498 +0,0 @@
----
-id: chains
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-
-# Chains
-
-
- В нашей реализации структуры мы вводим для INPUT и OUTPUT понятие 2-х цепочек. *Первая* цепочка является точкой входа
- для пакетов из сетевого стека, в ней указывается хук (input, prerouting, postrouting) и приоритет выполнения, так же
- эта цепочка используется для маршрутизации в последующие цепочки по принадлежности к той или иной Security Group.
- *Вторая* цепочка содержит наборы правил, относящиеся только к конкретной Security Group.
-
-
-
-
-
- | Наименование цепочки |
- Тип |
- Описание |
-
-
-
-
- | INGRESS-INPUT |
- Ingress |
-
- Первая цепочка является точкой входа для пакетов из сетевого стека, в ней указывается хук (input) и
- приоритет выполнения 0 (filter). Так же используется для маршрутизации в последующие цепочки по принадлежности к
- той или иной Security Group.
- |
-
-
- | INGRESS-INPUT-$sgName |
- Ingress |
-
- Вторая цепочка содержит наборы правил, относящиеся только к конкретной Security Group.
- |
-
-
- | EGRESS-POSTROUTING |
- Egress |
-
- Первая цепочка является точкой входа для пакетов из сетевого стека, в ней указывается хук (postrouting) и
- приоритет выполнения 300. Так же используется для маршрутизации в последующие цепочки по принадлежности к той
- или иной Security Group.
- |
-
- {/*
- |
- FW-OUT-POSTROUTING-DPI-$sgName
- |
- Egress |
-
- Вторая цепочка содержит набор s2f правил при включённом режиме "DPI" и данные правила относятся только к
- конкретной Security Group
- |
-
*/}
-
- |
- EGRESS-POSTROUTING-$sgName
- |
- Egress |
-
- Вторая цепочка содержит наборы правил, относящиеся только к конкретной Security Group.
- |
-
-
-
-
-
-
-
- #### Описание
-
- Правило перехода в цепочку `INGRESS-INPUT-sgName` с проверкой что трафик является входящим и предназначен для указанной Security Group.
-
-
- #### Параметры
-
-
-
-
-
- | Шаблон параметра |
- Структура параметра |
- Значение |
- Описание |
-
-
-
-
- | $BaseRules |
- |
- |
-
-
- Base Rules - набор правил, которые прописываются статично из конфиграционнного файла агента для того что бы всегда был доступ до высококритичных сервисов таких как HBF и DNS.
-
- Подробнее: [Config Base Rules](./config-base-rules.mdx)
- |
-
-
- | $RuleType |
- `ip` |
- |
- Указатель на трафик типа IP |
-
-
- | $DstSgroup |
- `daddr` |
- `@${IPSet({sgName})}` |
- Значение типа string, не должно содержать в себе пробелов |
-
-
- | $sgName |
- |
- |
- Название Security Group |
-
-
- | $Counter |
- `counter` |
- ` packets 0 bytes 0` |
- Счетчик, учитывает количество пройденных пакетов с количеством байтов переданной информации в рамках указанной цепочки правил |
-
-
- | $PolicyVerdict |
- `policy` |
- `drop` |
-
-
- Policy $Verdict устанавливается для цепочек с целью установки базового правила, которое будет применено к пакету если установленное правило не удовлетворили условия. По умолчанию drop.
-
- Подробнее: [Verdict statement](./verdict-statement.mdx)
- |
-
-
- | $Verdict |
- |
- `goto` |
-
-
- Так как данное правило используется для проверки типа трафика то переход на другую цепочку правил происходит только с помощью goto.
-
- Подробнее: [Verdict statement](./verdict-statement.mdx)
- |
-
-
- | $Hook |
- `hook` |
- input |
- Приоритет выполнения цепочки характеризующий стадию прохождения трафика |
-
-
- | $HookPriority |
- `priority` |
- 0 |
- Приоритет выполнения цепочки одного типа |
-
-
-
-
-
- #### Шаблон
-
- ```hcl
- chain INGRESS-INPUT {
- type filter $Hook $HookPriority; $PolicyVerdict;
- $BaseRules
- # **********
- $RuleType $DstSgroup $Counter $Verdict INGRESS-INPUT-$sgName
- # **********
- $Counter
- }
- ```
-
- #### Пример использования
-
- ```hcl
- chain INGRESS-INPUT {
- type filter hook input priority 0; policy drop;
- ip saddr { 1.1.1.1, 2.2.2.2} accept
- # **********
- ip daddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto INGRESS-INPUT-exampleSG
- # **********
- counter packets 0 bytes 0
- }
- ```
-
- ```hcl
- table inet main-1705582480 {
-
- chain INGRESS-INPUT {
- type filter hook input priority filter; policy drop;
- ip saddr { 1.1.1.1, 2.2.2.2} accept
- # ******
- ip daddr @NetIPv4-no-routed counter packets 0 bytes 0 goto INGRESS-INPUT-no-routed
- ip daddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto INGRESS-INPUT-exampleSG
- counter packets 0 bytes 0
- }
-
- chain INGRESS-INPUT-no-routed {
- ct state established,related counter packets 0 bytes 0 accept
- # ******
- counter packets 0 bytes 0 accept
- }
-
- chain INGRESS-INPUT-exampleSG {
- ct state established,related counter packets 0 bytes 0 accept
- # ******
- counter packets 0 bytes 0 accept
- }
-
- }
- ```
-
-
- #### Описание
-
-
- Правило перехода в цепочку `EGRESS-POSTROUTING-$sgName` с проверкой что трафик является исходящим и предназначен для
- указанной Security Group.
-
-
- #### Параметры
-
-
-
-
-
- | Шаблон параметра |
- Структура параметра |
- Значение |
- Описание |
-
-
-
-
- | $BaseRules |
- |
- |
-
-
- Base Rules - набор правил, которые прописываются статично из конфиграционнного файла агента для того что бы всегда был доступ до высококритичных сервисов таких как HBF и DNS.
-
- Подробнее: [Config Base Rules](./config-base-rules.mdx)
- |
-
-
- | $RuleType |
- `ip` |
- |
- Указатель на трафик типа IP |
-
-
- | $SrcSgroup |
- `saddr` |
- `@${IPSet({sgName})}` |
- Значение типа string, не должно содержать в себе пробелов |
-
-
- | $sgName |
- |
- |
- Название Security Group |
-
-
- | $Counter |
- `counter` |
- `packets 0 bytes 0` |
- Счетчик, учитывает количество пройденных пакетов с количеством байтов переданной информации в рамках указанной цепочки правил |
-
-
- | $PolicyVerdict |
- `policy` |
- `drop` |
-
-
- Policy $Verdict устанавливается для цепочек с целью установки базового правила, которое будет применено к пакету если установленное правило не удовлетворили условия. По умолчанию drop.
-
- Подробнее: [Verdict statement](./verdict-statement.mdx)
- |
-
-
- | $Verdict |
- |
- `goto` |
-
-
- Так как данное правило используется для проверки типа трафика то переход на другую цепочку правил происходит только с помощью goto.
-
- Подробнее: [Verdict statement](./verdict-statement.mdx)
- |
-
-
- | $Hook |
- `hook` |
- input |
- Приоритет выполнения цепочки характерезующий стадию прохождения трафика |
-
-
- | $HookPriority |
- `priority` |
- 0 |
- Приоритет выполнения цепочки одного типа |
-
-
-
-
-
- #### Шаблон
-
- ```hcl
- chain EGRESS-POSTROUTING {
- type filter $Hook $HookPriority; $PolicyVerdict;
- $BaseRules
- # **********
- $RuleType $SrcSgroup $Counter $Verdict EGRESS-POSTROUTING-$sgName
- # **********
- $Counter
- }
- ```
-
- #### Пример использования
-
- ```hcl
- chain EGRESS-POSTROUTING {
- type filter hook postrouting priority 300; policy drop;
- ip daddr { 1.1.1.1, 2.2.2.2} accept
- # **********
- ip saddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto EGRESS-POSTROUTING-exampleSG
- # **********
- counter packets 0 bytes 0
- }
- ```
-
- ```hcl
- table inet main-1705582480 {
-
- chain EGRESS-POSTROUTING {
- type filter hook postrouting priority 300; policy drop;
- ip daddr { 1.1.1.1, 2.2.2.2} accept
- # **********
- ip saddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto EGRESS-POSTROUTING-exampleSG
- ip saddr @NetIPv4-no-routed counter packets 0 bytes 0 goto EGRESS-POSTROUTING-no-routed
- counter packets 0 bytes 0
- }
-
- chain EGRESS-POSTROUTING-no-routed {
- ct state established,related counter packets 0 bytes 0 accept
- # ******
- counter packets 0 bytes 0 accept
- }
-
- chain EGRESS-POSTROUTING-exampleSG {
- ct state established,related counter packets 0 bytes 0 accept
- # ******
- counter packets 0 bytes 0 accept
- }
- ```
-
- {/*
- #### Описание
-
-
- Правило перехода в цепочку FW-OUT-POSTROUTING-DPI-$sgName при включённом режиме "DPI" для Egress
- Security Group to FQDN правила и в цепочку FW-OUT-POSTROUTING-$sgName для всех остальных правил с
- проверкой что трафик является исходящим и предназначен для указанной Security Group.
-
-
- #### Параметры
-
-
-
-
-
- | Шаблон параметра |
- Структура параметра |
- Значение |
- Описание |
-
-
-
-
- | $\{RuleType\} |
- `ip` |
- |
- Описывает, что принимает трафик типа ip |
-
-
- | $\{SrcSgroup\} |
-
- `saddr @${IPSet({sgName})}`
- |
- Наименование IPSet в котором описаны сети от Security Group |
- Значение типа string, не должно содержать в себе пробелов |
-
-
- | $\{sgName\} |
- |
- |
- Название Security Group |
-
-
- | $\{Counter\} |
-
- `counter packets 0 bytes 0`
- |
- Не параметризированный |
- Счетчик, учитывает количество пройденных пакетов с количеством байтов переданной информации в рамках указанной цепочки правил |
-
-
- | $\{Verdict\} |
-
- `goto {chainName} | jump {chainName}`
- |
-
- Не параметризированный
-
-
- * При включённом режиме "DPI" для Egress Security Group to FQDN переход происходит с помощью jump. Для всех остальных правил переход на другую цепочку правил происходит с помощью goto.
-
- Подробнее: [Verdict statement](./verdict-statement.mdx)
- |
- Вердикт политики по пакетам данных |
-
-
- | $\{HookPriority\} |
-
- `priority {IntValue}`
- |
- 0 |
- Приоритет выполнения цепочки одного типа |
-
-
-
-
-
- #### Шаблон
-
- ```hcl
- chain FW-OUT-POSTROUTING {
- type filter ${Hook} ${HookPriority}; policy accept;
- # **********
- ${RuleType} ${SrcSgroup} ${Counter} ${Verdict} FW-OUT-POSTROUTING-DPI-${sgName}
- ${RuleType} ${SrcSgroup} ${Counter} ${Verdict} FW-OUT-POSTROUTING-${sgName}
- # **********
- ${Counter}
- }
- ```
-
- #### Пример использования
-
- ```hcl
- chain FW-OUT-POSTROUTING {
- type filter hook postrouting priority 300; policy accept;
- # **********
- ip saddr @NetIPv4-exampleSG counter packets 0 bytes 0 jump FW-OUT-POSTROUTING-DPI-exampleSG
- ip saddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto FW-OUT-POSTROUTING-exampleSG
- # **********
- counter packets 0 bytes 0 drop
- }
- ```
- ---
-
- ```hcl
- table inet main-1705582480 {
-
- chain FW-OUT-POSTROUTING {
- type filter hook postrouting priority 300; policy accept;
- # **********
- ip saddr @NetIPv4-exampleSG counter packets 0 bytes 0 goto FW-OUT-POSTROUTING-exampleSG
- drop
- }
-
- chain FW-OUT-POSTROUTING-DPI-exampleSG {
- # **********
- }
-
- chain FW-OUT-POSTROUTING-exampleSG {
- ct state established,related counter packets 0 bytes 0 accept
- # ******
- counter packets 0 bytes 0 accept
- }
- ```
- */}
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/config-base-rules.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/config-base-rules.mdx
deleted file mode 100644
index c361943a..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/config-base-rules.mdx
+++ /dev/null
@@ -1,101 +0,0 @@
----
-id: config-base-rules
----
-
-# Config Base Rules
-
-## Описание
-
-
- Base Rules - набор правил, которые прописываются статично из конфиграционнного файла агента для того что бы всегда был
- доступ до высококритичных сервисов таких как HBF и DNS.
-
-
-## Параметры
-
-
-
-
-
- | Шаблон параметра |
- Структура параметра |
- Значение |
- Описание |
-
-
-
-
- | $\{SrcCIDR\} |
-
- `saddr {CIDR}`
- |
- Массив подсетей |
- Список сетей в которые разрешаем трафик |
-
-
- | $\{DstCIDR\} |
-
- `daddr {CIDR}`
- |
- Массив подсетей |
- Список сетей в которые разрешаем трафик |
-
-
- | $\{RuleType\} |
- `ip` |
- |
- Описывает, что принимает трафик типа ip |
-
-
- | $\{Verdict\} |
- `accept` |
-
- Не параметризированный
-
-
- * Так как данное правило используется для проверки типа трафика то переход на другую цепочку правил происходит только с помощью goto.
-
- Подробнее: [Verdict statement](./verdict-statement.mdx)
- |
- Вердикт политики по пакетам данных |
-
-
-
-
-
-## Конфигурационный файл
-
-```yaml
-base-rules:
- networks:
- - '1.1.1.1'
- - '2.2.2.2'
-```
-
-## Шаблон
-
-```
-chain EGRESS-POSTROUTING {
- ${RuleType} ${DstCIDR} ${Verdict}
- # **********
-}
-
-chain INGRESS-INPUT {
- ${RuleType} ${SrcCIDR} ${Verdict}
- # **********
-}
-```
-
-## Пример использования
-
-```
-chain EGRESS-POSTROUTING {
- ip daddr { 1.1.1.1, 2.2.2.2} accept
- # **********
-}
-
-chain INGRESS-INPUT {
- ip saddr { 1.1.1.1, 2.2.2.2} accept
- # **********
-}
-```
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/icmp-desciptions.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/icmp-desciptions.mdx
deleted file mode 100644
index d30e1c58..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/icmp-desciptions.mdx
+++ /dev/null
@@ -1,394 +0,0 @@
----
-id: icmp-desciptions
----
-
-# ICMP Дескрипторы
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-
-
-
-
-
-
- | Значение |
- Дескриптор |
-
-
-
-
- | 0 |
- Echo Reply |
-
-
- | 1 |
- Unassigned |
-
-
- | 2 |
- Unassigned |
-
-
- | 3 |
- Destination Unreachable |
-
-
- | 4 |
- Source Quench (Deprecated) |
-
-
- | 5 |
- Redirect |
-
-
- | 6 |
- Alternate Host Address (Deprecated) |
-
-
- | 7 |
- Unassigned |
-
-
- | 8 |
- Echo |
-
-
- | 9 |
- Router Advertisement |
-
-
- | 10 |
- Router Solicitation |
-
-
- | 11 |
- Time Exceeded |
-
-
- | 12 |
- Parameter Problem |
-
-
- | 13 |
- Timestamp |
-
-
- | 14 |
- Timestamp Reply |
-
-
- | 15 |
- Information Request (Deprecated) |
-
-
- | 16 |
- Information Reply (Deprecated) |
-
-
- | 17 |
- Address Mask Request (Deprecated) |
-
-
- | 18 |
- Address Mask Reply (Deprecated) |
-
-
- | 19 |
- Reserved (for Security) |
-
-
- | 20-29 |
- Reserved (for Robustness Experiment) |
-
-
- | 30 |
- Traceroute (Deprecated) |
-
-
- | 31 |
- Datagram Conversion Error (Deprecated) |
-
-
- | 32 |
- Mobile Host Redirect (Deprecated) |
-
-
- | 33 |
- IPv6 Where-Are-You (Deprecated) |
-
-
- | 34 |
- IPv6 I-Am-Here (Deprecated) |
-
-
- | 35 |
- Mobile Registration Request (Deprecated) |
-
-
- | 36 |
- Mobile Registration Reply (Deprecated) |
-
-
- | 37 |
- Domain Name Request (Deprecated) |
-
-
- | 38 |
- Domain Name Reply (Deprecated) |
-
-
- | 39 |
- SKIP (Deprecated) |
-
-
- | 40 |
- Photuris |
-
-
- | 41 |
- ICMP messages utilized by experimental mobility protocols such as Seamoby |
-
-
- | 42 |
- Extended Echo Request |
-
-
- | 43 |
- Extended Echo Reply |
-
-
- | 44-252 |
- Unassigned |
-
-
- | 253 |
- RFC3692-style Experiment 1 |
-
-
- | 254 |
- RFC3692-style Experiment 2 |
-
-
- | 255 |
- Reserved |
-
-
-
-
-
-
-
-
- | Значение |
- Дескриптор |
-
-
-
-
- | 0 |
- Reserved |
-
-
- | 1 |
- Destination Unreachable |
-
-
- | 2 |
- Packet Too Big |
-
-
- | 3 |
- Time Exceeded |
-
-
- | 4 |
- Parameter Problem |
-
-
- | 5-99 |
- Unassigned |
-
-
- | 100 |
- Private experimentation |
-
-
- | 101 |
- Private experimentation |
-
-
- | 102-126 |
- Unassigned |
-
-
- | 127 |
- Reserved for expansion of ICMPv6 error messages |
-
-
- | 128 |
- Echo Request |
-
-
- | 129 |
- Echo Reply |
-
-
- | 130 |
- Multicast Listener Query |
-
-
- | 131 |
- Multicast Listener Report |
-
-
- | 132 |
- Multicast Listener Done |
-
-
- | 133 |
- Router Solicitation |
-
-
- | 134 |
- Router Advertisement |
-
-
- | 135 |
- Neighbor Solicitation |
-
-
- | 136 |
- Neighbor Advertisement |
-
-
- | 137 |
- Redirect Message |
-
-
- | 138 |
- Router Renumbering |
-
-
- | 139 |
- ICMP Node Information Query |
-
-
- | 140 |
- ICMP Node Information Response |
-
-
- | 141 |
- Inverse Neighbor Discovery Solicitation Message |
-
-
- | 142 |
- Inverse Neighbor Discovery Advertisement Message |
-
-
- | 143 |
- Version 2 Multicast Listener Report |
-
-
- | 144 |
- Home Agent Address Discovery Request Message |
-
-
- | 145 |
- Home Agent Address Discovery Reply Message |
-
-
- | 146 |
- Mobile Prefix Solicitation |
-
-
- | 147 |
- Mobile Prefix Advertisement |
-
-
- | 148 |
- Certification Path Solicitation Message |
-
-
- | 149 |
- Certification Path Advertisement Message |
-
-
- | 150 |
- ICMP messages utilized by experimental mobility protocols such as Seamoby |
-
-
- | 151 |
- Multicast Router Advertisement |
-
-
- | 152 |
- Multicast Router Solicitation |
-
-
- | 153 |
- Multicast Router Termination |
-
-
- | 154 |
- FMIPv6 Messages |
-
-
- | 155 |
- RPL Control Message |
-
-
- | 156 |
- ILNPv6 Locator Update Message |
-
-
- | 157 |
- Duplicate Address Request |
-
-
- | 158 |
- Duplicate Address Confirmation |
-
-
- | 159 |
- MPL Control Message |
-
-
- | 160 |
- Extended Echo Request |
-
-
- | 161 |
- Extended Echo Reply |
-
-
- | 162-199 |
- Unassigned |
-
-
- | 200 |
- Private experimentation |
-
-
- | 201 |
- Private experimentation |
-
-
- | 202-254 |
- Unassigned |
-
-
- | 255 |
- Reserved for expansion of ICMPv6 informational messages |
-
-
-
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/ip-set.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/ip-set.mdx
deleted file mode 100644
index 6feb87b8..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/ip-set.mdx
+++ /dev/null
@@ -1,110 +0,0 @@
----
-id: ipset
----
-
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-
-# IPSet
-
-## Описание
-
-
- IPSet представляет собой структуру данных, позволяющую хранить и организовывать множество элементов для использования
- в правилах nftables. Он используется для обработки больших списков элементов с минимальными затратами на ресурсы. В
- нашем случае IPSet формируется для описания массива IP-адресов, относящихся к FQDN или Security Groups, для
- дальнейшего использования в описаниях правил.
-
-
-
-
-
-
- | Наименование параметра |
- Описание |
- Значения |
-
-
-
-
- | IPSet_Name |
- Наименование IPSet |
-
- Должно соответствовать одному из шаблонов:
-
- - NetIPv4-$\{NAME\} - для описания массивов IP адресов типа v4
- - NetIPv6-$\{NAME\} - для описания массивов IP адресов типа v6
-
- |
-
-
- | type |
- Описывает тип данных |
-
- Могут быть установлены следующие значения:
-
- - ipv4_addr - для описания массивов IP адресов типа v4
- - ipv6_addr - для описания массивов IP адресов типа v6
-
- |
-
-
- | flags |
- Описывает свойства IPSet |
-
- Установлены следующие значения:
-
- - constant - флаг используется если значение элементов в множестве являются постоянными и не могут быть изменены
- - interval - флаг используется для создания диапазона элементов множества
-
- |
-
-
- | elements |
- Указывает массив содержащихся в IPSet элементов подсетей (CIDR) |
- Значения CIDR, в случае нескольких значений перечисляются через запятую |
-
-
-
-
-
-## Шаблон
-
-```hcl
-set ${IPSet_Name} {
- type ${type}
- flags ${flags}
- elements ${elements}
-}
-```
-
-## Пример использования
-
-
-
- ```hcl
- set NetIPv4-sg-local-example {
- type ipv4_addr
- flags constant,interval
- elements = { 10.168.24.0/23 }
- }
- ```
-
-
-
- ```hcl
- set NetIPv4-fqdn-example.com {
- type ipv4_addr
- flags interval
- elements = { 10.10.24.0 }
- }
- ```
-
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/rules-priority.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/rules-priority.mdx
deleted file mode 100644
index fcaaf972..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/rules-priority.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-id: rules-priority
----
-
-# Приоритет правил
-
-
- Приоритет правил в nftables определяет порядок в котором правила применяются к пакетам или сетевым потокам. Чем ниже
- значение преоритета, тем выше преоритет имеет правило. Значение приоритета могут варьироваться от -32768 до 32767,
- однако обычно они ограничиваются диапазоном от -300 до 300 для удобства управления и понимания.
- Ниже представлена птаблица преодитета правил в nftables:
-
-
-
-
- | Правило |
- Значение приоритета |
-
-
- | Sgroup to Sgroup (icmp) (legacy) |
- -300 |
-
-
- | Sgroup to Sgroup (tcp\|udp) (legacy) |
- -200 |
-
-
- | Sgroup to Sgroup (icmp) (ingress/egress) |
- -100 |
-
-
- | Sgroup to Sgroup (tcp\|udp) (ingress/egress) |
- 0 |
-
-
- | Sgroup to FQDN (tcp\|udp) |
- 100 |
-
-
- | Sgroup to CIDR (icmp) (ingress/egress) |
- 200 |
-
-
- | Sgroup to CIDR (tcp\|udp) (ingress/egress) |
- 300 |
-
-
diff --git a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/verdict-statement.mdx b/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/verdict-statement.mdx
deleted file mode 100644
index c7dafe32..00000000
--- a/documentation/versioned_docs/version-v1.13.0/tech-docs/to-nft/nftables/verdict-statement.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-id: verdict-statement
----
-
-# Verdict Statment
-
-
-
-
- | Значение |
- Описание |
-
-
-
-
- | accept |
-
- Терминирующие правило которое разрещает трафик, попавший под это условие, и завершает обработку пакета в текущей
- таблице.
- |
-
-
- | drop |
-
- Терминирующие правило которое запрещает трафик, попавший под это условие, и завершает обработку пакета в текущей
- таблице.
- |
-
-
- |
- goto chain
- |
-
- Переход на другую цепочку в рамках указанного правила. После завершения правил в этой цепочке обратно в ту же
- цепочку трафик попасть не сможет.
- |
-
-
- |
-
- jump chain
-
- |
-
- Переход на другую цепочку в рамках указанного правила. После завершения правил в этой цепочке трафик вернется в
- исходную цепочку.
- |
-
-
-
diff --git a/documentation/versioned_docs/version-v1.14.0/info/terminology.mdx b/documentation/versioned_docs/version-v1.14.0/info/terminology.mdx
index 33b32c57..142b50b2 100644
--- a/documentation/versioned_docs/version-v1.14.0/info/terminology.mdx
+++ b/documentation/versioned_docs/version-v1.14.0/info/terminology.mdx
@@ -7,4 +7,4 @@ import { TERMINOLOGY } from '@site/src/constants/terminology.tsx'
# Терминология
-
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/networks/_Api.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/networks/_Api.mdx
new file mode 100644
index 00000000..29dac551
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/networks/_Api.mdx
@@ -0,0 +1,160 @@
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
+import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
+import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
+
+#### Входные параметры
+
+
+ - `networks[]` - {DICTIONARY['v1.13.0'].networks.short}
+ - `networks[].name` - название подсети.
+ - `networks[].network` - объект содержащий CIDR подсети
+ - `networks[].network.CIDR` - {DICTIONARY['v1.13.0'].cidr.short}
+ - `syncOp` - {DICTIONARY['v1.13.0'].syncOp.short}
+
+
+
+
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+
+
+
+
+ | networks[] |
+ да |
+ Object[] |
+ |
+
+
+ | networks[].name |
+ да |
+ String |
+ |
+
+
+ | networks[].network |
+ да |
+ Object |
+ |
+
+
+ | networks[].network.CIDR |
+ да |
+ String |
+ |
+
+
+ | syncOp |
+ да |
+ Enum("Delete", "Upsert", "FullSync") |
+ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `networks.networks[].name`:
+
+
+ -
+ `networks.networks[].network.CIDR`:
+
+
+
+
+Пример использования
+
+```bash
+curl '127.0.0.1:9007/v1/sync' \
+--header 'Content-Type: application/json' \
+--data '{
+ "networks": {
+ "networks": [{
+ "name": "nw-1",
+ "network": {
+ "CIDR": "10.0.0.0/24"
+ }
+ }]
+ },
+ "syncOp": "Upsert"
+}'
+```
+
+Выходные параметры
+
+
+
+
+
+ | название |
+ тип данных |
+ описание |
+
+
+
+
+ | - |
+ Object |
+ в случае успеха возвращается пустое тело |
+
+
+
+
+
+Возможные ошибки API
+
+
+
+
+Диаграмма последовательности
+
+
+
+```mermaid
+sequenceDiagram
+participant user as User
+participant server as Server
+participant db as Database
+
+user->>server: Добавить сеть
+
+alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+end
+
+server->>db: Отправить запрос
+db->>db: Проверка входящего запроса
+
+alt Сеть с таким названием уже существует
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+end
+
+alt Пересечение значений CIDR
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+end
+
+alt Некорректное значение поля определяющее действие с данными из запроса
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+end
+
+db->>db: Сохранить данные о сети в БД
+
+db-->>server: Ответ с успешно добавленной новой сетью
+server-->>user: Успешно добавленная новая сеть
+```
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/networks/_Nftables.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/networks/_Nftables.mdx
new file mode 100644
index 00000000..9d2a78bd
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/networks/_Nftables.mdx
@@ -0,0 +1,96 @@
+
+ В этом разделе мы покажем, как ресурс networks, созданный с помощью Terraform/API, внедряется в настройки nftables. В
+ контексте HBF мы интерпретируем ресурс networks как проекцию на поле `elements` ресурса `IPSet`, который функционирует
+ в рамках инструмента nftables, обеспечивая более широкие возможности для управления подсетями.
+
+
+ - `$IPSet_Name` - Наименование IPSet
+ - `$type` - Описывает тип данных
+ - `$flags` - Описывает свойства IPSet.
+ - `$elements` - Указывает массив содержащихся в IPSet элементов подсетей (CIDR)
+
+
+
+
+
+
+ | шаблон параметра |
+ структура параметра |
+ значения |
+
+
+
+
+ | $IPSet_Name |
+ `^NetIPv[4|6]-.*` |
+
+ Примеры значений:
+
+ -
+ NetIPv4-sg-example - для описания массивов IP адресов типа v4
+
+ -
+ NetIPv6-sg-example - для описания массивов IP адресов типа v6
+
+
+ |
+
+
+ | $type |
+ `type` |
+
+ Могут быть установлены следующие значения:
+
+ -
+ ipv4_addr - для описания массивов IP адресов типа v4
+
+ -
+ ipv6_addr - для описания массивов IP адресов типа v6
+
+
+ |
+
+
+ | $flags |
+ `flags` |
+
+ Установлены следующие значения:
+
+ -
+ constant - флаг используется если значение элементов в множестве являются постоянными и не могут
+ быть изменены
+
+ -
+ interval - флаг используется для создания диапазона элементов множества
+
+
+ |
+
+
+ | $elements |
+ `elements = {}` |
+ Значения CIDR, в случае нескольких значений перечисляются через запятую |
+
+
+
+
+
+#### Шаблон
+
+```hcl
+set $IPSet_Name {
+ $type
+ $flags
+ $elements
+}
+```
+
+#### Пример использования
+
+```hcl
+set NetIPv4-sg-example {
+ type ipv4_addr
+ flags constant,interval
+ elements = { 10.0.0.0/24 } <- networks
+}
+```
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/networks/_TerraformModule.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/networks/_TerraformModule.mdx
new file mode 100644
index 00000000..2821425f
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/networks/_TerraformModule.mdx
@@ -0,0 +1,57 @@
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformModule.full}
+
+
+
+
+
+
+ | название параметра |
+ описание |
+ тип данных |
+ значение по умолчанию |
+
+
+
+
+ | name |
+ Имя Security Group |
+ String |
+ |
+
+
+ | cidrs[] |
+ Список CIDR, связанных с Security Group |
+ String[] |
+ [] |
+
+
+
+
+
+#### Ограничения
+
+
+ -
+ `name`:
+
+
+ -
+ `cidrs[]`:
+
+
+
+
+
+
+```yaml
+name: sg-example
+cidrs:
+ - 10.0.0.0/24
+```
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/networks/_TerraformResource.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/networks/_TerraformResource.mdx
new file mode 100644
index 00000000..9ab25c50
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/networks/_TerraformResource.mdx
@@ -0,0 +1,80 @@
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformResource.full}
+
+
+
+
+
+
+ | название |
+ обязательность |
+ тип данных |
+ доп. описание |
+
+
+
+
+ | items |
+ да |
+ Object |
+ Cписок ресурсов создаваемые terraform. |
+
+
+ | items.key |
+ да |
+ String |
+ Уникальный ключ блока items. |
+
+
+ | items.key.name |
+ да |
+ string |
+ Имя подсети. |
+
+
+ | items.key.cidr |
+ да |
+ string |
+ {DICTIONARY['v1.13.0'].cidr.short} |
+
+
+
+
+
+#### Ограничения
+
+
+ -
+ `items`:
+
+
+ -
+ `items.key`:
+
+
+ -
+ `items.key.name`:
+
+
+ -
+ `items.key.cidr`:
+
+
+
+
+#### Пример использования
+
+```hcl
+resource "sgroups_networks" "networks" {
+ items = {
+ key = {
+ name = "nw-1"
+ cidr = "10.0.0.0/24"
+ }
+ }
+}
+```
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_Api.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_Api.mdx
new file mode 100644
index 00000000..cf1e6839
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_Api.mdx
@@ -0,0 +1,764 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
+import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
+import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
+
+#### Входные параметры
+
+
+ - `$node.rules[]` - {DICTIONARY['v1.13.0'].rules.short}
+ - `$node.rules[].cidr` - {DICTIONARY['v1.13.0'].cidrSet.short}
+ - `$node.rules[].sg` - {DICTIONARY['v1.13.0'].sgLocal.short}
+ - `$node.rules[].logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `$node.rules[].trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `$node.rules[].ports` - {DICTIONARY['v1.13.0'].ports.short}
+ - `$node.rules[].ports[].d` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `$node.rules[].ports[].s` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `$node.rules[].traffic` - {DICTIONARY['v1.13.0'].traffic.short}
+ - `$node.rules[].transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `$node.rules[].ICMP` - {DICTIONARY['v1.13.0'].apiIcmp.short}
+ - `$node.rules[].ICMP.IPv` - {DICTIONARY['v1.13.0'].icmpV.short}
+ - `$node.rules[].ICMP.Types` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `$node.rules[].action` - {DICTIONARY['v1.13.0'].action.short}
+ - `$node.rules[].priority` - {DICTIONARY['v1.13.0'].priorityst.short}
+ - `$node.rules[].priority.some` - {DICTIONARY['v1.13.0'].priority.short}
+ - `syncOp` - {DICTIONARY['v1.13.0'].syncOp.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+ 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 |
+ да |
+
+ Enum("UNDEF", "ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $node.rules[].priority |
+ нет |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $node.rules[].priority.some |
+ нет |
+ Integer |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | syncOp |
+ да |
+
+ Enum("Delete", "Upsert", "FullSync")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `$node.rules[].SG`:
+
+
+ -
+ `$node.rules[].CIDR`:
+
+
+ -
+ `$node.rules[].ports[].s`:
+
+
+ -
+ `$node.rules[].ports[].d`:
+
+
+ -
+ `$node.rules[].type[]`:
+
+
+
+
+Пример использования
+
+
+
+
+
+
Ingress
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "cidrSgRules": {
+ "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
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "cidrSgRules": {
+ "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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-CIDR-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Пересечение значений source портов
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-CIDR-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-CIDR-SG правилом
+ server-->>user: Успешно добавленное новое IE-CIDR-SG правило
+ ```
+
+
+
+
+
+
+
Ingress
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "cidrSgRules": {
+ "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
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "cidrSgRules": {
+ "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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-CIDR-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Пересечение значений source портов
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-CIDR-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-CIDR-SG правилом
+ server-->>user: Успешно добавленное новое IE-CIDR-SG правило
+ ```
+
+
+
+
+
+
+
Ingress
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "cidrSgIcmpRules": {
+ "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
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "cidrSgIcmpRules": {
+ "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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-CIDR-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение кода ICMP
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение IPv
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-CIDR-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-CIDR-SG правилом
+ server-->>user: Успешно добавленное новое IE-CIDR-SG правило
+ ```
+
+
+
+
+
+
+
+
Ingress
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "cidrSgIcmpRules": {
+ "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
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "cidrSgIcmpRules": {
+ "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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-CIDR-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение кода ICMP
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение IPv
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-CIDR-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-CIDR-SG правилом
+ server-->>user: Успешно добавленное новое IE-CIDR-SG правило
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_Nftables.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_Nftables.mdx
new file mode 100644
index 00000000..69f84387
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_Nftables.mdx
@@ -0,0 +1,330 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+
+
+ В этом разделе мы покажем, как правила фильтрации трафика, созданные с помощью Terraform и API, внедряются в настройки
+ nftables. Это позволяет легко интегрировать сложные правила безопасности прямо в вашу систему фильтрации трафика.
+
+
+ - `$Trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `$SrcCIDR` - {DICTIONARY['v1.13.0'].srcDstCidr.short}
+ - `$DstCIDR` - {DICTIONARY['v1.13.0'].srcDstCidr.short}
+ - `$Transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `$NftRuleType` - {DICTIONARY['v1.13.0'].nftRuleType.short}
+ - `$IcmpTypeList` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `$SrcPorts` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `$DstPorts` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `$NftCounter` - {DICTIONARY['v1.13.0'].nftCounter.short}
+ - `$Log` - {DICTIONARY['v1.13.0'].log.short}
+ - `$NftRuleVerdict` - {DICTIONARY['v1.13.0'].nftRuleVerdict.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | шаблон параметра |
+ структура параметра |
+ значения |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | $Trace |
+ `nftrace set` |
+
+
+ -
+ 1 - трассировка включена
+
+ -
+ 0 - трассировка выключена
+
+
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $SrcCIDR |
+
+ `saddr`
+ |
+ `${CIDR}` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $DstCIDR |
+
+ `daddr`
+ |
+ `${CIDR}` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $Transport |
+
+ Enum("tcp", "udp", "icmp")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $NftRuleType |
+ `ip` |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $IcmpTypeList |
+ `type {}` |
+ Набор целочисленных значений от 0 до 255 |
+ |
+ |
+ ✔ |
+
+
+ | $SrcPorts |
+ `sport {}` |
+ Набор целочисленных значений от 0 до 65535 |
+ ✔ |
+ ✔ |
+ |
+
+
+ | $DstPorts |
+ `dport {}` |
+ Набор целочисленных значений от 0 до 65535 |
+ ✔ |
+ ✔ |
+ |
+
+
+ | $NftCounter |
+
+ `counter`
+ |
+ `packets 0 bytes 0` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $Log |
+
+ `log`
+ |
+ `level debug flags ip options` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $NftRuleVerdict |
+ `accept` |
+
+
+
+ $NftRuleVerdict определяет действие, которое будет применено к пакету в соответсвии с правилом. Это поле
+ может принимать значение `accept` или `drop` в зависимости от указанного в правиле.
+
+
+ Подробнее: [Verdict statement](../../tech-docs/to-nft/nftables/verdict-statement)
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Пример использования
+
+
+
+
+
+ #### Шаблон
+
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ $Trace $NftRuleType $SrcCIDR $Transport $SrcPorts $DstPorts $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-local-example {
+ # **********
+ nftrace set 1 ip saddr { 10.0.0.0/8 } tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+ #### Шаблон
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ $Trace $NftRuleType $DstCIDR $Transport $SrcPorts $DstPorts $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sg-local-example {
+ # **********
+ nftrace set 1 ip daddr { 10.0.0.0/8 } tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
+
+
+
+ #### Шаблон
+
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ $Trace $NftRuleType $SrcCIDR $Transport $SrcPorts $DstPorts $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-local-example {
+ # **********
+ nftrace set 1 ip saddr { 10.0.0.0/8 } udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+ #### Шаблон
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ $Trace $NftRuleType $DstCIDR $Transport $SrcPorts $DstPorts $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sg-local-example {
+ # **********
+ nftrace set 1 ip daddr { 10.0.0.0/8 } udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
+
+
+
+ #### Шаблон
+
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ $Trace $NftRuleType $DstCIDR $Transport $IcmpTypeList $NftCounter $Log $NftRuleVerdict
+ $Trace $NftRuleType $DstCIDR $Transport $IcmpTypeList $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-local-example {
+ # **********
+ nftrace set 1 ip saddr { 10.0.0.0/8 } icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip saddr { ::ffff:a00:0/104 } icmp6 type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+ #### Шаблон
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ $Trace $NftRuleType $DstCIDR $Transport $IcmpTypeList $NftCounter $Log $NftRuleVerdict
+ $Trace $NftRuleType $DstCIDR $Transport $IcmpTypeList $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sg-local-example {
+ # **********
+ nftrace set 1 ip daddr { 10.0.0.0/8 } icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr { ::ffff:a00:0/104 } icmp6 type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_TerraformModule.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_TerraformModule.mdx
new file mode 100644
index 00000000..5b65c807
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_TerraformModule.mdx
@@ -0,0 +1,428 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformModule.full}
+
+
+ Далее везде в документе подразумевается что все места, содержащие переменную `$traffic`, могут принять одно из двух
+ значений: `Ingress` `Egress`. Аналогчично для `$transport` подразумевается одно из четырех значений: `tcp`, `udp`,
+ `icmpIPv4`, `icmpIPv6`
+
+
+
+ - `rules` - {DICTIONARY['v1.13.0'].rules.short}
+ - `rules.$traffic[]` - {DICTIONARY['v1.13.0'].traffic.short}
+ - `rules.$traffic[].cidrSet[]` - {DICTIONARY['v1.13.0'].cidrSet.short}
+ - `rules.$traffic[].access.$transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `rules.$traffic[].access.$transport.action` - {DICTIONARY['v1.13.0'].action.short}
+ - `rules.$traffic[].access.$transport.priority` - {DICTIONARY['v1.13.0'].priority.short}
+ - `rules.$traffic[].access.$transport.logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `rules.$traffic[].access.$transport.trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `rules.$traffic[].access.$transport.ports[].description` - {DICTIONARY['v1.13.0'].description.short}
+ - `rules.$traffic[].access.$transport.ports[].ports_to[]` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `rules.$traffic[].access.$transport.ports[].ports_from[]` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `rules.$traffic[].access.$transport.types[].description` - {DICTIONARY['v1.13.0'].description.short}
+ - `rules.$traffic[].access.$transport.types[].type[]` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название параметра |
+ тип данных |
+ значение по умолчанию |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | rules |
+ Object[] |
+ [] |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[] |
+ Object[] |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].cidrSet[] |
+ String[] |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.action |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.priority |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.log |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.trace |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[] |
+ Object[] |
+ {} |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[].description |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ |
+
+
+ | rules.$traffic[].access.$transport.ports[].ports_to[] |
+ Integer[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | rules.$traffic[].access.$transport.ports[].ports_from[] |
+ Integer[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | rules.$traffic[].access.$transport.types[] |
+ Object[] |
+ |
+ |
+ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.types[].description |
+ String |
+ "" |
+ |
+ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.types[].type[] |
+ Integer[] |
+ null |
+ |
+ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `name`:
+
+
+ -
+ `rules.$traffic[].cidrSet`:
+
+
+ -
+ `rules.$traffic[].access.$transport.priority`:
+
+
+ -
+ `rules.$traffic[].access.$transport.ports[].ports_to[]`:
+
+
+ -
+ `rules.$traffic[].access.$transport.ports[].ports_from[]`:
+
+
+ -
+ `rules.$traffic[].access.$transport.types[].type[]`:
+
+
+
+
+Пример использования
+
+
+
+
+
+
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ ingress:
+ - cidrSet:
+ - "10.0.0.0/8"
+ access:
+ tcp:
+ action: ACCEPT
+ priority: 300
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ egress:
+ - cidrSet:
+ - "10.0.0.0/8"
+ access:
+ tcp:
+ action: ACCEPT
+ priority: 300
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+
+
+
+
+
+
Ingress
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ ingress:
+ - cidrSet:
+ - "10.0.0.0/8"
+ access:
+ udp:
+ action: ACCEPT
+ priority: 300
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+
Egress
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ egress:
+ - cidrSet:
+ - "10.0.0.0/8"
+ access:
+ udp:
+ action: ACCEPT
+ priority: 300
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+
+
+
+
+
Ingress
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ ingress:
+ - cidrSet:
+ - "10.0.0.0/8"
+ access:
+ icmpIPv4:
+ action: ACCEPT
+ priority: 200
+ logs: true
+ trace: true
+ types:
+ - description: "example"
+ type:
+ - 0
+ - 8
+ ```
+
+
+
+
Egress
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ egress:
+ - cidrSet:
+ - "10.0.0.0/8"
+ access:
+ icmpIPv4:
+ action: ACCEPT
+ priority: 200
+ logs: true
+ trace: true
+ types:
+ - description: "example"
+ type:
+ - 0
+ - 8
+ ```
+
+
+
+
+
+
+
+
+
Ingress
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ ingress:
+ - cidrSet:
+ - "::ffff:a00:0/104"
+ access:
+ icmpIPv6:
+ action: ACCEPT
+ priority: 200
+ logs: true
+ trace: true
+ types:
+ - description: "example"
+ type:
+ - 0
+ - 8
+ ```
+
+
+
+
Egress
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ egress:
+ - cidrSet:
+ - "::ffff:a00:0/104"
+ access:
+ icmpIPv6:
+ action: ACCEPT
+ priority: 200
+ logs: true
+ trace: true
+ types:
+ - description: "example"
+ type:
+ - 0
+ - 8
+ ```
+
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_TerraformResource.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_TerraformResource.mdx
new file mode 100644
index 00000000..74bc13c6
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2c-ie/_TerraformResource.mdx
@@ -0,0 +1,453 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformResource.full}
+
+
+ - `items` - список ресурсов создаваемые terraform ресурсом.
+ - `items.$ruleName` - уникальное имя создаваемого ресурса.
+ - `items.$ruleName.traffic` - {DICTIONARY['v1.13.0'].traffic.short}
+ - `items.$ruleName.transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `items.$ruleName.cidr` - {DICTIONARY['v1.13.0'].cidrSet.short}
+ - `items.$ruleName.sg_name` - {DICTIONARY['v1.13.0'].sgLocal.short}
+ - `items.$ruleName.ports` - {DICTIONARY['v1.13.0'].ports.short}
+ - `items.$ruleName.ports[].d` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `items.$ruleName.ports[].s` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `items.$ruleName.logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `items.$ruleName.trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `items.$ruleName.ip_v` - {DICTIONARY['v1.13.0'].icmpV.short}
+ - `items.$ruleName.type` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `items.$ruleName.action` - {DICTIONARY['v1.13.0'].action.short}
+ - `items.$ruleName.priority` - {DICTIONARY['v1.13.0'].priority.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | items |
+ да |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName |
+ да |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.traffic |
+ да |
+
+ Enum("ingress", "egress")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.transport |
+ да |
+ Enum("TCP", "UDP") |
+ |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.cidr |
+ да |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.sg_name |
+ да |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ports |
+ нет |
+ Object[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.ports[].d |
+ нет |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.ports[].s |
+ нет |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.logs |
+ нет |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.trace |
+ нет |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ip_v |
+ да |
+ Enum("IPv4", "IPv6") |
+ |
+ |
+ |
+ ✔ |
+
+
+ | items.$ruleName.type |
+ да |
+ String[] |
+ null |
+ |
+ |
+ ✔ |
+
+
+ | items.$ruleName.action |
+ да |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.priority |
+ нет |
+ Integer |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `items`:
+
+
+ -
+ `items.$ruleName`:
+
+
+ -
+ `items.$ruleName.sg_name`:
+
+
+ -
+ `items.$ruleName.cidr`:
+
+
+ -
+ `items.$ruleName.ports[].s`:
+
+
+ -
+ `items.$ruleName.ports[].d`:
+
+
+ -
+ `items.$ruleName.type[]`:
+
+
+ -
+ `items.$ruleName.priority`:
+
+
+
+
+Пример использования
+
+
+
+
+
+
Ingress
+
+ ```hcl
+ resource "sgroups_cidr_rules" "rules" {
+ items = {
+ "tcp:cidr(10.0.0.0/8)sg(sg-example)ingress" = {
+ traffic = "ingress"
+ logs = true
+ trace = true
+ sg_name = "sg-local-example"
+ cidr = "10.0.0.0/8"
+ transport = "tcp"
+ ports = [{
+ d = "80"
+ s = ""
+ }]
+ action = "ACCEPT"
+ priority = 300
+ }
+ }
+ }
+ ```
+
+
+
+
+
Egress
+
+
+ ```hcl
+ resource "sgroups_cidr_rules" "rules" {
+ items = {
+ "tcp:cidr(10.0.0.0/8)sg(sg-example)egress" = {
+ traffic = "egress"
+ logs = true
+ trace = true
+ sg_name = "sg-local-example"
+ cidr = "10.0.0.0/8"
+ transport = "tcp"
+ ports = [{
+ d = "80"
+ s = ""
+ }]
+ action = "ACCEPT"
+ priority = 300
+ }
+ }
+ }
+ ```
+
+
+
+
+
+
+
+
+
+
Ingress
+
+
+ ```hcl
+ resource "sgroups_cidr_rules" "rules" {
+ items = {
+ "udp:cidr(10.0.0.0/8)sg(sg-example)ingress" = {
+ traffic = "ingress"
+ logs = true
+ trace = true
+ sg_name = "sg-local-example"
+ cidr = "10.0.0.0/8"
+ transport = "udp"
+ ports = [{
+ d = "80"
+ s = ""
+ }]
+ action = "ACCEPT"
+ priority = 300
+ }
+ }
+ }
+ ```
+
+
+
+
+
Egress
+
+
+ ```hcl
+ resource "sgroups_cidr_rules" "rules" {
+ items = {
+ "udp:cidr(10.0.0.0/8)sg(sg-example)egress" = {
+ traffic = "egress"
+ logs = true
+ trace = true
+ sg_name = "sg-local-example"
+ cidr = "10.0.0.0/8"
+ transport = "udp"
+ ports = [{
+ d = "80"
+ s = ""
+ }]
+ action = "ACCEPT"
+ priority = 300
+ }
+ }
+ }
+ ```
+
+
+
+
+
+
+
+
Ingress
+
+ ```hcl
+ resource "sgroups_cidr_icmp_rules" "rules" {
+ items = {
+ "icmp4:cidr(10.0.0.0/8)sg(sg-example)ingress" = {
+ traffic = "ingress"
+ logs = true
+ trace = true
+ sg_name = "sg-local-example"
+ cidr = "10.0.0.0/8"
+ ip_v = "IPv4"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = 200
+ }
+ }
+ }
+ ```
+
+
+
+
+
Egress
+
+
+ ```hcl
+ resource "sgroups_cidr_icmp_rules" "rules" {
+ items = {
+ "icmp4:cidr(10.0.0.0/8)sg(sg-example)egress" = {
+ traffic = "egress"
+ logs = true
+ trace = true
+ sg_name = "sg-local-example"
+ cidr = "10.0.0.0/8"
+ ip_v = "IPv4"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = 200
+ }
+ }
+ }
+ ```
+
+
+
+
+
+
+
+
+
Ingress
+
+ ```hcl
+ resource "sgroups_cidr_icmp_rules" "rules" {
+ items = {
+ "icmp6:cidr(::ffff:a00:0/104)sg(sg-example)ingress" = {
+ traffic = "ingress"
+ logs = true
+ trace = true
+ sg_name = "sg-local-example"
+ cidr = "::ffff:a00:0/104"
+ ip_v = "IPv6"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = 200
+ }
+ }
+ }
+ ```
+
+
+
+
+
Egress
+
+
+ ```hcl
+ resource "sgroups_cidr_icmp_rules" "rules" {
+ items = {
+ "icmp6:cidr(::ffff:a00:0/104)sg(sg-example)egress" = {
+ traffic = "egress"
+ logs = true
+ trace = true
+ sg_name = "sg-local-example"
+ cidr = "::ffff:a00:0/104"
+ ip_v = "IPv6"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = 200
+ }
+ }
+ }
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_Api.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_Api.mdx
new file mode 100644
index 00000000..0c5bc99b
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_Api.mdx
@@ -0,0 +1,306 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
+import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
+import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
+
+#### Входные параметры
+
+
+ - `fqdnRules.rules` - {DICTIONARY['v1.13.0'].rules.short}
+ - `fqdnRules.rules[].FQDN` - {DICTIONARY['v1.13.0'].fqdn.short}
+ - `fqdnRules.rules[].logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `fqdnRules.rules[].ports` - {DICTIONARY['v1.13.0'].trace.short}
+ - `fqdnRules.rules[].ports[].d` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `fqdnRules.rules[].ports[].s` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `fqdnRules.rules[].sgFrom` - {DICTIONARY['v1.13.0'].sgLocal.short}
+ - `fqdnRules.rules[].transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `fqdnRules.rules[].action` - {DICTIONARY['v1.13.0'].action.short}
+ - `fqdnRules.rules[].priority` - {DICTIONARY['v1.13.0'].priorityst.short}
+ - `fqdnRules.rules[].priority.some` - {DICTIONARY['v1.13.0'].priority.short}
+ {/* - `fqdnRules.rules[].protocols` - {DICTIONARY['v1.13.0'].l7ProtocolList.short}
*/}
+ - `syncOp` - {DICTIONARY['v1.13.0'].syncOp.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+ 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 |
+ |
+ ✔ |
+ ✔ |
+
+ {/*
+ | fqdnRules.rules[].protocols |
+ нет |
+ Object[] |
+ |
+ ✔ |
+ ✔ |
+
*/}
+
+ | syncOp |
+ да |
+
+ Enum("Delete", "Upsert", "FullSync")
+ |
+ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `fqdnRules.rules[].FQDN`:
+
+
+ -
+ `fqdnRules.rules[].sgFrom`:
+
+
+ -
+ `fqdnRules.rules[].protocols[]`:
+
+
+ -
+ `fqdnRules.rules[].ports[].ports_to[]`:
+
+
+ -
+ `fqdnRules.rules[].ports[].ports_from[]`:
+
+
+
+
+Пример использования
+
+
+
+ ```bash
+ curl '127.0.0.1:9007/v1/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"
+ }'
+ ```
+
+
+
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+Диаграмма последовательности
+
+
+
+```mermaid
+
+sequenceDiagram
+participant user as User
+participant server as Server
+participant db as Database
+
+user->>server: Добавить FQDN правило
+
+alt Ошибка в запросе
+server-->>user: Показать ошибку в запросе
+end
+
+server->>db: Отправить запрос
+db->>db: Проверка входящего запроса
+
+alt Нет такого значения имени SG
+db-->>server: Ответ с ошибкой
+server-->>user: Показать ошибку в запросе
+end
+
+alt Пересечение значений source портов
+db-->>server: Ответ с ошибкой
+server-->>user: Показать ошибку в запросе
+end
+
+db->>db: Сохранить данные о FQDN в БД
+
+db-->>server: Ответ с успешно добавленным новым FQDN правилом
+server-->>user: Успешно добавленное новое FQDN правило
+
+```
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_Nftables.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_Nftables.mdx
new file mode 100644
index 00000000..d3c5da88
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_Nftables.mdx
@@ -0,0 +1,116 @@
+
+ В этом разделе мы покажем, как правила фильтрации трафика, созданные с помощью Terraform и API, внедряются в настройки
+ nftables. Это позволяет легко интегрировать сложные правила безопасности прямо в вашу систему фильтрации трафика.
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | шаблон параметра |
+ структура параметра |
+ значение |
+ описание |
+
+
+
+
+ | $\{Trace\} |
+ `nftrace set` |
+
+
+ - 1 - трассировка включена
+ - 0 - трассировка выключена
+
+ |
+ Трассировка указанного правила (опциональна, можно включить/выключить) |
+
+
+ | $\{DstFQDN\} |
+
+ `saddr @${IPSet(sgName)}`
+ |
+ Наименование IPSet в котором описаны сети в FQDN |
+ Значение типа string, не должно содержать в себе пробелов |
+
+
+ | $\{Transport\} |
+ `tcp` | `udp` |
+ протокол передачи данных в цепочке правил. |
+ Одно из двух значений `tcp` | `udp` |
+
+
+ | $\{RuleType\} |
+ `ip` |
+ |
+ Описывает, что принимает трафик типа ip |
+
+
+ | $\{SrcPorts\} |
+ `sport {}` |
+ Набор целочисленных значений от 0 до 65535З |
+ Значения `sport` (source port). Может быть как одно значение, как и множество значений портов. В случае если одно значение у порта то передается значение либо как целочисленное значение либо как название порта. Если передается массив значений портов то они должны быть внутри `{}` перечислены через запятую. |
+
+
+ | $\{DstPorts\} |
+ `dport {}` |
+ Набор целочисленных значений от 0 до 65535З |
+ Значения `dport` (destination port). Может быть как одно значение, как и множество значений портов. В случае если одно значение у порта то передается значение либо как целочисленное значение либо как название порта. Если передается массив значений портов то они должны быть внутри `{}` перечислены через запятую. |
+
+
+ | $\{Counter\} |
+
+ `counter packets 0 bytes 0`
+ |
+ Не параметризированный |
+ Счетчик, учитывает количество пройденных пакетов с количеством байтов переданной информации в рамках указанной цепочки правил |
+
+
+ | $\{Log\} |
+
+ `log level debug flags ip options`
+ |
+ Не параметризированный |
+ Логирование указанного правила (опциональна, можно включить/выключить) |
+
+
+ | $\{Verdict\} |
+ `accept` |
+
+ Не параметризированный
+
+
+ $Verdict определяет действие, которое будет применено к пакету в соответсвии с правилом. Это поле может принимать значение `accept` или `drop` в зависимости от указанного в правиле.
+
+ Подробнее: [Verdict statement](../../tech-docs/to-nft/nftables/verdict-statement)
+ |
+ Вердикт политики по пакетам данных |
+
+
+
+
+
+#### Шаблон
+
+```hcl
+chain EGRESS-POSTROUTING-sgName {
+ # **********
+ ${Trace} ${RuleType} ${DstFQDN} ${Transport} ${SrcPorts} ${DstPorts} ${Counter} ${Log} ${Verdict}
+ # **********
+}
+```
+
+#### Пример использования
+
+```hcl
+chain EGRESS-POSTROUTING-sg-local-example {
+ # **********
+ nftrace set 1 ip daddr @NetIPv4-fqdn-example.com tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr @NetIPv6-fqdn-example.com tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+
+ nftrace set 1 ip daddr @NetIPv4-fqdn-example.com udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr @NetIPv6-fqdn-example.com udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+}
+```
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_TerraformModule.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_TerraformModule.mdx
new file mode 100644
index 00000000..f01b683f
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_TerraformModule.mdx
@@ -0,0 +1,224 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformModule.full}
+
+
+ Далее везде в документе подразумевается что все места, содержащие переменную `$traffic`, могут принять значениe:
+ `Egress`. Аналогчично для `$transport` подразумевается одно из двух значений: `tcp`, `udp`.
+
+
+ - `rules` - {DICTIONARY['v1.13.0'].rules.short}
+ - `rules.$traffic[]` - {DICTIONARY['v1.13.0'].traffic.short}
+ - `rules.$traffic[].fqdnSet[]` - {DICTIONARY['v1.13.0'].fqdnSet.short}
+ {/* - `rules.$traffic[].access.protocols[]` - {DICTIONARY['v1.13.0'].l7ProtocolList.short}
*/}
+ - `rules.$traffic[].access.$transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `rules.$traffic[].access.$transport.action` - {DICTIONARY['v1.13.0'].action.short}
+ - `rules.$traffic[].access.$transport.priority` - {DICTIONARY['v1.13.0'].priority.short}
+ - `rules.$traffic[].access.$transport.log` - {DICTIONARY['v1.13.0'].log.short}
+ - `rules.$traffic[].access.$transport.trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `rules.$traffic[].access.$transport.ports[].description` - {DICTIONARY['v1.13.0'].description.short}
+ - `rules.$traffic[].access.$transport.ports[].ports_to[]` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `rules.$traffic[].access.$transport.ports[].ports_from[]` - {DICTIONARY['v1.13.0'].srcPorts.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название параметра |
+ тип данных |
+ значение по умолчанию |
+ transport* |
+
+
+ | TCP |
+ UDP |
+
+
+
+
+ | rules |
+ Object[] |
+ [] |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[] |
+ Object[] |
+ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].fqdnSet[] |
+ String[] |
+ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport |
+ Object |
+ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.action |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.priority |
+ String |
+ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.log |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.trace |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[] |
+ Object[] |
+ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[].description |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[].ports_to[] |
+ Integer[] |
+ null |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[].ports_from[] |
+ Integer[] |
+ null |
+ ✔ |
+ ✔ |
+
+
+
+
+
+#### Ограничения
+
+
+ -
+ `name`:
+
+
+ -
+ `rules.$traffic[].fqdnSet`:
+
+
+ {/* -
+ `rules.$traffic[].protocols[]`:
+
+
*/}
+ -
+ `rules.$traffic[].access.$transport.priority`:
+
+
+ -
+ `rules.$traffic[].access.$transport.ports[].ports_to[]`:
+
+
+ -
+ `rules.$traffic[].access.$transport.ports[].ports_from[]`:
+
+
+
+
+
+
+
+
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ egress:
+ - fqdnSet:
+ - example.com
+ access:
+ tcp:
+ action: ACCEPT
+ priority: 100
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ egress:
+ - fqdnSet:
+ - example.com
+ access:
+ udp:
+ action: ACCEPT
+ priority: 100
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_TerraformResource.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_TerraformResource.mdx
new file mode 100644
index 00000000..5ab42605
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2f-e/_TerraformResource.mdx
@@ -0,0 +1,236 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformResource.full}
+
+
+ - `items` - список ресурсов создаваемые terraform ресурсом.
+ - `items.$ruleName` - уникальное имя создаваемого ресурса.
+ - `items.$ruleName.transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `items.$ruleName.protocols[]` - {DICTIONARY['v1.13.0'].l7ProtocolList.short}
+ - `items.$ruleName.logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `items.$ruleName.trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `items.$ruleName.sg_from` - {DICTIONARY['v1.13.0'].sgLocal.short}
+ - `items.$ruleName.fqdn` - {DICTIONARY['v1.13.0'].fqdn.short}
+ - `items.$ruleName.ports[]` - {DICTIONARY['v1.13.0'].ports.short}
+ - `items.$ruleName.ports[].s` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `items.$ruleName.ports[].d` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `items.$ruleName.action` - {DICTIONARY['v1.13.0'].action.short}
+ - `items.$ruleName.priority` - {DICTIONARY['v1.13.0'].priority.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+ transport* |
+
+
+ | TCP |
+ UDP |
+
+
+
+
+ | items |
+ да |
+ Object |
+ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName |
+ да |
+ Object |
+ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.transport |
+ да |
+ Enum("TCP", "UDP") |
+ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.logs |
+ нет |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.trace |
+ нет |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.sg_from |
+ да |
+ String |
+ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.fqdn |
+ да |
+ String |
+ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ports[] |
+ нет |
+ Object[] |
+ null |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ports[].s |
+ нет |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ports[].d |
+ нет |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.action |
+ да |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.priority |
+ нет |
+ Integer |
+ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+#### Ограничения
+
+
+ -
+ `items`:
+
+
+ -
+ `items.$ruleName`:
+
+
+ -
+ `items.$ruleName.protocols[]`:
+
+
+ -
+ `items.$ruleName.sg_from`:
+
+
+ -
+ `items.$ruleName.fqdn`:
+
+
+ -
+ `items.$ruleName.ports[].s`:
+
+
+ -
+ `items.$ruleName.ports[].d`:
+
+
+ -
+ `items.$ruleName.priority`:
+
+
+
+
+#### Пример использования
+
+
+
+
+ ```hcl
+ resource "sgroups_fqdn_rules" "rules" {
+ items = {
+ "tcp:sg(sg-local-example)fqdn(example.com)" = {
+ transport = "tcp"
+ sg_from = "sg-local-example"
+ fqdn = "example.com"
+ ports = [{
+ d = "443,80"
+ s = "64231"
+ }]
+ logs = true
+ trace = true
+ action = "ACCEPT"
+ priority = 100
+ }
+ }
+ }
+ ```
+
+
+
+ ```hcl
+ resource "sgroups_fqdn_rules" "rules" {
+ items = {
+ "udp:sg(sg-local-example)fqdn(example.com)" = {
+ transport = "udp"
+ sg_from = "sg-local-example"
+ fqdn = "example.com"
+ ports = [{
+ d = "443,80"
+ s = "64231"
+ }]
+ logs = true
+ trace = true
+ action = "ACCEPT"
+ priority = 100
+ }
+ }
+ }
+ ```
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_Api.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_Api.mdx
new file mode 100644
index 00000000..bab68b5a
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_Api.mdx
@@ -0,0 +1,763 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
+import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
+import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
+
+#### Входные параметры
+
+
+ - `$node.rules[]` - {DICTIONARY['v1.13.0'].rules.short}
+ - `$node.rules[].Sg` - {DICTIONARY['v1.13.0'].sg.short}
+ - `$node.rules[].SgLocal` - {DICTIONARY['v1.13.0'].sgLocal.short}
+ - `$node.rules[].logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `$node.rules[].trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `$node.rules[].ports` - {DICTIONARY['v1.13.0'].ports.short}
+ - `$node.rules[].ports[].d` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `$node.rules[].ports[].s` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `$node.rules[].traffic` - {DICTIONARY['v1.13.0'].traffic.short}
+ - `$node.rules[].transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `$node.rules[].ICMP` - {DICTIONARY['v1.13.0'].apiIcmp.short}
+ - `$node.rules[].ICMP.IPv` - {DICTIONARY['v1.13.0'].icmpV.short}
+ - `$node.rules[].ICMP.Types` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `$node.rules[].action` - {DICTIONARY['v1.13.0'].action.short}
+ - `$node.rules[].priority` - {DICTIONARY['v1.13.0'].priorityst.short}
+ - `$node.rules[].priority.some` - {DICTIONARY['v1.13.0'].priority.short}
+ - `syncOp` - {DICTIONARY['v1.13.0'].syncOp.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+ 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 |
+ да |
+
+ Enum("UNDEF", "ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $node.rules[].priority |
+ нет |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $node.rules[].priority.some |
+ нет |
+ Integer |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | syncOp |
+ да |
+
+ Enum("Delete", "Upsert", "FullSync")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `sgSgRules.rules[].Sg`:
+
+
+ -
+ `sgSgRules.rules[].SgLocal`:
+
+
+ -
+ `sgSgRules.rules[].ports[].ports_to[]`:
+
+
+ -
+ `sgSgRules.rules[].ports[].ports_from[]`:
+
+
+ -
+ `sgSgRules.rules[].ICMP.Types[]`:
+
+
+
+
+Пример использования
+
+
+
+
+
+
Ingress
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "sgSgRules": {
+ "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
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "sgSgRules": {
+ "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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-SG-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG(sg и/или sg_local)
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Пересечение значений source портов
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-SG-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-SG-SG правилом
+ server-->>user: Успешно добавленное новое IE-SG-SG правило
+ ```
+
+
+
+
+
+
+
Ingress
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "sgSgRules": {
+ "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
+ ```bash
+ curl '127.0.0.1:9007/v1/sync' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "sgSgRules": {
+ "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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-SG-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG(sg и/или sg_local)
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Пересечение значений source портов
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-SG-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-SG-SG правилом
+ server-->>user: Успешно добавленное новое IE-SG-SG правило
+ ```
+
+
+
+
+
+
+
Ingress
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-SG-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG(sg и/или sg_local)
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение кода ICMP
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение IPv
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-SG-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-SG-SG правилом
+ server-->>user: Успешно добавленное новое IE-SG-SG правило
+ ```
+
+
+
+
+
+
+
+
Ingress
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-SG-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG(sg и/или sg_local)
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение кода ICMP
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение IPv
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-SG-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-SG-SG правилом
+ server-->>user: Успешно добавленное новое IE-SG-SG правило
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_Nftables.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_Nftables.mdx
new file mode 100644
index 00000000..c560eaef
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_Nftables.mdx
@@ -0,0 +1,332 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+
+
+ В этом разделе мы покажем, как правила фильтрации трафика, созданные с помощью Terraform и API, внедряются в настройки
+ nftables. Это позволяет легко интегрировать сложные правила безопасности прямо в вашу систему фильтрации трафика.
+
+
+ - `$Trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `$SrcSgroup` - {DICTIONARY['v1.13.0'].sg.short}
+ - `$DstGroup` - {DICTIONARY['v1.13.0'].sg.short}
+ - `$Transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `$NftRuleType` - {DICTIONARY['v1.13.0'].nftRuleType.short}
+ - `$IcmpTypeList` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `$SrcPorts` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `$DstPorts` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `$NftCounter` - {DICTIONARY['v1.13.0'].nftCounter.short}
+ - `$Log` - {DICTIONARY['v1.13.0'].log.short}
+ - `$NftRuleVerdict` - {DICTIONARY['v1.13.0'].nftRuleVerdict.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | шаблон параметра |
+ структура параметра |
+ значения |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | $Trace |
+ `nftrace set` |
+
+
+ -
+ 1 - трассировка включена
+
+ -
+ 0 - трассировка выключена
+
+
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $SrcSgroup |
+
+ `saddr`
+ |
+ `@${IPSet(sgName)}` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $DstSgroup |
+
+ `daddr`
+ |
+ `@${IPSet(sgName)}` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $Transport |
+
+ `tcp | udp | icmp`
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $NftRuleType |
+ `ip` |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $IcmpTypeList |
+ `type {}` |
+ Набор целочисленных значений от 0 до 255 |
+ |
+ |
+ ✔ |
+
+
+ | $SrcPorts |
+ `sport {}` |
+ Набор целочисленных значений от 1 до 65535 |
+ ✔ |
+ ✔ |
+ |
+
+
+ | $DstPorts |
+ `dport {}` |
+ Набор целочисленных значений от 1 до 65535 |
+ ✔ |
+ ✔ |
+ |
+
+
+ | $NftCounter |
+
+ `counter`
+ |
+ `packets 0 bytes 0` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $Log |
+
+ `log`
+ |
+ `level debug flags ip options` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $NftRuleVerdict |
+ `accept` |
+
+
+
+ $NftRuleVerdict определяет действие, которое будет применено к пакету в соответсвии с правилом. Это поле
+ может принимать значение `accept` или `drop` в зависимости от указанного в правиле.
+
+
+ Подробнее: [Verdict statement](../../tech-docs/to-nft/nftables/verdict-statement)
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Пример использования
+
+
+
+
+
+ #### Шаблон
+
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ $Trace $NftRuleType $SrcSgroup $Transport $SrcPorts $DstPorts $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-local-example {
+ # **********
+ nftrace set 1 ip saddr @NetIPv4-sg-example tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip saddr @NetIPv6-sg-example tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+ #### Шаблон
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ $Trace $NftRuleType $DstSgroup $Transport $SrcPorts $DstPorts $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sg-local-example {
+ # **********
+ nftrace set 1 ip daddr @NetIPv4-sg-example tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr @NetIPv6-sg-example tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
+
+
+
+ #### Шаблон
+
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ $Trace $NftRuleType $SrcSgroup $Transport $SrcPorts $DstPorts $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-local-example {
+ # **********
+ nftrace set 1 ip saddr @NetIPv4-sg-example udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip saddr @NetIPv6-sg-example udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+ #### Шаблон
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ $Trace $NftRuleType $DstSgroup $Transport $SrcPorts $DstPorts $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sg-local-example {
+ # **********
+ nftrace set 1 ip daddr @NetIPv4-sg-example udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr @NetIPv6-sg-example udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
+
+
+
+ #### Шаблон
+
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ $Trace $NftRuleType $DstSgroup $Transport $IcmpTypeList $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-local-example {
+ # **********
+ nftrace set 1 ip saddr @NetIPv4-sg-example icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip saddr @NetIPv6-sg-example icmpv6 type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+ #### Шаблон
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ $Trace $NftRuleType $DstSgroup $Transport $IcmpTypeList $NftCounter $Log $NftRuleVerdict
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain EGRESS-POSTROUTING-sg-local-example {
+ # **********
+ nftrace set 1 ip daddr @NetIPv4-sg-example icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr @NetIPv6-sg-example icmpv6 type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_TerraformModule.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_TerraformModule.mdx
new file mode 100644
index 00000000..7dc39bd3
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_TerraformModule.mdx
@@ -0,0 +1,435 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformModule.full}
+
+
+ Далее везде в документе подразумевается что все места, содержащие переменную `$traffic`, могут принять одно из двух
+ значений: `Ingress` `Egress`. Аналогчично для `$transport` подразумевается одно из четырех значений: `tcp`, `udp`,
+ `icmpIPv4`, `icmpIPv6`
+
+
+ - `rules` - {DICTIONARY['v1.13.0'].rules.short}
+ - `rules.$traffic[]` - {DICTIONARY['v1.13.0'].traffic.short}
+ - `rules.$traffic[].sgroupSet[]` - {DICTIONARY['v1.13.0'].sgroupSet.short}
+ - `rules.$traffic[].access.$transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `rules.$traffic[].access.$transport.action` - {DICTIONARY['v1.13.0'].action.short}
+ -
+ `rules.$traffic[].access.$transport.priority` - {DICTIONARY['v1.13.0'].priority.short}
+
+ - `rules.$traffic[].access.$transport.log` - {DICTIONARY['v1.13.0'].log.short}
+ - `rules.$traffic[].access.$transport.trace` - {DICTIONARY['v1.13.0'].trace.short}
+ -
+ `rules.$traffic[].access.$transport.ports[].description` - {DICTIONARY['v1.13.0'].description.short}
+
+ -
+ `rules.$traffic[].access.$transport.ports[].ports_to[]` - {DICTIONARY['v1.13.0'].dstPorts.short}
+
+ -
+ `rules.$traffic[].access.$transport.ports[].ports_from[]` - {DICTIONARY['v1.13.0'].srcPorts.short}
+
+ -
+ `rules.$traffic[].access.$transport.types[].description` - {DICTIONARY['v1.13.0'].description.short}
+
+ -
+ `rules.$traffic[].access.$transport.types[].type[]` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название параметра |
+ тип данных |
+ значение по умолчанию |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | rules |
+ Object[] |
+ [] |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[] |
+ Object[] |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].sgroupSet[] |
+ String[] |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.action |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.priority |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.log |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.trace |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[] |
+ Object[] |
+ "" |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[].description |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.ports[].ports_to[] |
+ Integer[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | rules.$traffic[].access.$transport.ports[].ports_from[] |
+ Integer[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | rules.$traffic[].access.$transport.types[] |
+ Object[] |
+ "" |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.types[].description |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.$traffic[].access.$transport.types[].type[] |
+ Integer[] |
+ null |
+ |
+ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `name`:
+
+
+ -
+ `rules.$traffic[].sgroupSet`:
+
+
+ -
+ `rules.$traffic[].access.$transport.priority`:
+
+
+ -
+ `rules.$traffic[].access.$transport.ports[].ports_to[]`:
+
+
+ -
+ `rules.$traffic[].access.$transport.ports[].ports_from[]`:
+
+
+ -
+ `rules.$traffic[].access.$transport.types[].type[]`:
+
+
+
+
+ Пример использования
+
+
+
+
+
+
+
+ ```yaml
+ name: "sg-local-example"
+ rules:
+ ingress:
+ - sgroupSet:
+ - "sg-example"
+ access:
+ tcp:
+ action: ACCEPT
+ priority: 0
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+
+
+ ```yaml
+ name: "sg-local-example"
+ rules:
+ egress:
+ - sgroupSet:
+ - "sg-example"
+ access:
+ tcp:
+ action: ACCEPT
+ priority: 0
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+
+
+
+
Ingress
+
+
+ ```yaml
+ name: "sg-local-example"
+ rules:
+ ingress:
+ - sgroupSet:
+ - "sg-example"
+ access:
+ udp:
+ action: ACCEPT
+ priority: 0
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
Egress
+
+
+ ```yaml
+ name: "sg-local-example"
+ rules:
+ egress:
+ - sgroupSet:
+ - "sg-example"
+ access:
+ udp:
+ action: ACCEPT
+ priority: 0
+ logs: true
+ trace: true
+ ports:
+ - description: "example"
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+
+
+
+
Ingress
+
+
+ ```yaml
+ name: "sg-local-example"
+ rules:
+ ingress:
+ - sgroupSet:
+ - "sg-example"
+ access:
+ icmpIPv4:
+ action: ACCEPT
+ priority: -100
+ logs: true
+ trace: true
+ types:
+ - description: "example"
+ type:
+ - 0
+ - 8
+ ```
+
+
+
Egress
+
+
+ ```yaml
+ name: "sg-local-example"
+ rules:
+ egress:
+ - sgroupSet:
+ - "sg-example"
+ access:
+ icmpIPv4:
+ action: ACCEPT
+ priority: -100
+ logs: true
+ trace: true
+ types:
+ - description: "example"
+ type:
+ - 0
+ - 8
+ ```
+
+
+
+
+
+
+
+
Ingress
+
+
+ ```yaml
+ name: "sg-local-example"
+ rules:
+ ingress:
+ - sgroupSet:
+ - "sg-example"
+ access:
+ icmpIPv6:
+ action: ACCEPT
+ priority: -100
+ logs: true
+ trace: true
+ types:
+ - description: "example"
+ type:
+ - 0
+ - 8
+ ```
+
+
+
Egress
+
+
+ ```yaml
+ name: "sg-local-example"
+ rules:
+ egress:
+ - sgroupSet:
+ - "sg-example"
+ access:
+ icmpIPv6:
+ action: ACCEPT
+ priority: -100
+ logs: true
+ trace: true
+ types:
+ - description: "example"
+ type:
+ - 0
+ - 8
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_TerraformResource.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_TerraformResource.mdx
new file mode 100644
index 00000000..ae02b234
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2s-ie/_TerraformResource.mdx
@@ -0,0 +1,450 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformResource.full}
+
+
+ - `items` - {DICTIONARY['v1.13.0'].terraformItems.short}
+ - `items.$ruleName` - {DICTIONARY['v1.13.0'].terraformRuleName.short}
+ - `items.$ruleName.traffic` - {DICTIONARY['v1.13.0'].traffic.short}
+ - `items.$ruleName.transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `items.$ruleName.sg` - {DICTIONARY['v1.13.0'].sg.short}
+ - `items.$ruleName.sg_local` - {DICTIONARY['v1.13.0'].sgLocal.short}
+ - `items.$ruleName.ports` - {DICTIONARY['v1.13.0'].ports.short}
+ - `items.$ruleName.ports[].d` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `items.$ruleName.ports[].s` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `items.$ruleName.logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `items.$ruleName.trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `items.$ruleName.ip_v` - {DICTIONARY['v1.13.0'].icmpV.short}
+ - `items.$ruleName.type` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `items.$ruleName.action` - {DICTIONARY['v1.13.0'].action.short}
+ - `items.$ruleName.priority` - {DICTIONARY['v1.13.0'].priority.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | items |
+ да |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName |
+ да |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.traffic |
+ да |
+
+ Enum("ingress", "egress")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.transport |
+ да |
+ Enum("TCP", "UDP") |
+ |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.sg |
+ да |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.sg_local |
+ да |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ports |
+ нет |
+ Object[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.ports[].d |
+ нет |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.ports[].s |
+ нет |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.logs |
+ нет |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.trace |
+ нет |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ip_v |
+ да |
+ Enum("IPv4", "IPv6") |
+ |
+ |
+ |
+ ✔ |
+
+
+ | items.$ruleName.type |
+ да |
+ String[] |
+ null |
+ |
+ |
+ ✔ |
+
+
+ | items.$ruleName.action |
+ да |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.priority |
+ нет |
+ Integer |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `items`:
+
+
+ -
+ `items.$ruleName`:
+
+
+ -
+ `items.$ruleName.sg`:
+
+
+ -
+ `items.$ruleName.sg_local`:
+
+
+ -
+ `items.$ruleName.ports[].s`:
+
+
+ -
+ `items.$ruleName.ports[].d`:
+
+
+ -
+ `items.$ruleName.type[]`:
+
+
+ -
+ `items.$ruleName.priority`:
+
+
+
+
+Пример использования
+
+
+
+
+
+
Ingress
+
+ ```hcl
+ resource "sgroups_ie_rules" "rules" {
+ items = {
+ "tcp:sg-local(sg-local-example)sg(sg-example)ingress" = {
+ traffic = "ingress"
+ logs = true
+ trace = true
+ sg_local = "sg-local-example"
+ sg = "sg-example"
+ transport = "tcp"
+ ports = [{
+ d = "80"
+ s = ""
+ }]
+ action = "ACCEPT"
+ priority = 0
+ }
+ }
+ }
+ ```
+
+
+
+
+
Egress
+
+
+ ```hcl
+ resource "sgroups_ie_rules" "rules" {
+ items = {
+ "tcp:sg-local(sg-local-example)sg(sg-example)egress" = {
+ traffic = "egress"
+ logs = true
+ trace = true
+ sg_local = "sg-local-example"
+ sg = "sg-example"
+ transport = "tcp"
+ ports = [{
+ d = "80"
+ s = ""
+ }]
+ action = "ACCEPT"
+ priority = 0
+ }
+ }
+ }
+ ```
+
+
+
+
+
+
+
+
+
+
Ingress
+
+
+ ```hcl
+ resource "sgroups_ie_rules" "rules" {
+ items = {
+ "udp:sg-local(sg-local-example)sg(sg-example)ingress" = {
+ traffic = "ingress"
+ logs = true
+ trace = true
+ sg_local = "sg-local-example"
+ sg = "sg-example"
+ transport = "udp"
+ ports = [{
+ d = "80"
+ s = ""
+ }]
+ action = "ACCEPT"
+ priority = 0
+ }
+ }
+ }
+ ```
+
+
+
+
+
Egress
+
+
+ ```hcl
+ resource "sgroups_ie_rules" "rules" {
+ items = {
+ "udp:sg-local(sg-local-example)sg(sg-example)egress" = {
+ traffic = "egress"
+ logs = true
+ trace = true
+ sg_local = "sg-local-example"
+ sg = "sg-example"
+ transport = "udp"
+ ports = [{
+ d = "80"
+ s = ""
+ }]
+ action = "ACCEPT"
+ priority = 0
+ }
+ }
+ }
+ ```
+
+
+
+
+
+
+
+
Ingress
+
+ ```hcl
+ resource "sgroups_ie_icmp_rules" "rules" {
+ items = {
+ "icmp4:sg-local(sg-local-example)sg(sg-example)ingress" = {
+ traffic = "ingress"
+ logs = true
+ trace = true
+ sg_local = "sg-local-example"
+ sg = "sg-example"
+ ip_v = "IPv4"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = -100
+ }
+ }
+ }
+ ```
+
+
+
+
Egress
+
+
+ ```hcl
+ resource "sgroups_icmp_rules" "rules" {
+ items = {
+ "icmp4:sg-local(sg-local-example)sg(sg-example)egress" = {
+ traffic = "egress"
+ logs = true
+ trace = true
+ sg_local = "sg-local-example"
+ sg = "sg-example"
+ ip_v = "IPv4"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = -100
+ }
+ }
+ }
+ ```
+
+
+
+
+
+
+
+
Ingress
+
+ ```hcl
+ resource "sgroups_ie_icmp_rules" "rules" {
+ items = {
+ "icmp6:sg-local(sg-local-example)sg(sg-example)ingress" = {
+ traffic = "ingress"
+ logs = true
+ trace = true
+ sg_local = "sg-local-example"
+ sg = "sg-example"
+ ip_v = "IPv6"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = -100
+ }
+ }
+ }
+ ```
+
+
+
+
Egress
+
+
+ ```hcl
+ resource "sgroups_icmp_rules" "rules" {
+ items = {
+ "icmp6:sg-local(sg-local-example)sg(sg-example)egress" = {
+ traffic = "egress"
+ logs = true
+ trace = true
+ sg_local = "sg-local-example"
+ sg = "sg-example"
+ ip_v = "IPv6"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = -100
+ }
+ }
+ }
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_Api.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_Api.mdx
new file mode 100644
index 00000000..671fc4ec
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_Api.mdx
@@ -0,0 +1,599 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
+import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
+import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
+
+#### Входные параметры
+
+
+ - `$node.rules[]` - {DICTIONARY['v1.13.0'].rules.short}
+ - `$node.rules[].sgFrom` - {DICTIONARY['v1.13.0'].sg.short}
+ - `$node.rules[].sgTo` - {DICTIONARY['v1.13.0'].sg.short}
+ - `$node.rules[].logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `$node.rules[].trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `$node.rules[].ports` - {DICTIONARY['v1.13.0'].ports.short}
+ - `$node.rules[].ports[].d` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `$node.rules[].ports[].s` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `$node.rules[].transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `$node.rules[].ICMP` - {DICTIONARY['v1.13.0'].apiIcmp.short}
+ - `$node.rules[].ICMP.IPv` - {DICTIONARY['v1.13.0'].icmpV.short}
+ - `$node.rules[].ICMP.Types` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `$node.rules[].action` - {DICTIONARY['v1.13.0'].action.short}
+ - `$node.rules[].priority` - {DICTIONARY['v1.13.0'].priorityst.short}
+ - `$node.rules[].priority.some` - {DICTIONARY['v1.13.0'].priority.short}
+ - `syncOp` - {DICTIONARY['v1.13.0'].syncOp.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+ 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 |
+ да |
+
+ Enum("UNDEF", "ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $node.rules[].priority |
+ нет |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $node.rules[].priority.some |
+ нет |
+ Integer |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | syncOp |
+ да |
+
+ Enum("Delete", "Upsert", "FullSync")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `sgSgRules.rules[].sgFrom`:
+
+
+ -
+ `sgSgRules.rules[].sgTo`:
+
+
+ -
+ `sgSgRules.rules[].ports[].d`:
+
+
+ -
+ `sgSgRules.rules[].ports[].s`:
+
+
+ -
+ `sgSgRules.rules[].ICMP.Types[]`:
+
+
+
+
+#### Пример использования
+
+
+
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+ Диаграмма последовательности
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-SG-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG(sg и/или sg_local)
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Пересечение значений source портов
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-SG-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-SG-SG правилом
+ server-->>user: Успешно добавленное новое IE-SG-SG правило
+ ```
+
+
+
+
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+ Диаграмма последовательности
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-SG-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG(sg и/или sg_local)
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Пересечение значений source портов
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-SG-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-SG-SG правилом
+ server-->>user: Успешно добавленное новое IE-SG-SG правило
+ ```
+
+
+
+
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+ Диаграмма последовательности
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-SG-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG(sg и/или sg_local)
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение кода ICMP
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение IPv
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-SG-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-SG-SG правилом
+ server-->>user: Успешно добавленное новое IE-SG-SG правило
+ ```
+
+
+
+
+
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+ Диаграмма последовательности
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить IE-SG-SG правило
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt Нет такого значения имени SG(sg и/или sg_local)
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение кода ICMP
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение IPv
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о IE-SG-SG в БД
+
+ db-->>server: Ответ с успешно добавленным новым IE-SG-SG правилом
+ server-->>user: Успешно добавленное новое IE-SG-SG правило
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_Nftables.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_Nftables.mdx
new file mode 100644
index 00000000..448ef610
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_Nftables.mdx
@@ -0,0 +1,276 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+
+
+ В этом разделе мы покажем, как правила фильтрации трафика, созданные с помощью Terraform и API, внедряются в настройки
+ nftables. Это позволяет легко интегрировать сложные правила безопасности прямо в вашу систему фильтрации трафика.
+
+
+
+ - `$Trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `$SrcSgroup` - {DICTIONARY['v1.13.0'].sg.short}
+ - `$DstGroup` - {DICTIONARY['v1.13.0'].sg.short}
+ - `$Transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `$NftRuleType` - {DICTIONARY['v1.13.0'].nftRuleType.short}
+ - `$IcmpTypeList` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `$SrcPorts` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `$DstPorts` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `$NftCounter` - {DICTIONARY['v1.13.0'].nftCounter.short}
+ - `$Log` - {DICTIONARY['v1.13.0'].log.short}
+ - `$NftRuleVerdict` - {DICTIONARY['v1.13.0'].nftRuleVerdict.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | шаблон параметра |
+ структура параметра |
+ значения |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | $Trace |
+ `nftrace set` |
+
+
+ -
+ 1 - трассировка включена
+
+ -
+ 0 - трассировка выключена
+
+
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $SrcSgroup |
+
+ `saddr`
+ |
+ `@${IPSet(sgName)}` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $DstSgroup |
+
+ `daddr`
+ |
+ `@${IPSet(sgName)}` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $Transport |
+
+ `tcp | udp | icmp`
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $NftRuleType |
+ `ip` |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $IcmpTypeList |
+ `type {}` |
+ Набор целочисленных значений от 0 до 255 |
+ |
+ |
+ ✔ |
+
+
+ | $SrcPorts |
+ `sport {}` |
+ Набор целочисленных значений от 0 до 65535 |
+ ✔ |
+ ✔ |
+ |
+
+
+ | $DstPorts |
+ `dport {}` |
+ Набор целочисленных значений от 0 до 65535 |
+ ✔ |
+ ✔ |
+ |
+
+
+ | $NftCounter |
+
+ `counter`
+ |
+ `packets 0 bytes 0` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $Log |
+
+ `log`
+ |
+ `level debug flags ip options` |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | $NftRuleVerdict |
+ `accept` |
+
+
+
+ $NftRuleVerdict определяет действие, которое будет применено к пакету в соответсвии с правилом. Это поле
+ может принимать значение `accept` или `drop` в зависимости от указанного в правиле.
+
+
+ Подробнее: [Verdict statement](../../tech-docs/to-nft/nftables/verdict-statement)
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Пример использования
+
+
+
+ #### Шаблон
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ ${Trace} ${RuleType} ${SrcSgroup} ${Transport} ${SrcPorts} ${DstPorts} ${Counter} ${Log} ${Verdict}
+ # **********
+ }
+
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ ${Trace} ${RuleType} ${DstSgroup} ${Transport} ${SrcPorts} ${DstPorts} ${Counter} ${Log} ${Verdict}
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-example-to {
+ # **********
+ nftrace set 1 ip saddr NetIPv4-sg-example-from tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip saddr NetIPv6-sg-example-from tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+
+ chain EGRESS-POSTROUTING-sg-example-from {
+ # **********
+ nftrace set 1 ip daddr NetIPv4-sg-example-to tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr NetIPv6-sg-example-to tcp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
+ #### Шаблон
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ ${Trace} ${RuleType} ${SrcSgroup} ${Transport} ${SrcPorts} ${DstPorts} ${Counter} ${Log} ${Verdict}
+ # **********
+ }
+
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ ${Trace} ${RuleType} ${DstSgroup} ${Transport} ${SrcPorts} ${DstPorts} ${Counter} ${Log} ${Verdict}
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-example-to {
+ # **********
+ nftrace set 1 ip saddr NetIPv4-sg-example-from udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip saddr NetIPv6-sg-example-from udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+
+ chain EGRESS-POSTROUTING-sg-example-from {
+ # **********
+ nftrace set 1 ip daddr NetIPv4-sg-example-to udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr NetIPv6-sg-example-to udp dport { 80, 443 } sport { 64231 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
+ #### Шаблон
+
+ ```hcl
+ chain INGRESS-INPUT-sgName {
+ # **********
+ ${Trace} ${RuleType} ${SrcSgroup} ${Transport} ${TypeList} ${Counter} ${Log} ${Verdict}
+ # **********
+ }
+
+ chain EGRESS-POSTROUTING-sgName {
+ # **********
+ ${Trace} ${RuleType} ${DstSgroup} ${Transport} ${TypeList} ${Counter} ${Log} ${Verdict}
+ # **********
+ }
+ ```
+
+ #### Пример использования
+
+ ```hcl
+ chain INGRESS-INPUT-sg-example-to {
+ # **********
+ nftrace set 1 ip saddr NetIPv4-v4-sg-example-from icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip saddr NetIPv6-v6-sg-example-from icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+
+ chain EGRESS-POSTROUTING-sg-example-from {
+ # **********
+ nftrace set 1 ip daddr NetIPv4-sg-example-to icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ nftrace set 1 ip daddr NetIPv6-sg-example-to icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options accept
+ # **********
+ }
+ ```
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_TerraformModule.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_TerraformModule.mdx
new file mode 100644
index 00000000..64693ba1
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_TerraformModule.mdx
@@ -0,0 +1,295 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformModule.full}
+
+
+ Далее везде в документе подразумевается что все места, содержащие переменную `$transport` иогут принимать одно из
+ четырех значений: `tcp`, `udp`, `icmpIPv4`, `icmpIPv6`.
+
+
+ - `rules` - {DICTIONARY['v1.13.0'].rules.short}
+ -
+ `rules.s2s[]` - Список правил, описывающий сетевое взаимодействие текущей Security Group с внешней Security Group.
+
+ - `rules.s2s[].sgroupSet[]` - {DICTIONARY['v1.13.0'].sgroupSet.short}
+ - `rules.s2s[].access.$transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `rules.s2s[].access.$transport.action` - {DICTIONARY['v1.13.0'].action.short}
+ - `rules.s2s[].access.$transport.priority` - {DICTIONARY['v1.13.0'].priority.short}
+ - `rules.s2s[].access.$transport.log` - {DICTIONARY['v1.13.0'].log.short}
+ - `rules.s2s[].access.$transport.trace` - {DICTIONARY['v1.13.0'].trace.short}
+ -
+ `rules.s2s[].access.$transport.ports[].description` - {DICTIONARY['v1.13.0'].description.short}
+
+ -
+ `rules.s2s[].access.$transport.ports[].ports_to[]` - {DICTIONARY['v1.13.0'].dstPorts.short}
+
+ -
+ `rules.s2s[].access.$transport.ports[].ports_from[]` - {DICTIONARY['v1.13.0'].srcPorts.short}
+
+ -
+ `rules.s2s[].access.$transport.types[].description` - {DICTIONARY['v1.13.0'].description.short}
+
+ -
+ `rules.s2s[].access.$transport.types[].type[]` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название параметра |
+ тип данных |
+ значение по умолчанию |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | rules |
+ Object[] |
+ [] |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s.sgroupSet[] |
+ String[] |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s.access.$transport |
+ Object[] |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s[].access.$transport.action |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s[].access.$transport.priority |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s[].access.$transport.log |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s[].access.$transport.trace |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s.access.$transport.ports[].description |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | rules.s2s.access.$transport.ports[].ports_to[] |
+ Integer[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | rules.s2s.access.$transport.ports[].ports_from[] |
+ Integer[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | rules.s2s[].access.$transport.types[].type[] |
+ Integer[] |
+ null |
+ |
+ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `name`:
+
+
+ -
+ `rules.s2s[].sgroupSet`:
+
+
+ -
+ `rules.s2s[].access.$transport.priority`:
+
+
+ -
+ `rules.s2s[].access.$transport.ports[].ports_to[]`:
+
+
+ -
+ `rules.s2s[].access.$transport.ports[].ports_from[]`:
+
+
+ -
+ `rules.s2s[].access.$transport.types[].type[]`:
+
+
+
+
+
+
+
+
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ s2s:
+ - sgroupSet:
+ - sg-example
+ access:
+ tcp:
+ action: ACCEPT
+ priority: -200
+ logs: true
+ trace: true
+ ports:
+ - description: ""
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ s2s:
+ - sgroupSet:
+ - sg-example
+ access:
+ udp:
+ action: ACCEPT
+ priority: -200
+ logs: true
+ trace: true
+ ports:
+ - description: ""
+ ports_from:
+ - 64231
+ ports_to:
+ - 443
+ - 80
+ ```
+
+
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ s2s:
+ - sgroupSet:
+ - sg-example
+ access:
+ icmpIPv4:
+ action: ACCEPT
+ priority: -300
+ logs: true
+ trace: true
+ types:
+ - description: ""
+ Types:
+ - 0
+ - 8
+ ```
+
+
+
+
+ ```yaml
+ name: sg-local-example
+ rules:
+ s2s:
+ - sgroupSet:
+ - sg-example
+ access:
+ icmpIPv6:
+ action: ACCEPT
+ priority: -300
+ logs: true
+ trace: true
+ types:
+ - description: ""
+ Types:
+ - 0
+ - 8
+ ```
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_TerraformResource.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_TerraformResource.mdx
new file mode 100644
index 00000000..dfd359ae
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/s2s/_TerraformResource.mdx
@@ -0,0 +1,306 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformResource.full}
+
+
+ - `items` - {DICTIONARY['v1.13.0'].terraformItems.short}
+ - `items.$ruleName` - {DICTIONARY['v1.13.0'].terraformRuleName.short}
+ - `items.$ruleName.transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `items.$ruleName.sg_from` - {DICTIONARY['v1.13.0'].sg.short}
+ - `items.$ruleName.sg_to` - {DICTIONARY['v1.13.0'].sg.short}
+ - `items.$ruleName.ports` - {DICTIONARY['v1.13.0'].ports.short}
+ - `items.$ruleName.ports[].d` - {DICTIONARY['v1.13.0'].dstPorts.short}
+ - `items.$ruleName.ports[].s` - {DICTIONARY['v1.13.0'].srcPorts.short}
+ - `items.$ruleName.logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `items.$ruleName.trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `items.$ruleName.ip_v` - {DICTIONARY['v1.13.0'].icmpV.short}
+ - `items.$ruleName.type` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `items.$ruleName.action` - {DICTIONARY['v1.13.0'].action.short}
+ - `items.$ruleName.priority` - {DICTIONARY['v1.13.0'].priority.short}
+
+
+
+
+ Области применения полей относительно используемого протокола
+
+
+ | название |
+ обязательность |
+ тип данных |
+ значение по умолчанию |
+ transport* |
+
+
+ | TCP |
+ UDP |
+ ICMP |
+
+
+
+
+ | items |
+ да |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName |
+ да |
+ Object |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.transport |
+ да |
+ Enum("TCP", "UDP") |
+ |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.sg_from |
+ да |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.sg_to |
+ да |
+ String |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ports |
+ нет |
+ Object[] |
+ null |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.ports[].d |
+ нет |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.ports[].s |
+ нет |
+ String |
+ "" |
+ ✔ |
+ ✔ |
+ |
+
+
+ | items.$ruleName.logs |
+ нет |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.trace |
+ нет |
+ Boolean |
+ false |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.ip_v |
+ да |
+ Enum("IPv4", "IPv6") |
+ |
+ |
+ |
+ ✔ |
+
+
+ | items.$ruleName.type |
+ да |
+ String[] |
+ null |
+ |
+ |
+ ✔ |
+
+
+ | items.$ruleName.action |
+ да |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+ | items.$ruleName.priority |
+ нет |
+ Integer |
+ |
+ ✔ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `items`:
+
+
+ -
+ `items.$ruleName`:
+
+
+ -
+ `items.$ruleName.sg_from`:
+
+
+ -
+ `items.$ruleName.sg_to`:
+
+
+ -
+ `items.$ruleName.ports[].s`:
+
+
+ -
+ `items.$ruleName.ports[].d`:
+
+
+ -
+ `items.$ruleName.type[]`:
+
+
+ -
+ `items.$ruleName.priority`:
+
+
+
+Пример использования
+
+
+
+ ```hcl
+ resource "sgroups_rules" "rules" {
+ items = {
+ "tcp:sg(sg-local-example)sg(sg-example)" = {
+ sg_from = "sg-local-example"
+ sg_to = "sg-example"
+ logs = true
+ trace = true
+ transport = "tcp"
+ ports = [{
+ d = "443,80"
+ s = "64231"
+ }]
+ action = "ACCEPT"
+ priority = -200
+ }
+ }
+ }
+ ```
+
+
+
+ ```hcl
+ resource "sgroups_rules" "rules" {
+ items = {
+ "udp:sg(sg-local-example)sg(sg-example)" = {
+ sg_from = "sg-local-example"
+ sg_to = "sg-example"
+ logs = true
+ trace = true
+ transport = "udp"
+ ports = [{
+ d = "443,80"
+ s = "64231"
+ }]
+ action = "ACCEPT"
+ priority = -200
+ }
+ }
+ }
+ ```
+
+
+
+ ```hcl
+ resource "sgroups_icmp_rules" "rules" {
+ items = {
+ "sg(sg-local-example)sg(sg-example)icmp4" => {
+ sg_from = "sg-local-example"
+ sg_to = "sg-example"
+ logs = true
+ trace = true
+ ip_v = "IPv4"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = -300
+ }
+ }
+ }
+ ```
+
+
+
+ ```hcl
+ resource "sgroups_icmp_rules" "rules" {
+ items = {
+ "sg(sg-local-example)sg(sg-example)icmp6" => {
+ sg_from = "sg-local-example"
+ sg_to = "sg-example"
+ logs = true
+ trace = true
+ ip_v = "IPv6"
+ type = [0,8]
+ action = "ACCEPT"
+ priority = -300
+ }
+ }
+ }
+ ```
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_Api.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_Api.mdx
new file mode 100644
index 00000000..31fbbf72
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_Api.mdx
@@ -0,0 +1,388 @@
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+import { FancyboxDiagram } from '@site/src/components/commonBlocks/FancyboxDiagram'
+import { RESPOND_CODES } from '@site/src/constants/errorCodes.tsx'
+import Codes from '@site/src/components/commonBlocks/Codes/_Codes.mdx'
+
+#### Входные параметры
+
+
+ - `groups.grous[]` - Структура, содержащая описание создаваемых Security Group
+ - `groups.groups[].defaultAction` - представляет действие по умолчанию в конце цепочек для SG
+ - `groups.groups[].logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `groups.groups[].name` - {DICTIONARY['v1.13.0'].sgLocal.short}
+ - `groups.groups[].networks` - Имена подсетей
+ - `groups.groups[].trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `sgIcmpRules.rules[]` - {DICTIONARY['v1.13.0'].rules.short}
+ - `sgIcmpRules.rules[].ICMP` - {DICTIONARY['v1.13.0'].apiIcmp.short}
+ - `sgIcmpRules.rules[].ICMP.IPv` - {DICTIONARY['v1.13.0'].icmpV.short}
+ - `sgIcmpRules.rules[].ICMP.Types` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `sgIcmpRules.rules[].Sg` - {DICTIONARY['v1.13.0'].sgLocal.short}
+ - `sgIcmpRules.rules[].logs` - {DICTIONARY['v1.13.0'].log.short}
+ - `sgIcmpRules.rules[].trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `sgIcmpRules.rules[].action` - {DICTIONARY['v1.13.0'].action.short}
+ - `syncOp` - {DICTIONARY['v1.13.0'].syncOp.short}
+
+
+
+
+
+
+ | название |
+ обязательность |
+ тип данных |
+ Значение по умолчанию |
+ API request |
+
+
+ | groups |
+ sgIcmpRules |
+
+
+
+
+ | groups.groups[] |
+ да |
+ Object[] |
+ |
+ ✔ |
+ |
+
+
+ | groups.groups[].defaultAction |
+ да |
+
+ Enum("ACCEPT", "DROP")
+ |
+ |
+ ✔ |
+ |
+
+
+ | 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 |
+ да |
+
+ Enum("UNDEF", "ACCEPT", "DROP")
+ |
+ |
+ |
+ ✔ |
+
+
+ | syncOp |
+ да |
+
+ Enum("Delete", "Upsert", "FullSync")
+ |
+ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+Ограничения
+
+
+ -
+ `groups.groups[].name`:
+
+
+ -
+ `groups.groups[].networks[]`:
+
+
+ -
+ `sgIcmpRules.rules[].Sg`:
+
+
+ -
+ `$node.rules[].type[]`:
+
+
+
+
+#### Пример использования
+
+
+
+
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+ Диаграмма последовательности
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить Security Group
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt SG c таким названием уже существует
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Пересечение значений source портов
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение поля определяющее действие с данными из запроса
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о SG в БД
+
+ db-->>server: Ответ с успешно добавленной новой SG
+ server-->>user: Успешно добавленная новая SG
+ ```
+
+
+
+
+
+ ```bash
+ curl '127.0.0.1:9007/v1/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
+
+
+
+
+
+
+ ```mermaid
+ sequenceDiagram
+ participant user as User
+ participant server as Server
+ participant db as Database
+
+ user->>server: Добавить Security Group
+
+ alt Ошибка в запросе
+ server-->>user: Показать ошибку в запросе
+ end
+
+ server->>db: Отправить запрос
+ db->>db: Проверка входящего запроса
+
+ alt SG c таким названием уже существует
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение кода ICMP
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ alt Некорректное значение IPv
+ db-->>server: Ответ с ошибкой
+ server-->>user: Показать ошибку в запросе
+ end
+
+ db->>db: Сохранить данные о SG в БД
+
+ db-->>server: Ответ с успешно добавленной новой SG
+ server-->>user: Успешно добавленная новая SG
+ ```
+
+
+
+
+
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_Nftables.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_Nftables.mdx
new file mode 100644
index 00000000..609ab4e8
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_Nftables.mdx
@@ -0,0 +1,133 @@
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+
+
+ В этом разделе мы покажем, как ресурс `groups`, созданный с помощью Terraform/API, внедряется в настройки nftables. В
+ контексте HBF мы интерпретируем ресурс groups как проекцию на ресурсы `IPSet` и `Chains` которые функционируют в
+ рамках инструмента nftables, обеспечивая более широкие возможности для управления подсетями и правилами.
+
+
+ - `$Trace` - {DICTIONARY['v1.13.0'].trace.short}
+ - `$Transport` - {DICTIONARY['v1.13.0'].transport.short}
+ - `$TypeList` - {DICTIONARY['v1.13.0'].icmpTypes.short}
+ - `$Log` - {DICTIONARY['v1.13.0'].log.short}
+ - `$Counter` - {DICTIONARY['v1.13.0'].nftCounter.short}
+ - `$Verdict` - {DICTIONARY['v1.13.0'].nftRuleVerdict.short}
+
+
+
+
+
+
+ | шаблон параметра |
+ структура параметра |
+ значение |
+ общие |
+ icmp |
+
+
+
+
+ | $Trace |
+ `nftrace set` |
+
+
+ -
+ 1 - трассировка включена
+
+ -
+ 0 - трассировка выключена
+
+
+ |
+ ✔ |
+ ✔ |
+
+
+ | $Transport |
+ `icmp` |
+ |
+ |
+ ✔ |
+
+
+ | $TypeList |
+ `type {}` |
+ Набор целочисленных значений от 0 до 255 |
+ |
+ ✔ |
+
+
+ | $Log |
+
+ `log`
+ |
+ `level debug flags ip options` |
+ ✔ |
+ ✔ |
+
+
+ | $Counter |
+
+ `counter`
+ |
+ `packets 0 bytes 0` |
+ ✔ |
+ ✔ |
+
+
+ | $Verdict |
+ `accept` |
+
+
+
+ $Verdict определяет действие, которое будет применено к пакету в соответсвии с правилом. Это поле может
+ принимать значение `accept` или `drop` в зависимости от указанного в правиле.
+
+
+ Подробнее: [Verdict statement](../../tech-docs/to-nft/nftables/verdict-statement)
+ |
+ ✔ |
+ ✔ |
+
+
+
+
+
+#### Шаблон
+
+```hcl
+chain INGRESS-INPUT-sgName {
+ # **********
+ $Trace $Transport $TypeList $Counter $Log $Verdict //ICMP
+ # **********
+ $Trace $Counter $Log $Verdict //Общие
+}
+
+chain EGRESS-POSTROUTING-sgName {
+ # **********
+ $Trace $Transport $TypeList $Counter $Log $Verdict //ICMP
+ # **********
+ $Trace $Counter $Log $Verdict //Общие
+}
+```
+
+#### Пример использования
+
+```hcl
+chain INGRESS-INPUT-sg-example {
+ # **********
+ nftrace set 1 icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options drop //ICMP
+ nftrace set 1 icmpv6 type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options drop //ICMP
+ # **********
+ nftrace set 1 counter packets 0 bytes 0 log level debug flags ip options accept //Общие
+}
+
+
+chain EGRESS-POSTROUTING-sg-example {
+ # **********
+ nftrace set 1 icmp type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options drop //ICMP
+ nftrace set 1 icmpv6 type { 0, 8 } counter packets 0 bytes 0 log level debug flags ip options drop //ICMP
+ # **********
+ nftrace set 1 counter packets 0 bytes 0 log level debug flags ip options accept //Общие
+}
+```
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_TerraformModule.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_TerraformModule.mdx
new file mode 100644
index 00000000..61171412
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_TerraformModule.mdx
@@ -0,0 +1,159 @@
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformModule.full}
+
+
+ Далее везде в документе подразумевается что все места, содержащие переменную `$transport` подразумевается одно из двух
+ значений: `icmp`, `icmp6`.
+
+
+
+
+
+
+ | название параметра |
+ описание |
+ тип данных |
+ значение по умолчанию |
+
+
+
+
+ | name |
+ Название Security Group |
+ String |
+ |
+
+
+ | cidrs[] |
+ Список CIDR, связанных с Security Group |
+ String[] |
+ [] |
+
+
+ | default_rules |
+
+ Структура, описывающая правила по умолчанию, для пакетов не соответствующих ни одному из установленных правил
+ в цепочке.
+ |
+ Object |
+ {} |
+
+
+ | default_rules.access |
+
+ Структура, описывающая взаимодействие с пакетами не соответствующими ни одному из установленных правил в
+ таблице.
+ |
+ Object |
+ {} |
+
+
+ | default_rules.access.default.logs |
+ {DICTIONARY['v1.13.0'].log.short} |
+ Boolean |
+ false |
+
+
+ | default_rules.access.default.trace |
+ {DICTIONARY['v1.13.0'].trace.short} |
+ Boolean |
+ false |
+
+
+ | default_rules.access.default.action |
+
+ Определяет действие по умолчанию для пакетов, не соответствующих ни одному из установленных правил в цепочке.
+ |
+
+ Enum("ACCEPT", "DROP")
+ |
+ `ACCEPT` |
+
+
+ | default_rules.access.$transport |
+
+ Структура, описывающая взаимодействие с ICMP-трафиком по умолчанию. Для обработки ICMP-трафика добавляется
+ соответствующее правило в начало цепочки.
+ |
+ Object |
+ {} |
+
+
+ | default_rules.access.$transport.logs |
+ {DICTIONARY['v1.13.0'].log.short} |
+ Boolean |
+ false |
+
+
+ | default_rules.access.$transport.trace |
+ {DICTIONARY['v1.13.0'].trace.short} |
+ Boolean |
+ false |
+
+
+ | default_rules.access.$transport.type[] |
+ {DICTIONARY['v1.13.0'].icmpTypes.short} |
+ Integer[] |
+ [] |
+
+
+ | default_rules.access.$transport.action |
+ {DICTIONARY['v1.13.0'].action.short} |
+ Enum("ACCEPT", "DROP") |
+ `ACCEPT` |
+
+
+
+
+
+#### Ограничения
+
+
+ -
+ `name`:
+
+
+ -
+ `cidrs[]`:
+
+
+ -
+ `default_rules.access.icmp.type`:
+
+
+ -
+ `default_rules.access.icmp6.type`:
+
+
+
+
+#### [Пример использования](https://github.com/H-BF/swarm-spec-template/blob/master/spec/sg-example.yaml#L2)
+
+```yaml
+name: sg-example
+cidrs:
+ - 10.0.0.0/24
+ - 11.0.0.0/24
+default_rules:
+ access:
+ default:
+ logs: true
+ trace: true
+ action: ACCEPT
+
+ icmp:
+ action: DROP
+ logs: true
+ trace: true
+ type: [0, 8]
+
+ icmp6:
+ action: DROP
+ logs: true
+ trace: true
+ type: [0, 8]
+```
diff --git a/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_TerraformResource.mdx b/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_TerraformResource.mdx
new file mode 100644
index 00000000..5c6bf065
--- /dev/null
+++ b/documentation/versioned_docs/version-v1.14.0/snippets/securityGroups/_TerraformResource.mdx
@@ -0,0 +1,163 @@
+import { Restrictions } from '@site/src/components/commonBlocks/Restrictions'
+import { DICTIONARY } from '@site/src/constants/dictionary.ts'
+import { RESTRICTIONS } from '@site/src/constants/restrictions.tsx'
+
+
+
{DICTIONARY['v1.13.0'].terraformResource.full}
+
+
+ Далее везде в документе подразумевается что все места, содержащие переменную `$transport` (
+ {DICTIONARY['v1.13.0'].transport.short}) подразумевается одно из двух значений: `icmp`, `icmp6`.
+
+
+
+
+
+
+ | название |
+ обязательность |
+ тип данных |
+ доп. описание |
+
+
+
+
+ | items |
+ да |
+ Object |
+ Cписок ресурсов создаваемые terraform ресурсом. |
+
+
+ | items.key |
+ да |
+ String |
+ Уникальный ключ блока items. |
+
+
+ | items.key.name |
+ да |
+ String |
+ Имя Security Group. |
+
+
+ | items.key.networks |
+ да |
+ String[] |
+
+ Список содержащий имена подсетей которые включены в указанную группу безопасности. Т.к. описывается
+ имплементация Terrafom module в Terraform resource то имя Networks совпадает с CIDR хотя им не является.
+ |
+
+
+ | items.key.logs |
+ нет |
+ Boolean |
+ {DICTIONARY['v1.13.0'].log.short} |
+
+
+ | items.key.trace |
+ нет |
+ Boolean |
+ {DICTIONARY['v1.13.0'].trace.short} |
+
+
+ | items.key.default_action |
+ да |
+ Enum("DROP", "ACCEPT") |
+
+ Определяет действие по умолчанию для пакетов, не соответствующих ни одному из установленных правил в цепочке.
+ |
+
+
+ | items.key.$transport |
+ да |
+ Object |
+
+ Структура, описывающая взаимодействие с ICMP-трафиком по умолчанию. Для обработки ICMP-трафика добавляется
+ соответствующее правило в начало цепочки.
+ |
+
+
+ | items.key.$transport.logs |
+ нет |
+ Boolean |
+ {DICTIONARY['v1.13.0'].log.short} |
+
+
+ | items.key.$transport.trace |
+ нет |
+ Boolean |
+ {DICTIONARY['v1.13.0'].trace.short} |
+
+
+ | items.key.$transport.type[] |
+ да |
+ String[] |
+ {DICTIONARY['v1.13.0'].icmpTypes.short} |
+
+
+ | items.key.$transport.action |
+ да |
+ Enum("ACCEPT", "DROP") |
+ {DICTIONARY['v1.13.0'].action.short} |
+
+
+
+
+
+#### Ограничения
+
+
+ -
+ `items`:
+
+
+ -
+ `items.key`:
+
+
+ -
+ `items.key.name`:
+
+
+ -
+ `items.key.networks`:
+
+
+ -
+ `items.key.icmp.type`:
+
+
+ -
+ `items.key.icmp6.type`:
+
+
+
+
+#### Пример использования
+
+```hcl
+resource "sgroups_groups" "groups" {
+ items = {
+ key = {
+ name = "sg-example"
+ networks = ["10.0.0.0/24", "11.0.0.0/24"]
+ logs = true
+ trace = true
+ default_action = "ACCEPT"
+ icmp = {
+ logs = true
+ trace = true
+ type = [0, 8]
+ action = "DROP"
+ }
+ icmp6 = {
+ logs = true
+ trace = true
+ type = [0, 8]
+ action = "DROP"
+ }
+ }
+ }
+}
+```
diff --git a/documentation/versioned_docs/version-v1.14.0/tech-docs/rule-configuration/networks.mdx b/documentation/versioned_docs/version-v1.14.0/tech-docs/rule-configuration/networks.mdx
index e03e3dd8..efd83594 100644
--- a/documentation/versioned_docs/version-v1.14.0/tech-docs/rule-configuration/networks.mdx
+++ b/documentation/versioned_docs/version-v1.14.0/tech-docs/rule-configuration/networks.mdx
@@ -4,10 +4,10 @@ id: networks
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
-import TerraforModule from '@site/src/snippets/networks/_TerraformModule.mdx'
-import TerraforResource from '@site/src/snippets/networks/_TerraformResource.mdx'
-import Api from '@site/src/snippets/networks/_Api.mdx'
-import Nftables from '@site/src/snippets/networks/_Nftables.mdx'
+import TerraforModule from '../../snippets/networks/_TerraformModule.mdx'
+import TerraforResource from '../../snippets/networks/_TerraformResource.mdx'
+import Api from '../../snippets/networks/_Api.mdx'
+import Nftables from '../../snippets/networks/_Nftables.mdx'
# Networks
diff --git a/documentation/versioned_docs/version-v1.14.0/tech-docs/rule-configuration/s2c-ie.mdx b/documentation/versioned_docs/version-v1.14.0/tech-docs/rule-configuration/s2c-ie.mdx
index 3df4828d..46fc4d68 100644
--- a/documentation/versioned_docs/version-v1.14.0/tech-docs/rule-configuration/s2c-ie.mdx
+++ b/documentation/versioned_docs/version-v1.14.0/tech-docs/rule-configuration/s2c-ie.mdx
@@ -4,18 +4,18 @@ id: s2c-ie
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
-import TerraforModule from '@site/src/snippets/s2c-ie/_TerraformModule.mdx'
-import TerraformResource from '@site/src/snippets/s2c-ie/_TerraformResource.mdx'
-import Nftables from '@site/src/snippets/s2c-ie/_Nftables.mdx'
-import Api from '@site/src/snippets/s2c-ie/_Api.mdx'
+import TerraforModule from '../../snippets/s2c-ie/_TerraformModule.mdx'
+import TerraformResource from '../../snippets/s2c-ie/_TerraformResource.mdx'
+import Nftables from '../../snippets/s2c-ie/_Nftables.mdx'
+import Api from '../../snippets/s2c-ie/_Api.mdx'
# Sgroup to CIDR (Ingress/Egress)
- Ресурс `Security Group to CIDR` представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за
- сетевым трафиком между различными группами безопасности и подсетями, используя TCP, UDP и ICMP протоколы. Этот ресурс
- дает возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и определенными
- подсетями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
+ Ресурс `Security Group to CIDR` представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и
+ контроль за сетевым трафиком между различными группами безопасности и подсетями, используя TCP, UDP и ICMP протоколы.
+ Этот ресурс дает возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и
+ определенными подсетями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
- Ресурс `Security Group to FQDN` представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за сетевым
- трафиком между различными группами безопасности и IP адресами стоящие за FQDN записями, используя TCP, UDP протоколы. Этот ресурс дает
- возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и IP адресами стоящие за определенными FQDN
- записями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
+ Ресурс `Security Group to FQDN` представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и
+ контроль за сетевым трафиком между различными группами безопасности и IP адресами стоящие за FQDN записями, используя
+ TCP, UDP протоколы. Этот ресурс дает возможность детально настроить, какой трафик разрешен к передаче между группами
+ безопасности и IP адресами стоящие за определенными FQDN записями, тем самым гарантируя высокий уровень защиты и
+ управления сетевой инфраструктурой.