S3 Bucket policy - ограничить доступ к объектам - PullRequest
0 голосов
/ 20 октября 2018

Моя настройка:

  • изображения, хранящиеся в корзине S3
  • корзина, связанная с CDN CloudFront с использованием пользовательского CNAME (то есть cdn.mydomain.com)

Мои намерения: рассмотрим объект, исходное местоположение которого mybucket.s3.amazonaws.com/object.jpg, а местоположение CDN cdn.mydomain.com/object.jpg.

Разрешить только тогда, когда

  • объект доступен из моего домена (mydomain.com) с использованием исходного или CDN URL

  • объекта, доступ к которому осуществляется без заголовка (то есть ссылок, вставленных в браузер) с использованием только CDN URL

КомуДля этого я использую следующую политику:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": 
    [
        {
            "Sid": "Allow access to objects when requested by CloudFront Distribution",
            "Effect": "Allow",
            "Principal": 
            {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <my ID>"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<my bucket>/*"
        },
        {
            "Sid": "Give access if referer is not set",
            "Effect": "Allow",
            "Principal": { "AWS": "*" },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<my bucket>/*",
            "Condition": 
            {
                "StringNotLike": 
                {
                    "aws:Referer": "*"
                }
            }
        },
        {
            "Sid": "Give access if referer is my site",
            "Effect": "Allow",
            "Principal": { "AWS": "*" },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<my bucket>/*",
            "Condition": 
            {
                "StringLike": 
                {
                    "aws:Referer": ["https://www.example.com/*","https://example.com/*"]
                }
            }
        }
    ]
}

С этим я сталкиваюсь с двумя проблемами:

  • При применении этой политики многие изображения возвращают доступ«Запрещено», даже если он встроен в мой собственный веб-сайт.
  • Исходный URL-адрес S3 (т. е. mybucket.s3.amazonaws.com/object.jpg) по-прежнему доступен, если не указан реферер.

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...