Открытие публичного доступа к операциям с корзиной

По умолчанию корзины в хранилище S3 создаются с приватным доступом.

Получить приватный доступ к объектам в корзине может только авторизованный пользователь (администратор) при наличии ключей Access Key ID и Secret Key.

Для публичного доступа к объектам авторизация не требуется. Публичный доступ подойдет, когда данные используются широким кругом лиц и приложений, например — хостинг статических файлов сайта.

Как открыть публичный доступ к корзине

Открыть публичный доступ к объектам может только администратор корзины. При этом доступ к таким объектам осуществляется по специальному URL.

Управлять публичным доступом к объектам и корзинам можно с помощью Политики корзины (Bucket Policy) или ACL (Access Control List).

Bucket policy используют для более гибкой настройки доступа. Например, политика позволяет ограничивать доступ к объектам с определенных IP-адресов.

ACL позволяет устанавливать стандарные разрешения на чтение и запись объектов.

Bucket Policy

Для создания политики можно использовать генератор политик AWS. Готовую политику необходимо сохранить в формате JSON и загрузить в S3.

Пример политики, которая разрешает публичный доступ на чтение всех объектов в корзине для любого пользователя:

{
 "Version":"2012-10-17",
 "Statement":[
         {
         "Sid":"AddPerm",
         "Effect":"Allow",
         "Principal": "*",
         "Action":["s3:GetObject"],
         "Resource":["arn:aws:s3:::BUCKET/*"]
       }
   ]
 }

Для загрузки политики:

  • через AWS CLI используйте следующую команду:

    aws s3api put-bucket-policy --bucket <bucket_name> --policy file://policy.json
    
  • через S3 Browser:

    1. Перейдите в меню Buckets → Edit Bucket Policy.

    2. Скопируйте политику, вставьте в окно и нажмите Apply.

  • через REST API используйте метод PUT.

ACL

Примеры настройки ACL через популярные инструменты:

  • AWS CLI

    Для открытия публичного доступа к объектам в корзине используется следующая команда:

    aws s3api –endpoint-url=https://b1.s3.sbercloud.ru put-object-acl --bucket <bucket_name> --key <object_name> --acl public-read
    

    где:

    • <endpoint> — URL для доступа к корзине, например b1.s3.sbercloud.ru.

    • put-object-acl — устанавливает правило доступа к указанному объекту.

    • <bucket_name> — название корзины.

    • <object_name> — название объекта.

    • --acl public-read — разрешает публичный доступ на чтение объекта.

  • S3 Browser

    Чтобы активировать публичный доступ к корзине через S3 Browser:

    1. Выберите корзину или объект.

    2. Откройте вкладку Permissions.

    3. Напротив пункта All Users активируйте чекбокс с нужными разрешениями.

    4. Если необходимо применить права ко всем объектам в корзине, активируйте чекбокс Apply for all subfolders and files.

    5. Нажмите Apply changes.