Статический веб-сайт S3 с CloudFront, ограниченный определенным диапазоном IP-адресов с помощью пользовательского заголовка

#amazon-web-services #security #amazon-s3 #amazon-cloudfront

#amazon-web-services #Безопасность #amazon-s3 #amazon-cloudfront

Вопрос:

Я хотел бы развернуть веб-сайт в корзине S3 и использовать статический хостинг веб-сайтов. Однако у меня есть некоторые строгие ограничения безопасности:

  1. Необходимо использовать HTTPS
  2. Доступ к веб-сайту должен быть ограничен определенным диапазоном IP-адресов

Вот мой план:

  • Используйте AWS WAF для ограничения IP-адресов, которые могут получить доступ к веб-сайту
  • Используйте CloudFront для использования HTTPS
  • Отформатируйте дистрибутив CloudFront для пересылки пользовательского заголовка, который будет действовать как ключ доступа к S3
  • Ограничьте политику безопасности корзины S3, разрешая трафик только с пользовательским заголовком из CloudFront, упомянутым выше.

Вот схема:

введите описание изображения здесь

Однако у меня есть одна большая проблема: действительно ли пересылка пользовательского заголовка между CloudFront является лучшим способом сделать это? В документах AWS говорится, что идентификатор доступа Origin не может использоваться для сегментов S3, которые действуют как веб-сайт ( https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html ). Пользовательский заголовок кажется менее безопасным, чем идентификатор исходного доступа, и его гораздо сложнее поддерживать. Мне неудобно использовать случайную строку в качестве единственной защиты, не позволяющей кому-либо обойти мой дистрибутив CloudFront и напрямую получить доступ к корзине S3. Если злоумышленник угадает

Мой другой вариант здесь — просто стиснуть зубы и перейти на серверы, где у меня больше контроля над большей частью безопасности, но я хотел бы использовать удобство веб-сайта S3.

Ответ №1:

Вам следует удалить конфигурацию веб-сайта из корзины S3 и использовать идентификатор доступа Origin. Остальная часть вашей настройки в порядке.

Вам не нужно настраивать корзину S3 в качестве конечной точки веб-сайта, потому что вы не собираетесь обслуживать свой контент напрямую через S3. С идентификатором доступа Origin ваша корзина будет доступна только из CloudFront (если вы не добавите что-то еще в политику корзины), и это то, что вы хотите.

Смотрите также https://medium.com/@sanamsoodan/host-a-website-using-aws-cloudfront-origin-access-identity-s3-without-static-website-hosting-43995ae2a9bd

Комментарии:

1. Спасибо за ответ. Возможно, я неправильно понимаю, что означает выбор «статического хостинга веб-сайта» для корзины S3. У меня создалось впечатление, что веб-сайт вообще не будет работать, если я не настрою статический хостинг веб-сайта. При выборе статического хостинга веб-сайта вам необходимо выбрать страницы с индексами / ошибками, чтобы ваша корзина работала как веб-сайт. Ваш ответ предполагает, что настройка статического хостинга веб-сайта не делает ничего большего, чем делает веб-сайт общедоступным. Я думал, что такие вещи, как маршрутизация, не будут работать, если я не настрою как статический веб-сайт.

2. Существуют и другие различия, когда ваше хранилище настроено как конечная точка веб-сайта (см. docs.aws.amazon.com/AmazonS3/latest/dev /… ). Пожалуйста, обратите внимание, что настройка вашей корзины в качестве конечной точки веб-сайта не делает ее общедоступной, это контролируется только политикой корзины. По сути, вы настраиваете конечную точку веб-сайта, когда собираетесь обслуживать свой статический веб-сайт непосредственно с S3.

Ответ №2:

  • Использование AWS WAF для ограничения доступа к набору IP-адресов кажется правильным решением.
  • Используя Cloudfront, вы также можете обслуживать частный контент. Корзина не обязательно должна быть общедоступной. Разрешить доступ к корзине Amazon S3 только из дистрибутива CloudFront При таком подходе вам не нужна отдельная политика корзины для ограничения IP-адресов

Комментарии:

1.В этих документах говорится, что вы не можете использовать идентификатор исходного доступа для сегментов S3, настроенных как статические веб-сайты:docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide /… «Если вы используете корзину Amazon S3, настроенную в качестве конечной точки веб-сайта, вы должны настроить ее с помощью CloudFront в качестве пользовательского источника, и вы не сможете использовать функцию идентификации доступа к источнику, описанную в этом разделе».

2. Обязательно ли использовать статический хостинг веб-сайтов, если да, можете ли вы также поделиться причиной ? 🙂

Ответ №3:

Вы не можете использовать какой-либо пользовательский заголовок на S3, разрешены только определенные заголовки, например: Referer, User-Agent и т.д. Лучший метод — использовать OAI с конечной точкой S3 Rest API вместо конечной точки веб-сайта.

Однако вы можете выбрать альтернативные методы для конечной точки веб-сайта: 1. Разрешить диапазонам IP-адресов CloudFront доступ к корзине S3.

http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips

И 2. Добавьте заголовок исходного клиента, например «Referer: некоторое случайное значение», в конфигурацию источника CloudFront и создайте политику корзины, чтобы разрешить это конкретное значение в заголовке Referer.