#amazon-web-services #security #amazon-s3 #amazon-cloudfront
#amazon-web-services #Безопасность #amazon-s3 #amazon-cloudfront
Вопрос:
Я хотел бы развернуть веб-сайт в корзине S3 и использовать статический хостинг веб-сайтов. Однако у меня есть некоторые строгие ограничения безопасности:
- Необходимо использовать HTTPS
- Доступ к веб-сайту должен быть ограничен определенным диапазоном 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 (если вы не добавите что-то еще в политику корзины), и это то, что вы хотите.
Комментарии:
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.