Как запретить пользователю доступ к не http-версии моего сайта?

#amazon-web-services #amazon-s3 #amazon-ec2 #amazon-cloudfront

Вопрос:

В настоящее время мой сервер nodejs в docker compose обслуживается на экземпляре EC2, а мое приложение react обслуживается на s3, оба они находятся за двумя дистрибутивами cloudfront соответственно.

Я довольно новичок в этих продуктах AWS, я хотел бы знать, как настроить эту настройку AWS, чтобы, когда пользователи получают доступ к исходным доменам, предоставляемым s3 и EC2 (http), они перенаправлялись обратно в cloudfront (https)?

Ответ №1:

Способ защиты зависит от происхождения.

Для источников S3 вы можете полностью отключить доступ, убедившись, что корзина не является общедоступной. Вы можете использовать идентификатор доступа источника для для cloudfront для аутентификации cloudfront в корзине. Таким образом, люди могут напрямую связаться с источником s3 через cloudfront.

Для EC2 за балансировщиком нагрузки (я предполагаю, что вы используете ALB, поскольку это лучшая практика) настройка немного сложнее. Вы можете добавить заголовок «секретно» в вызов, который cloudfront делает для вашего ALB (например x-origin-protection ). Затем добавьте в свой alb правило прослушивателя, которое перенаправляет только при наличии заголовка, и действие по умолчанию-перенаправление на cloudfront.

Пример правила прослушивания:

 ListenerRule:
  Type: AWS::ElasticLoadBalancingV2::ListenerRule
  Properties:
    Actions:
      - Type: forward
        TargetGroupArn: !Ref MyEc2InstanceTargetGroup
    Conditions:
      - Field: http-header
        HttpHeaderConfig:
          HttpHeaderName: x-origin-protection
          Values:
            - !Ref SecurityToken
    ListenerArn: !Ref HttpsAppListener
    Priority: 1
 

Для получения более полного руководства по настройке ALB ознакомьтесь с https://www.arhs-group.com/protecting-aws-alb-behind-aws-cloudfront-distribution/

Ответ №2:

В вашем дистрибутиве cloudfront > выберите вкладку «Поведение» >> выберите «поведение» и нажмите «Изменить» > > > в разделе «Политика протокола просмотра» выберите «Перенаправить HTTP на HTTPS» и нажмите «сохранить изменения» и дождитесь завершения развертывания.

Для получения дополнительной информации о политике протокола просмотра