Блог Amazon Web Services
Переадресация портов инстансов Amazon EC2 с помощью AWS Systems Manager
Оригинал статьи: ссылка (Sigit Priyanggoro, Sr Partner Solutions Architect и Sruthi Maddineni, Software Development Engineer)
Переадресация портов является полезным способом перенаправления сетевого трафика с одной комбинации IP-адреса и порта на другую. С помощью переадресации портов вы можете получить доступ со своей рабочей станции к инстансу EC2, который находится в приватной подсети.
В этой статье мы рассмотрим сценарий, в котором заказчики предъявляют строгие требования к безопасности инстансов Amazon Elastic Compute Cloud (Amazon EC2) и разрешают только приватные подключения внутри Amazon Virtual Private Cloud (Amazon VPC): то есть, у инстанса есть только приватный IP-адрес без доступа к шлюзу NAT или бастион-хосту.
Как показано на диаграмме ниже, инстанс Amazon EC2 обслуживает внутреннее приложение с веб-интерфейсом, к которому сотрудники, работающие удаленно, должны иметь безопасный доступ. В реализации этого сценария мы используем конечную точку VPC (VPC Endpoint) для AWS Systems Manager, чтобы обеспечить приватное соединение между агентом AWS Systems Manager внутри инстанса и самим сервисом. Затем мы настраиваем AWS Systems Manager Session Manager, чтобы разрешить переадресацию портов между рабочей станцией сотрудника и приватным инстансом Amazon EC2 для обеспечения безопасного доступа к приложению.
Подготовка
В рамках этого обзора мы предполагаем следующее:
- У вас есть доступ к аккаунту AWS через пользователя или роль AWS Identity and Access Management (IAM);
- Указанный пользователь или роль IAM может создавать Amazon VPC в вашем аккаунте;
- Указанный пользователь или роль IAM может создавать инстанс Amazon EC2 в вашем аккаунте;
- Указанный пользователь или роль IAM имеет доступ к сервису AWS Systems Manager.
Об этой статье | |
Время на прочтение | 10 минут |
Уровень | Средний (300) |
Используемые сервисы | Amazon VPC, AWS PrivateLink, AWS Systems Manager |
Создание Amazon VPC с приватной подсетью
VPC – это изолированная часть облака AWS, в которой можно запускать ресурсы AWS, например, инстансы Amazon EC2. Выполните шаги из инструкции по началу работы, чтобы создать VPC с использованием мастера настройки в консоли AWS. В нашем случае для запуска инстанса необходима только одна приватная подсеть.
Для того, чтобы использовать приватное подключение к Systems Manager при осуществлении запросов по его стандартному DNS-адресу, убедитесь, что на вашем VPC включены атрибуты Enable DNS hostnames и Enable DNS support.
Запуск инстанса Amazon EC2 внутри приватной сети Amazon VPC
Вы можете запустить инстанс с Linux, используя консоль AWS, как описано в инструкции Amazon EC2. В этой статье мы будем использовать образ Amazon Machine Image (AMI) с операционной системой Amazon Linux 2, в котором агент Systems Manager установлен по умолчанию. Узнать, в каких ещё AMI предустановлен агент Systems Manager, можно в его документации.
Создайте инстанс Amazon EC2 в публичной подсети и установите на него веб-сервер по вашему выбору. Для изначальной установки сервера потребуется подключение к интернету. Однако в нашем сценарии необходимо, чтобы инстанс находился в приватной подсети. Воспользуйтесь инструкциями по перемещению инстанса в другую подсеть, чтобы перенести ваш инстанс Amazon EC2 в приватную подсеть.
Конфигурация конечной точки VPC для AWS Systems Manager
Следуйте шагам из документации для создания новых конечных точек:
- com.amazonaws.region.ssm: конечная точка для сервиса Systems Manager;
- com.amazonaws.region.ec2messages: используется для вызовов от агента Systems Manager к самом сервису;
- com.amazonaws.region.ec2: если вы используете Systems Manager для создания снимков дисков с поддержкой VSS, то необходимо создать конечную точку для сервиса EC2. Без неё вызовы для перечисления подключённых томов EBS не смогут выполниться, что приведёт к отказу команды Systems Manager.
- com.amazonaws.region.ssmmessages: эта конечная точка необходима для подключения к вашим инстансам через защищённый канал данных с использованием Session Manager, который в нашем случае является обязательным требованием для переадресации портов.
Включите приватный DNS для конечных точек
Функциональность приватного DNS для конечных точек связывает приватную зону, содержащую стандартные DNS-адреса сервисов, с вашим Amazon VPC. Таким образом, вы можете осуществлять вызовы к сервису Systems Manager по приватному каналу без необходимости менять используемый публичный DNS-адрес сервиса. Для использования этой функциональности убедитесь, что на вашем VPC включены настройки Enable DNS hostnames и Enable DNS support. Поддержка приватного DNS включена по умолчанию на конечных точках, создаваемых для сервисов AWS.
В следующем примере можно увидеть, как адрес сервиса ssm.us-east-1.amazonaws.com
преобразуется в приватный IP-адрес, что позволяет осуществлять управление инстансом Amazon EC2 через Systems Manager несмотря на то, что он расположен внутри приватной подсети.
Регион
Регион представляет собой идентификатор одного из регионов AWS, поддерживаемых сервисом AWS Systems Manager, например, us-east-2 для US East (Ohio). Список всех доступных значений можно увидеть в колонке Region в списке конечных точек AWS Systems Manager в документации.
На следующем изображении показаны все необходимые для переадресации портов конечные точки VPC, созданные в регионе us-east-1 в качестве примера.
Настройка AWS Systems Manager
По умолчанию у AWS Systems Manager нет прав на выполнение каких-либо действий с вашими инстансами. Вы предоставляете доступ с помощью IAM-профиля инстанса, который передаёт информацию о роли IAM в инстанс Amazon EC2 через его мета-данные.
Как только вы настроили необходимые привилегии для AWS Systems Manager, следуйте шагам из документации по мастеру быстрой настройке AWS Systems Manager для конфигурации необходимых ролей IAM и часто используемых возможностей AWS Systems Manager.
Роль AmazonSSMRoleForInstancesQuickSetup необходимо назначить на инстансы Amazon EC2, чтобы у AWS Systems Manager были разрешения для работы с ними.
Следуйте инструкциям по настройке профиля инстанса в документации AWS Systems Manager, чтобы проверить или создать необходимый профиль.
Как только настройка AWS Systems Manager завершится, инстансы Amazon EC2 будут зарегистрированы в сервисе. Выполните следующую команду, чтобы убедиться, что установка завершена (в данном примере используются два инстанса Amazon EC2 с приватным доступом, которые управляются через AWS Systems Manager).
Доступ к инстансу Amazon EC2 с использованием переадресации портов в Session Manager
Перед выполнением следующих шагов убедитесь, что вы завершили действия по настройке Session Manager, указанные выше. Более подробную информацию вы можете найти в инструкции по началу работы с Session Manager.
Чтобы использовать интерфейс командной строки (AWS CLI) для переадресации портов, необходимо установить расширение для Session Manager. Более подробную информацию можно узнать в документации по установке расширения Session Manager в AWS CLI.
Для создания сессии используйте следующую команду:
Например, ниже показан пример команды AWS CLI для переадресации портов одного из инстансов Amazon EC2:
После её выполнения откройте веб-браузер и перейдите по адресу localhost:9090, чтобы увидеть ваше веб-приложение:
Успешное подключение будет отображено в выводе команды AWS CLI:
Очистка
Убедитесь, что вы выключили все инстансы Amazon EC2, которые были созданы во время выполнения примера.
Заключение
В этой статье мы рассказали вам о том, как создать VPC с приватной подсетью и запустить в ней инстанс Amazon EC2 с простым веб-сервером. Затем мы рассмотрели конфигурацию конечной точки VPC (VPC endpoint), мастер быстрой настройки AWS Systems Manager, а в конце воспользовались функциональностью Session Manager для переадресации портов.
Переадресация портов работает для инстансов с Windows и Linux. Она доступна во всех регионах AWS, где доступен сервис AWS Systems Manager. При подключении к инстансам Amazon EC2 нет каких-либо дополнительных затрат, вы платите только за исходящий трафик на вашей конечной точке VPC (VPC endpoint).