AWS S3: добавление aws: оператор Referer разрывает ListObjects (403 запрещено) - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь выяснить, почему AWS S3 SDK ListObjects перестает работать (403 запрещено) при добавлении оператора "aws: Referer" в мою политику корзины.

Следующее работает отлично, пока оператор Referer не будет добавлен в политику пользователя:

<?php
try {
    $result = $this->s3->listObjects([
        'Bucket' => $this->bucket
    ]);

    echo "Keys retrieved!" . PHP_EOL;
    foreach ($result['Contents'] as $object) {
        echo $object['Key'] . PHP_EOL;
    }
} catch (S3Exception $e) {
    echo $e->getMessage() . PHP_EOL;
}

После добавления выписки веб-страница возвращает 403 Запрещено как таковое:

Error executing "ListObjects" on "https://myamazonurl.s3.amazonaws.com/?encoding-type=url"; AWS HTTP error: Client error: `GET https://myBucketName.s3.amazonaws.com/?encoding-type=url` resulted in a `403 Forbidden` response: AccessDenied

Эта политика отлично работает для ListObjects:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowGetRequestsOriginating",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteObject",
                "s3:Put*",
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::MyBucketName*",
                "arn:aws:s3:::MyBucketName"
            ],
        }
    ]
}

Но как только я добавляю блок "aws: Referer": ListObjects перестает работать:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Allowgetrequestsoriginatingfrom",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteObject",
                "s3:Put*",
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::MyBucketName*",
                "arn:aws:s3:::MyBucketName"
            ],
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "http://myLocalSite.vagrant",
                        "http://myLocalSite.vagrant/*"
                    ]
                }
            }
        }
    ]
}

Есть идеи?

...