Ограничить доступ к статическому веб-сайту s3 за дистрибутивом cloudfront

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

#amazon-веб-сервисы #amazon-s3 #amazon-cloudfront

Вопрос:

Я хочу временно запретить пользователям доступ к моему статическому веб-сайту, размещенному в s3, который находится за дистрибутивом cloudfront.

Возможно ли это, и если да, то какие методы я мог бы использовать для реализации этого?

Я смог ограничить определенный доступ к моей корзине s3, используя условие в политике корзины, которое выглядит примерно так:

 {
  "Version": "2012-10-17",
  "Statement": [
      {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Principal": {
              "AWS": "*"
          },
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::my-bucket/*",
          "Condition": {
              "IpAddress": {
                  "aws:SourceIp": "12.34.56.73/32"
              }
          }
      }
  ]
}
  

который работает и ограничивает мою корзину s3 моим IP, однако это означает, что URL-адрес cloudfront получает 403 forbidden: access denied .

При чтении документов AWS предлагается ограничить определенный доступ к ресурсам s3 с помощью Origin Access Identity . Однако они указывают следующее:

Если вы не видите параметр Ограничить доступ к корзине, ваш источник Amazon S3 может быть настроен как конечная точка веб-сайта. В этой конфигурации сегменты S3 должны быть настроены с CloudFront в качестве пользовательских источников, и вы не можете использовать с ними идентификатор доступа origin.

что наводит меня на мысль, что я не могу использовать его в данном случае. В идеале я хотел бы заставить свой дистрибутив или политику корзины использовать определенную группу безопасности и контролировать ее таким образом, чтобы я мог легко добавлять / удалять утвержденный ip.

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

1. Вы хотите просто запретить им прямой доступ к S3 или к обоим S3 и CloudFront?

2. @kichik оба в идеале

Ответ №1:

Вы можете разрешить IP-адреса CloudFront на CloudFront, поскольку конечная точка статического веб-сайта не поддерживает идентификацию исходного доступа. Вот список IP-адресов CloudFront:http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips

Ответ №2:

По этой ссылке также объясняется, как вы можете ограничить доступ через заголовки ссылокhttps://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-serve-static-website /

Вы можете указать CloudFront добавлять заголовок к каждому запросу, а затем изменить свою политику корзины S3, чтобы требовать этот заголовок.

Например.

 {
  "Version":"2012-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests originating from www.example.com and example.com.",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition":{
        "StringLike":{"aws:Referer":"mysecretvalue"}
      }
    }
  ]
}