AWS Security Group self-referencing

Например вам нужно разрешить доступ на EC2-инстансы по 22 порту с определенных адресов. Для этого достаточно создать лишь одно правило внутри Security Group. А что, если ещё нужно открыть доступ на 22 порт с инстансов друг на друга? Создаем дополнительное правило. Задача усложнится, если вы захотите ограничить круг только теми хостами, к которым применяется данная группа безопасности (SG). На практике это решается очень легко с помощью опции self-referencing.

Об этом и поговорим в этой небольшой статье-заметке.

Security Group self-referencing

Для демонстрации функционала нам понадобится VPC (если вы ещё не успели создать её сами, то воспользуйтесь default VPC).

Примечание: для своих экспериментов я использую собственную VPC, которую создавал в статьях NAT Instance. Часть 1 — Subnets и NAT Instance. Часть 2 — Auto Scaling group (скоро будет доступна).

Итак, приступим.

Базовая конфигурация

Создадим пару EC2-инстансов. Прицепим одну группу безопасности с единственным правилом, разрешающим подключение с вашего домашнего/офисного адреса. Вся конфигурация будет выглядеть примерно так:

Примечание: в списке правил есть одно исходящее – egress – которое разрешает любые подключения наружу. Если бы вы создавали SG руками, то такое правило уже присутствовало бы по умолчанию, но Terraform удаляет его автоматически и если оно все же вам необходимо, то придется пересоздать его, что я и делаю. Подробнее читайте в документации – Resource: aws_security_group.

Если зайдете в веб-интерфейс, то ничего особенного не увидите:

self-referencing 01

А теперь рассмотрим каким образом можно разрешить доступ на сами инстансы друг с друга.

Использование self-referencing

У Terraform есть интересная опция, которой однако нет в web-интерфейсе AWS. Речь идет о self-referencing, принцип работы которой очень прост – она разрешает доступ с тех объектов, к которым эта группа безопасности применяется. В документации Terraform это описывается следующим образом, но лично для меня эта формулировка не столь очевидна:

Whether the security group itself will be added as a source to this ingress rule.

Чтобы посмотреть как изменятся входящие правила, раскомментируйте self = true в коде в начале статьи и заново запустите tarraform apply. А результат будет такой:

Как итог – сама же группа безопасности стала источником в правиле ingress. Вы можете проделать это и вручную и кое-где даже встречаются пошаговые инструкции 1.

Вот так все просто. Успехов!

Яндекс.Метрика