AWS CloudFront и ELB: есть ли способ форсировать соединение, используя только CloudFront?

У меня есть ELB, который балансирует некоторые экземпляры EC2. ELB предоставляет конечные точки всей системы.

Сейчас я создаю дистрибутив CloudFront для этого ELB. Есть ли способ разрешить пользователям подключаться ТОЛЬКО с помощью конечной точки CloudFront и отказываться от прямых подключений к ELB?

Спасибо

8 ответов

Вы должны ограничить группу безопасности списком диапазонов IP-адресов, используемых CloudFront. Это часть списка, опубликованного здесь.

К сожалению, этот список может быть изменен, поэтому вы не можете просто установить его один раз и забыть. Amazon опубликовала здесь учебное пособие, в котором рассказывается о настройке лямбда-функции, которая будет автоматически обновлять вашу группу безопасности, когда Amazon публикует обновленный список IP-адресов.

К сожалению, сейчас нет прямого способа сделать это.

Доступ к ELB может быть ограничен только диапазоном IP-адресов. Вы можете попытаться ограничить ELB диапазонами IP-адресов CloudFront, но это довольно хрупко и часто меняется. Если будет введен новый диапазон IP-адресов, вы можете случайно заблокировать CloudFront. Я бы сказал, что такой подход не рекомендуется, но я видел, как это было сделано, когда требование было обязательным. И это сломалось несколько раз.

Если в R53 нет записи, которая использует ваш балансировщик нагрузки, и только облачный интерфейс определяет альтернативные доменные имена (CNAME), используемые вашим балансировщиком нагрузки, то вы можете связать список управления доступом WAF с балансировщиком нагрузки, который отбрасывает любой запрос, не соответствующий альтернативному. Доменные имена. В этом случае вы принудительно используете CloudFront Distribution для балансировщика нагрузки.

Вы можете настроить автоматическую группу безопасности, которая разрешает только IP-адреса Cloudfront и позволяет функции Lambda обновлять ее при изменении диапазонов IP-адресов Cloudfront. В моем сообщении в блоге вы можете найти полный шаблон Cloudformation, который настроит это для вас:

https://medium.com/cagataygurturk/restricting-elb-access-to-cloudfront-8b0990dea69f

С последними обновлениями теперь есть более простой способ добиться этого с помощью списков префиксов. В конфигурации вашей группы безопасности вы можете добавить списки префиксов облачного формирования и никогда не беспокоиться о поддержании динамических изменений IP-адресов и т. д.

«Список управляемых префиксов CloudFront содержит диапазоны IP-адресов всех глобально распределенных серверов CloudFront, обращенных к источнику. Если ваш источник размещен на AWS и защищен группой безопасности Amazon VPC, вы можете использовать управляемый список префиксов CloudFront, чтобы разрешить входящий трафик. к вашему источнику только с серверов CloudFront, обращенных к источнику, что предотвращает попадание любого трафика, не относящегося к CloudFront, к вашему источнику». - Из документации AWS

Вот пример того, как это сделать: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html#managed-prefix-list .

Вот анонс этой функции — https://aws.amazon.com/about-aws/whats-new/2022/02/amazon-cloudfront-managed-prefix-list/

а вот списки префиксов - https://us-west-2.console.aws.amazon.com/vpc/home?region=us-west-2#ManagedPrefixLists

В блогах AWS есть решение для этого сценария.

По сути, он создает лямбда-функцию, которая подписывается на тему SNS, которая получает уведомления об изменениях диапазона IP-адресов AWS (эта тема принадлежит AWS). Затем эта лямбда динамически обновляет группу безопасности ELB/ALB. Лямбда-код доступен здесь.

Начиная с 2022 года AWS, наконец, предлагает решение этой проблемы с помощью управляемых списков префиксов.

Вы можете создать правило безопасности для входящего трафика и в источнике напрямую указать список префиксов вместо того, чтобы вручную указывать IP-адреса:

Чтобы сделать ваш сервер доступным только для серверов Cloudfront, выполните следующие действия:

  1. Перейдите на страницу https://console.aws.amazon.com/vpc/home#ManagedPrefixLists .

  2. Выберите свой регион (регион вашего балансировщика нагрузки) и найдите «com.amazonaws.global.cloudfront.origin-facing» и скопируйте идентификатор (например, «pl-a3a144ca» для europe-central-1)

  3. Отредактируйте свою группу безопасности для балансировщика нагрузки и добавьте новую запись с типом: HTTP, а в качестве источника вставьте префикс-список-идентификатор из шага 2.

Теперь ваша группа безопасности будет автоматически всегда использовать текущие IP-адреса из Cloudfront, теперь требуется обновление. - Предостережение: список префиксов считается как ~50 правил против ограничения правил для группы безопасности. Если у вас есть много других настраиваемых правил, вам, вероятно, придется создать вторую группу безопасности с другими правилами, если эта группа заполнена.

По состоянию на февраль 2022 года существует более простое решение. Теперь AWS управляет списком префиксов для Cloudfront, который автоматически обновляется.

Подробности: https://aws.amazon.com/about-aws/whats-new/2022/02/amazon-cloudfront-managed-prefix-list/

Другие вопросы по тегам