Перейти к основному содержимому

Sgroup to CIDR (Ingress/Egress)

Ресурс Security Group to CIDR представляет собой введенную нами абстракцию, которая обеспечивает гибкое управление и контроль за сетевым трафиком между различными группами безопасности и подсетями, используя TCP, UDP и ICMP протоколы. Этот ресурс дает возможность детально настроить, какой трафик разрешен к передаче между группами безопасности и определенными подсетями, тем самым гарантируя высокий уровень защиты и управления сетевой инфраструктурой.

Terraform module представляет собой высокоуровневую абстракцию над terraform resources, которая упрощает работу с ресурсами Terraform, скрывая сложность их непосредственного использования. Он предлагает простой и понятный интерфейс для взаимодействия, позволяя пользователям легко интегрироваться и управлять компонентами инфраструктуры без необходимости глубоко погружаться в детали каждого ресурса.

Далее везде в документе подразумевается что все места, содержащие переменную $traffic, могут принять одно из двух значений: Ingress Egress. Аналогчично для $transport подразумевается одно из четырех значений: tcp, udp, icmpIPv4, icmpIPv6

  • rules - Структура, содержащая описание создаваемых правил.
  • rules.$traffic[] - Поле описывающий направление трафика.
  • rules.$traffic[].cidrSet[] - Список, содержащий подсети типа IP.
  • rules.$traffic[].access.$transport - Протокол L3/L4 уровня модели OSI.
  • rules.$traffic[].access.$transport.action - Действие для пакетов в сформированных правил в цепочке.
  • rules.$traffic[].access.$transport.priority - Поле определяющее порядок применения правил в цепочке.
  • rules.$traffic[].access.$transport.logs - Включить/отключить логирование.
  • 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[] - Набор открытых портов отправителя.
  • rules.$traffic[].access.$transport.types[].description - Формальное текстовое описание.
  • rules.$traffic[].access.$transport.types[].type[] - Список, определяющий допустимые типы ICMP запросов.
Области применения полей относительно используемого протокола
название параметратип данныхзначение по умолчаниюtransport*
TCPUDPICMP
rulesObject[][]
rules.$traffic[]Object[]
rules.$traffic[].cidrSet[]String[]
rules.$traffic[].access.$transportObject
rules.$traffic[].access.$transport.actionEnum("ACCEPT", "DROP")
rules.$traffic[].access.$transport.priorityString
rules.$traffic[].access.$transport.logBooleanfalse
rules.$traffic[].access.$transport.traceBooleanfalse
rules.$traffic[].access.$transport.ports[]Object[]
rules.$traffic[].access.$transport.ports[].descriptionString""
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[].descriptionString""
rules.$traffic[].access.$transport.types[].type[]Integer[]null

Ограничения

  • name:

    • Длина значения поля не должна превышать 256 символов.
    • Значение поля должно начинаться и заканчиваться символами без пробелов.
    • Значение должно быть уникальным в рамках типа ресурса.
  • rules.$traffic[].cidrSet:

    • Значение элемента должно начинаться и заканчиваться символами без пробелов.
    • Повторения значений в списке не допускаются.
    • Необходимо указать минимум одно значение.
    • В пределах одной Security Group и направления трафика (I/E), необходимо обеспечить, непересекаемость диапазонов адресов подсетей.
    • Подсеть должна соответствовать формату записи, определенному в RFC 4632.
  • 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.
    • Если значение не будет указано то будет использоваться весь диапазон портов.
    • Значения портов прописываются по одному или интервально используя '-'.
    • Не допускаются пересечения портов в правилах в рамках одной пары Security Group.</li>
  • rules.$traffic[].access.$transport.types[].type[]:

    • Значение должно быть числом в диапазоне от 0 до 255.
    • Повторения значений в списке не допускаются.

Пример использования

Ingress

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

Egress

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