Открыть сервисСервис

AWS Security Groups

AWS Security Groups — это встроенный механизм виртуального межсетевого экрана (файрвола) в облачной платформе Amazon Web Services (AWS), который управляет входящим и исходящим трафиком для ресурсов, размещённых в виртуальном частном облаке (VPC). Security Groups действуют на уровне экземпляров (виртуальных машин, сетевых интерфейсов) и обеспечивают фильтрацию трафика на основе набора правил, определяющих разрешённые IP-адреса, протоколы и порты.

Принцип работы

Security Groups функционируют как «белый список» (whitelist): по умолчанию все входящие и исходящие соединения запрещены, а администратор добавляет правила, разрешающие конкретные типы трафика. В отличие от традиционных сетевых ACL (Access Control Lists), которые работают на уровне подсетей и поддерживают как разрешающие, так и запрещающие правила, Security Groups поддерживают только разрешающие правила. Запрещающие правила не могут быть явно заданы — для блокировки трафика его просто не включают в список разрешённых.

Каждое правило содержит:

  • Тип трафика: входящий (inbound) или исходящий (outbound).
  • Протокол: TCP, UDP, ICMP или любой другой.
  • Диапазон портов: для TCP/UDP (например, 80 для HTTP, 443 для HTTPS).
  • Источник или назначение: для входящих правил — IP-адрес (в формате CIDR, например, 0.0.0.0/0 для любого адреса) или ссылка на другую Security Group; для исходящих — аналогично.

Security Groups являются «stateful» (сохраняют состояние соединения). Если разрешён входящий трафик от определённого источника, ответный трафик к этому источнику разрешается автоматически, независимо от правил исходящего трафика. Аналогично, разрешённый исходящий трафик автоматически разрешает ответный входящий. Это упрощает конфигурацию, так как не требуется создавать симметричные правила для каждого направления.

Ключевые характеристики

  • Ассоциация с ресурсами: Security Group может быть привязана к одному или нескольким сетевым интерфейсам (Elastic Network Interface, ENI), которые, в свою очередь, подключены к экземплярам EC2, балансировщикам нагрузки (ELB), базам данных RDS, лямбда-функциям (при использовании VPC) и другим сервисам AWS.
  • Множественность: один экземпляр может иметь до 5 Security Groups (по умолчанию), а одна Security Group может быть привязана к множеству экземпляров.
  • Лимиты: в аккаунте AWS по умолчанию можно создать до 2500 Security Groups на регион, а в каждой группе — до 60 входящих и 60 исходящих правил (лимиты могут быть увеличены по запросу).
  • Изменяемость: правила Security Groups можно изменять в любое время, и изменения применяются мгновенно (без необходимости перезапуска экземпляров).
  • Логирование: трафик, обрабатываемый Security Groups, может быть записан в журналы потоков VPC (VPC Flow Logs) для анализа и аудита.

Сравнение с Network ACL

Security Groups часто путают с сетевыми ACL (Network ACL), которые также являются механизмами фильтрации трафика в AWS. Основные различия:

ХарактеристикаSecurity GroupsNetwork ACL
Уровень работыУровень экземпляра (сетевой интерфейс)Уровень подсети
Тип правилТолько разрешающиеРазрешающие и запрещающие
СостояниеStateful (сохраняет состояние)Stateless (не сохраняет состояние)
Порядок примененияВсе правила проверяются до первого совпаденияПравила применяются в порядке возрастания номера
Автоматический ответРазрешается автоматическиТребуется явное правило для ответного трафика
ЛимитыДо 60 правил на группуДо 20 правил на подсеть (по умолчанию)

Создание и управление

Security Groups создаются в консоли AWS Management Console, через AWS CLI, SDK или инструменты инфраструктуры как код (Terraform, CloudFormation). При создании указывается имя, описание и VPC, к которому группа будет относиться. После создания добавляются правила.

Пример создания Security Group через AWS CLI: `` aws ec2 create-security-group --group-name MyWebSG --description "Security group for web servers" --vpc-id vpc-12345678 ``

Добавление правила для входящего HTTP-трафика: `` aws ec2 authorize-security-group-ingress --group-id sg-12345678 --protocol tcp --port 80 --cidr 0.0.0.0/0 ``

Применение

Security Groups широко используются для обеспечения безопасности облачных инфраструктур. Типичные сценарии:

  • Веб-серверы: разрешение входящего трафика на порты 80 (HTTP) и 443 (HTTPS) из любого источника (0.0.0.0/0), а также SSH-доступа (порт 22) только с доверенных IP-адресов.
  • Базы данных: разрешение входящего трафика на порт 3306 (MySQL) или 5432 (PostgreSQL) только от Security Group веб-серверов, а не из всей сети.
  • Микросервисы: использование ссылок на Security Groups для разрешения трафика между компонентами приложения, например, разрешение трафика от Security Group «frontend» к Security Group «backend».
  • Балансировщики нагрузки: привязка Security Group к балансировщику для ограничения доступа к нему.

Безопасность и рекомендации

  • Принцип минимальных привилегий: разрешать только необходимый трафик (по протоколу, порту и источнику). Избегать использования 0.0.0.0/0 для чувствительных сервисов (например, SSH, RDP).
  • Использование ссылок на Security Groups: вместо указания IP-адресов для межсервисного взаимодействия лучше ссылаться на Security Groups, что упрощает управление и масштабирование.
  • Регулярный аудит: проверять неиспользуемые или избыточные правила, а также удалять неиспользуемые Security Groups.
  • Логирование: включить VPC Flow Logs для мониторинга трафика, проходящего через Security Groups.
  • Избегать дублирования: не создавать одинаковые правила в нескольких Security Groups, привязанных к одному экземпляру — это может усложнить анализ.

Ограничения и критика

  • Отсутствие явных запретов: невозможно создать правило, явно блокирующее трафик от определённого источника. Для этого требуется использовать Network ACL.
  • Сложность при большом количестве правил: при сотнях правил в одной группе управление может стать запутанным.
  • Отсутствие логирования по умолчанию: для анализа трафика необходимо отдельно настраивать VPC Flow Logs.
  • Зависимость от VPC: Security Groups работают только в рамках VPC; для ресурсов вне VPC (например, Lambda без VPC) они не применимы.

Интеграция с другими сервисами AWS

Security Groups тесно интегрированы с другими сервисами AWS:

  • AWS WAF (Web Application Firewall): может использоваться вместе с Security Groups для защиты веб-приложений на уровне HTTP/HTTPS.
  • AWS Shield: защита от DDoS-атак, дополняющая фильтрацию на уровне Security Groups.
  • AWS Config: позволяет отслеживать изменения в Security Groups и проверять их соответствие политикам безопасности.
  • AWS Firewall Manager: централизованное управление Security Groups для нескольких аккаунтов и регионов.

Примеры конфигураций

Пример 1: Веб-приложение

  • Security Group для веб-серверов: разрешить входящий трафик на порты 80 и 443 из 0.0.0.0/0, разрешить SSH (порт 22) с IP-адреса администратора 203.0.113.0/32.
  • Security Group для базы данных: разрешить входящий трафик на порт 3306 только от Security Group веб-серверов.

Пример 2: Микросервисная архитектура

  • Security Group для сервиса A: разрешить входящий трафик на порт 8080 от Security Group сервиса B.
  • Security Group для сервиса B: разрешить входящий трафик на порт 8080 от Security Group сервиса C.

История

Security Groups были введены в 2006 году вместе с запуском Amazon EC2. Изначально они поддерживали только простые правила на основе IP-адресов и портов. Со временем функциональность расширилась: появилась поддержка ссылок на другие Security Groups, протокола ICMP, возможность указания диапазонов портов, а также интеграция с VPC Flow Logs и AWS Config. В 2013 году была добавлена поддержка IPv6.

Источники

  • Amazon Web Services. «Security Groups for Your VPC» — AWS Documentation.
  • Amazon Web Services. «Comparison of Security Groups and Network ACLs» — AWS Documentation.
  • Amazon Web Services. «VPC Flow Logs» — AWS Documentation.
  • Amazon Web Services. «AWS Well-Architected Framework — Security Pillar» — AWS Whitepaper.
  • AWS CLI Command Reference — aws ec2 create-security-group, authorize-security-group-ingress.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru