Вопрос или проблема
Подтвердите, можем ли мы использовать CloudFront в качестве локальной CDN без IGW в VPC и принимать доступ только с диапазона частных IP-адресов организации в локальной сети (10.x.x.x), как на прикрепленном изображении IntranetCFWithoutInternet.png.
Как указано в https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-vpc-origins.html, мы можем направлять трафик от CloudFront на частные ALB/NLB/EC2 экземпляры в рамках частной подсети VPC. Однако CloudFront принимает трафик из Интернета и требует IGW.
Если CloudFront предназначен только для публичного Интернета, я предполагаю, что это невозможно, но, пожалуйста, дайте совет.
Ответ или решение
Использование Amazon CloudFront в качестве внутреннего CDN без доступности интернета через Интернет-шлюз (IGW) представляет собой интересную задачу, особенно когда нужно обеспечить ограниченный доступ только с частного IP-адреса внутри организации (например, из диапазона 10.x.x.x). В данной ситуации перед нами стоит вопрос о возможности интеграции CloudFront, который по своей природе ориентирован на работу с интернет-аудиторией, в внутреннюю инфраструктуру компании, избегая связи с внешним интернетом.
Теория
Amazon CloudFront — это глобальная сеть доставки контента (CDN), разработанная для обеспечения высокоскоростной и безопасной передачи содержимого пользователям по всему миру. Главная цель CloudFront — это кэширование содержимого на различных серверах по всему миру, минимизируя задержку доступа к этому содержимому для пользователей, находящихся на разных географических позициях.
Обычно для работы CloudFront требуется внешний источник (Origin), с которым идет синхронизация, и этим источником могут быть Amazon S3, HTTP(S)-серверы или ресурсы внутри архитектуры AWS (например, Amazon EC2, находящийся за ALB/NLB). В стандартной конфигурации CloudFront ожидается взаимодействие с этими источниками через IGW.
Однако бизнес-задачи зачастую требуют использования CloudFront в приватной сети, изолированной от интернета, что было бы упрощенно обозначено как "внутреннее CDN" для корпоративных приложений. Для этого требуется интеграция, признающая необходимость защиты данных от внешних вторжений и без предоставления возможности выходить в интернет.
Пример
Предположим, что у компании есть приложение, размещенное на множестве серверов в частной облачной сети (VPC) AWS, и теоретически данное приложение может испытывать нагрузки на инфраструктуру. Существуют сценарии, когда это приложение необходимо оптимизировать по скорости доставки контента для сотрудников, находящихся в разных офисах компании по всему миру, не предоставляя этот контент через интернет.
Настроить CloudFront для взаимодействия с приватной сетью возможно, используя такие инструменты, как AWS PrivateLink или Elastic Load Balancer, предоставляя маршрутизацию контента на приватные адреса через CloudFront с использованием VPC.
Важно понимать, что сам CloudFront не умеет напрямую осуществлять обмен данными без выхода в интернет. Однако, можно реализовать сценарий, где приложение будет взаимодействовать с общественными IP CloudFront через приватные сети AWS. В таком случае ключевую роль играют посмотрелы, такие как Network Load Balancer (NLB), которые принимают трафик и перенаправляют его к целевым сервисам без IGW.
Применение
Реализация такой архитектуры начинается с разбора топологии и необходимых политик безопасности. Если ваш VPC не оснащен IGW, значит, маршрутизация будет производиться исключительно через приватные соединения, такие как VPN или Direct Connect.
-
Настройка VPC: Все ресурсы, которым необходимо доступ к контенту, должны быть расположены в одном или нескольких VPC с корректной конфигурацией маршрутизации.
-
Использование PrivateLink или VPC Peering: Эти технологии позволяют создать частные соединения между VPC и другими AWS сервисами, обходя необходимость IGW.
-
Network Load Balancer (NLB): Чтобы принимать и маршрутизировать трафик от CloudFront, необходимо использовать альтернатированные решения, такие как NLB с частным IP, которые будут аккумулировать запросы и перенаправлять их во внутренние сети.
-
Настройка CloudFront: Хотя сам CloudFront по умолчанию принимает внешний доступ, необходимо установить политики безопасности и правила доступа, определяющие, какие сети могут взаимодействовать с ресурсами, и каким образом.
-
Политики безопасности и access control: Настройте политики IAM, Security Groups и Network ACL, чтобы гарантировать, что доступные ресурсы взаимодействуют друг с другом исключительно внутри заданной сети.
Хотя реализация CloudFront в качестве внутреннего CDN без IGW — это нетривиальная задача, достижения этой цели возможно при реализации комплексного плана с использованием вышеописанных технологий. Однако, необходимо учитывать, что даже в случае реализации такой архитектуры CloudFront физически будет использовать средства Amazon по маршрутизации посредством внешних IP — пусть и защищенных. Таким образом, защита данных и доступ посредством VPN или других методов остается ключевым элементом. Важно также оценить политику безопасности и соответствие законодательных норм при проектировании подобной инфраструктуры.