Исключить один объект Amazon S3 из Bucket Policy - PullRequest
0 голосов
/ 11 июня 2018

Я хочу отменить разрешение на общедоступный доступ к файлу (images/login_logo.png) внутри моего хранилища S3 my-test-bucket.

В настоящее время настройка этого файла имеет следующие параметры:

enter image description here

Как вы можете видеть на картинке выше.У него нет публичного доступа для всех.

Но я все еще могу получить к нему доступ по ссылке s3.

Это явление вызвано моей политикой в ​​ведре?

{
    "Version": "2012-10-17",
    "Id": "Policy1528702071704",
    "Statement": [
        {
            "Sid": "Stmt1528702067249",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-test-bucket/*"
        }
    ]
}

Если это так, какой лучший способ отменитьразрешение на публичный доступ к одному файлу внутри большого публичного сегмента, содержащего около 10000 файлов?

Я не могу применить make public к большому сегменту из-за этой проблемы .

1 Ответ

0 голосов
/ 11 июня 2018

По умолчанию все объекты в Amazon S3 являются частными.

Вы можете сделать объект доступным через Bucket Policy (например, у вас выше) или добавив разрешения для конкретного объекта .

Если или из этих методов предоставляют доступ к объекту, тогда объект доступен.Таким образом, тот факт, что ваша политика корзины предоставляет доступ ко всей корзине, означает, что ваш объект является общедоступным.

Единственный способ сделать исключение для одного файла - это добавить политику запрета , например:

{
    "Version": "2012-10-17",
    "Id": "Policy1528702071704",
    "Statement": [
        {
            "Sid": "AllowALl",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-test-bucket/*"
        },
        {
            "Sid": "DenyOneObject",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-test-bucket/images/login_logo.png"
        }
    ]
}

A Запретить всегда переопределяет Разрешить , поэтому объект останется закрытым.

Однако будьте осторожны: Эта политика запрещает доступ на чтение всем 1025 * (включая вас! ).Возможно, вам потребуется настроить его, чтобы получить доступ (возможно, с помощью NotPrincipal).

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