Sgroup to FQDN (Egress)
Ресурс Security Group to FQDN представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за сетевым
трафиком между различными группами безопасности и IP адресами стоящие за FQDN записями, используя TCP, UDP протоколы. Этот ресурс дает
возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и IP адресами стоящие за определенными FQDN
записями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.
- Terraform module
- Terraform resource
- API
- nftables
Terraform module представляет собой высокоуровневую абстракцию над terraform resources, которая упрощ ает работу с ресурсами Terraform, скрывая сложность их непосредственного использования. Он предлагает простой и понятный интерфейс для взаимодействия, позволяя пользователям легко интегрироваться и управлять компонентами инфраструктуры без необходимости глубоко погружаться в детали каждого ресурса.
Далее везде в документе подразумевается что все места, содержащие переменную $traffic, могут принять значениe:
Egress. Аналогчично для $transport подразумевается одно из двух значений: tcp, udp.
rules- Структура, содержащая описание создаваемых правил.rules.$traffic[]- Поле описывающий направление трафика.rules.$traffic[].fqdnSet[]- Список, содержащий FQDN записи.rules.$traffic[].access.$transport- Протокол L3/L4 уровня модели OSI.rules.$traffic[].access.$transport.action- Действие для пакетов в сформированных правил в цепочке.rules.$traffic[].access.$transport.priority- Поле определяющее порядок применения правил в цепочке.rules.$traffic[].access.$transport.log- Включить/отключить логирование.rules.$traffic[].access.$transport.trace- В ключить/отключить трассировку.rules.$traffic[].access.$transport.ports[].description- Формальное текстовое описание.rules.$traffic[].access.$transport.ports[].ports_to[]- Набор открытых портов получателяrules.$traffic[].access.$transport.ports[].ports_from[]- Набор открытых портов отправителя.
| название параметра | тип данных | значение по умолчанию | transport* | ||
|---|---|---|---|---|---|
| TCP | UDP | ||||
| rules | Object[] | [] | ✔ | ✔ | |
| rules.$traffic[] | Object[] | ✔ | ✔ | ||
| rules.$traffic[].fqdnSet[] | String[] | ✔ | ✔ | ||
| rules.$traffic[].access.$transport | Object | ✔ | ✔ | ||
| rules.$traffic[].access.$transport.action | ✔ | ✔ | |||
| 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:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
rules.$traffic[].fqdnSet:rules.$traffic[].access.$transport.priority:- Значения должны находиться в интервале от -32768 до 32767
rules.$traffic[].access.$transport.ports[].ports_to[]:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
rules.$traffic[].access.$transport.ports[].ports_from[]:- Значения портов должно находиться в интервале от 1 до 65535.
- Если значение не будет указано то будет использоваться весь диапазон портов.
- Значения портов прописываются по одному или интервально используя '-'.
- Не допускаются пересечения портов для ресурса.
Пример использования
- TCP
- UDP
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