Группы безопасности
Группы безопасности служат основным механизмом разграничения сетевого доступа в Yandex Cloud.
Примечание
В настоящее время в сетях Yandex Cloud можно использовать только протокол IPv4. Протокол IPv6 не поддерживается, поэтому группы безопасности работают только с трафиком протокола IPv4.
Группа безопасности (Security Group, SG) — это ресурс, который создается на уровне облачной сети. После создания группа безопасности может использоваться в сервисах Yandex Cloud для разграничения сетевого доступа объекта, к которому она применяется.
Группа безопасности по умолчанию (Default Security Group, DSG) создается автоматически при создании новой облачной сети. Группа безопасности по умолчанию обладает следующими свойствами:
- В новой сети будет разрешать весь сетевой трафик в обоих направлениях — исходящий (egress) и входящий (ingress).
- Действует для трафика, проходящего через все подсети в сети, где она создана.
- Работает лишь в том случае, если на объект еще явно не назначена группа безопасности.
- Ее невозможно удалить, она автоматически удаляется вместе с удалением сети.
Группы безопасности можно комбинировать — на один объект можно назначить до пяти групп.
Внимание
Группы безопасности не предназначены для защиты от DDoS атак.
Для фильтрации больших объемов нежелательного сетевого трафика используйте сервис Yandex DDoS Protection.
Где можно использовать группы безопасности
Список объектов в сервисах Yandex Cloud, где можно использовать группы безопасности:
Примечание
Подробную информацию об использовании групп безопасности в конкретном сервисе Yandex Cloud смотрите в документации нужного сервиса.
Структура групп безопасности
Группы безопасности состоят из списка правил (rules
). Группа безопасности без правил блокирует весь сетевой трафик между объектами, к которым применяется. Это происходит потому, что в конце списка правил группы безопасности всегда неявно присутствует правило «запретить все».
Правила в группах безопасности задаются отдельно для входящего (ingress
) и исходящего (egress
) трафика. В одной группе может быть до 50 правил, суммарно для входящего и исходящего трафика.
Новое правило всегда добавляется в конец списка. Добавить новое правило в определенное место в списке между уже существующими правилами нельзя.
Описание правил групп безопасности
Каждое правило в группе безопасности состоит из фиксированного набора полей:
Параметр | Описание |
---|---|
Описание | Краткое описание правила. В этом поле также можно описать метаданные. |
Протокол | Какой сетевой протокол Для правил в группах безопасности можно использовать следующие протоколы:
|
Диапазон портов | Диапазон портов для выбранного в правиле сетевого протокола. Можно указать только непрерывный диапазон портов. Перечислить список произвольных портов через запятую нельзя. |
Источник Только для входящего трафика |
IP-адреса источников трафика. Можно использовать следующие варианты указания IP-адресов источников трафика:
|
Назначение Только для исходящего трафика |
IP-адреса получателей трафика. Можно использовать следующие варианты указания IP-адресов получателей трафика:
|
Правило Self
В качестве источника или получателя трафика в правиле группы безопасности может выступать специальная группа безопасности, которая называется Self
. В такую группу входят все IP-адреса объектов, к которым эта группа безопасности будет применена.
Например, можно создать группу безопасности vm_group_sg
, описав ее в Terraform следующим образом:
resource yandex_vpc_security_group vm_group_sg {
...
ingress {
protocol = "ANY"
description = "Allow incoming traffic from members of the same security group"
from_port = 0
to_port = 65535
predefined_target = "self_security_group"
}
egress {
protocol = "ANY"
description = "Allow outgoing traffic to members of the same security group"
from_port = 0
to_port = 65535
predefined_target = "self_security_group"
}
}
Теперь, если применить группу vm_group_sg
к сетевым интерфейсам двух ВМ, подключенных к одной сети, эти две ВМ смогут обмениваться трафиком между собой без ограничений по портам. Если применить эту же группу к сетевому интерфейсу третьей ВМ в той же сети — все три ВМ смогут обмениваться трафиком между собой.
Внимание
Следует помнить, что правило Self
действует только на трафик, проходящий непосредственно через сетевой интерфейс ВМ, к которому применена группа безопасности.
На ВМ с публичным IP-адресом трафик в интернет, проходящий через этот сетевой интерфейс в направлении one-to-one NAT, не попадет под действие правила Self
.
Правило со ссылкой на группу безопасности
Правила в группах безопасности дают возможность использовать другие группы безопасности в полях Источник или Назначение.
В таком правиле будет разрешено сетевое взаимодействие с IP-адресами ресурсов (интерфейсов ВМ) к которым эта группа безопасности уже применена.
Таким образом в правилах можно ссылаться на объекты различного типа, например:
- Рабочие узлы кластера Managed Service for Kubernetes.
- Хосты кластера управляемой базы данных.
- ВМ в группах виртуальных машин.
Использование ссылочных правил в группах безопасности позволяет сохранять консистентность сетевых правил доступа при автомасштабировании облачных ресурсов.
Рассмотрим пример сервиса состоящего из двух компонентов:
- группы виртуальных машин с веб-серверами за балансировщиком нагрузки;
- кластера Managed Service for PostgreSQL.
Необходимо обеспечить доступ из кластера СУБД к группе веб-серверов, количество которых может меняться в зависимости от нагрузки.
Для решения этой задачи нужно создать две группы безопасности:
web-sg
— для группы веб-серверов.db-sg
— для кластера Managed Service for PostgreSQL.
resource "yandex_vpc_security_group" "web_sg" {
name = "web-sg"
...
ingress {
description = "Allow HTTPS"
protocol = "TCP"
port = 443
}
ingress {
description = "Allow HTTP"
protocol = "TCP"
port = 80
}
egress {
description = "Permit ANY"
protocol = "ANY"
v4_cidr_blocks = ["0.0.0.0/0"]
}
...
}
resource "yandex_vpc_security_group" "db_sg" {
name = "db-sg"
...
ingress {
description = "Permit DB access to Web VM's"
protocol = "TCP"
port = 6432
security_group_id = [ yandex_vpc_security_group.web_sg.id ]
}
}
При добавлении новых серверов в группу, правила групп безопасности будут автоматически распространяться и на них.
Особенности работы групп безопасности
Направление трафика
Правила в группах безопасности отдельно описывают входящий и исходящий трафик.
Stateful-соединения
В группах безопасности состояние сетевых соединений отслеживается. Если сетевой трафик уже разрешен правилами в одну сторону, то обратный трафик разрешать уже не нужно.
Время жизни соединения
Группы безопасности автоматически завершают TCP-соединения в статусе idle через 180 секунд. Не рекомендуется использовать в приложениях таймауты сессии больше этого времени. Подробнее о лимитах.
Использование групп безопасности в правилах
В правилах могут использоваться уже существующие группы безопасности в качестве источников или получателей трафика.
Применение нескольких групп безопасности
При применении нескольких групп одновременно к одному объекту, правила из этих групп будут складываться в единый список. Сетевой трафик будет разрешен, если он совпадет с правилом хотя бы в одной из групп. Если трафик не совпадет ни с одним правилом ни в одной из групп, то он будет запрещен.
Группы безопасности и Network Load Balancer
Следует помнить, что группы безопасности нельзя применять к обработчику трафика сетевого балансировщика нагрузки. Для ВМ в целевых группах, размещенных за балансировщиком нагрузки, группы безопасности могут применяться к сетевым интерфейсам этих ВМ. В группах безопасности таких ВМ обязательно должно быть правило Health Сhecks
для разрешения трафика проверок доступности со стороны балансировщика.
Группы безопасности и сервисы DNS и метаданных ВМ
Для надежной и предсказуемой работы сетевых сервисов необходимо явно разрешать в исходящих правилах групп безопасности следующий сетевой трафик:
- Запросы в службу метаданных ВМ по IP-адресу
169.254.169.254
по протоколу HTTP(tcp/80)
. - Запросы в службу DNS — в направлении второго IP-адреса в подсети по протоколу DNS
(udp/53)
.
Группы безопасности и Managed Service for Kubernetes
Во избежание проблем с сетевой связностью при развертывании и эксплуатации кластеров Managed Service for Kubernetes, внимательно следуйте инструкции.
Группы безопасности и инструменты Application Load Balancer для Managed Service for Kubernetes
Для корректной работы Ingress-контроллера
Внимание
В Yandex Cloud реализована автоматическая фильтрация исходящего SMTP трафика.
Примеры описания правил групп безопасности
Виртуальная машина с веб-сервером
resource yandex_vpc_security_group vm_group_sg {
...
ingress {
description = "Allow HTTP protocol from local subnets"
protocol = "TCP"
port = 80
v4_cidr_blocks = ["192.168.10.0/24", "192.168.20.0/24"]
}
ingress {
description = "Allow HTTPS protocol from local subnets"
protocol = "TCP"
port = 443
v4_cidr_blocks = ["192.168.10.0/24", "192.168.20.0/24"]
}
egress {
description = "Permit ANY"
protocol = "ANY"
v4_cidr_blocks = ["0.0.0.0/0"]
}
}
Виртуальная машина за сетевым балансировщиком
resource yandex_vpc_security_group vm_group_sg {
...
ingress {
description = "Allow HTTP protocol from local subnets"
protocol = "TCP"
port = "80"
v4_cidr_blocks = ["192.168.10.0/24", "192.168.20.0/24"]
}
ingress {
description = "Allow HTTPS protocol from local subnets"
protocol = "TCP"
port = "443"
v4_cidr_blocks = ["192.168.10.0/24", "192.168.20.0/24"]
}
ingress {
description = "Health checks from NLB"
protocol = "TCP"
predefined_target = "loadbalancer_healthchecks" # [198.18.235.0/24, 198.18.248.0/24]
}
egress {
description = "Permit ANY"
protocol = "ANY"
v4_cidr_blocks = ["0.0.0.0/0"]
}
}
Инструменты для управления группами безопасности
В Yandex Cloud с группами безопасности можно работать через:
Пошаговые инструкции по работе с группами безопасности
Примеры работы с группами безопасности в Yandex Cloud.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc