Бакеты S3: управление доступом и работа с бакетами

Бакет – это контейнер верхнего уровня, в котором хранятся S3-объекты. В веб-интерфейсе PC-Storage бакеты отображаются на главной странице S3-хранилища; после выбора бакета можно работать с объектами и дополнительными настройками доступа.

Если вы настраиваете права: IAM определяет, может ли пользователь работать с сервисом S3 в целом. Bucket Policy определяет права этого пользователя внутри конкретного бакета.

 

1. Правила именования бакетов

Имя бакета должно быть:

  • Уникальным в системе;
  • минимальная длина 3 символа;
  • для имени используются латинские буквы, цифры, дефис и точки.
  • если интерфейс не принимает имя, ориентируйтесь на подсказку проверки в форме создания.
Создание нового бакета
Проверка имени при создании нового бакета в веб-интерфейсе PC-Storage.

 

2. Создание бакета через веб-интерфейс

  1. Откройте S3-хранилище.
  2. На странице со списком бакетов выберите действие «Создание нового бакета».
  3. Введите имя бакета.
  4. Подтвердите создание.

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

Создание через AWS CLI

Если на компьютере установлен и настроен AWS CLI с ключами доступа PC-Storage, бакет можно создать из командной строки. Откройте Terminal в macOS/Linux или PowerShell / командную строку в Windows и выполните команду ниже. Вместо example-bucket укажите имя создаваемого бакета:

aws s3api create-bucket --bucket example-bucket --endpoint-url=https://eu-s3.platformcraft.com
  • awss3apicreate-bucket – команда AWSCLI для создания бакета;
  • —bucket example-bucket – имя создаваемого бакета, example-bucket нужно заменить на свое;
  • —endpoint-url=https://eu-s3.platformcraft.com – адрес S3 API PlatformCraft.

При успешном создании API возвращает Location нового бакета:

{
  "Location": "/example-bucket"
}

Перед выполнением команды AWS CLI должен быть установлен и настроен с вашими S3 Access Key и S3 Secret Key. Инструкция по настройке приведена в разделе «Работа с S3-хранилищем PC-Storage».

 

3. Просмотр бакета и его параметров

Выберите бакет в веб-интерфейсе. В правой панели отображаются его endpoint и дата создания, а также дополнительные разделы: CORS, Versioning, Policies и Presigned upload URL.

aws s3api list-buckets --endpoint-url=https://eu-s3.platformcraft.com

Получить список бакетов

Если AWS CLI уже установлен и настроен с вашими S3-ключами PC-Storage, откройте Terminal в macOS/Linux или PowerShell / командную строку в Windows и выполните команду:

aws s3api list-buckets —endpoint-url=https://eu-s3.platformcraft.com

Здесь:

  • aws s3api list-buckets – команда для получения списка бакетов;
  • —endpoint-url=https://eu-s3.platformcraft.com – адрес S3 API PlatformCraft, менять его не нужно.

Команда возвращает доступные бакеты учетной записи, их имена и даты создания.

Проверить существование бакета и доступ

Чтобы проверить, существует ли конкретный бакет и есть ли у вашей учетной записи доступ к нему, выполните:

aws s3api head-bucket --bucket bucket-name --endpoint-url=https://eu-s3.platformcraft.com

Особенность head-bucket: если бакет существует и у пользователя есть к нему доступ, запрос завершается с HTTP-кодом 200. Если бакет не существует либо прав недостаточно, возвращается 403 Forbidden без тела ответа, поэтому только по результату head-bucket нельзя определить, какая именно из этих двух причин вызвала ошибку.

 

4. Удаление бакета

Удалить можно только пустой бакет. Если в нем остаются объекты или версии объектов, сначала удалите их, а затем повторите удаление бакета:

aws s3api delete-bucket --bucket example-bucket --endpoint-url=https://eu-s3.platformcraft.com
ОшибкаЧто означает
NoSuchBucketБакета с таким именем не существует.
AccessDeniedУ текущей учетной записи нет доступа к бакету.
BucketNotEmptyВ бакете остаются объекты; перед удалением его нужно очистить.

 

5. Bucket Policy: права на бакет и объекты

Bucket Policy применяется к конкретному бакету и содержит одно или несколько правил. Каждое правило определяет пользователя, действия, ресурсы и результат правила:

  • Statement ID – идентификатор правила.
  • Principal – user ID пользователя, к которому применяется правило.
  • Actions – S3-действия, которые разрешаются или запрещаются.
  • Resources – бакет и/или объекты, на которые распространяется правило.
  • Effect – Allow (разрешить); Deny (запретить).

Приоритет запрета: если на пользователя одновременно действуют разрешающее и запрещающее правила для одного действия и ресурса, запрещающее правило имеет приоритет.

Настройка Bucket Policy через веб-интерфейс

  1. Выберите нужный бакет.
  2. В правой панели разверните раздел Policies.
  3. Нажмите «Добавить правило».
  4. Заполните Statement ID, Actions, Effect, Resources и Principal.
  5. При необходимости добавьте дополнительные правила.
  6. Нажмите «Сохранить».
Bucket Policy в веб-интерфейсе
Форма правила Bucket Policy в веб-интерфейсе. Имя бакета и endpoint обезличены.

 

6. Типовые сценарии доступа

Ниже приведены базовые шаблоны. Замените USER_ID и example-bucket своими значениями.

Только чтение: список объектов и скачивание

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReadBucket",
      "Effect": "Allow",
      "Principal": {"AWS": ["USER_ID"]},
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::example-bucket"]
    },
    {
      "Sid": "ReadObjects",
      "Effect": "Allow",
      "Principal": {"AWS": ["USER_ID"]},
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::example-bucket/*"]
    }
  ]
}

Только загрузка

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "UploadOnly",
      "Effect": "Allow",
      "Principal": {"AWS": ["USER_ID"]},
      "Action": ["s3:PutObject"],
      "Resource": ["arn:aws:s3:::example-bucket/*"]
    }
  ]
}

Если нужен список объектов: добавьте отдельное разрешение s3:ListBucket для ресурса arn:aws:s3:::example-bucket.

Полный доступ к бакету

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "FullAccess",
      "Effect": "Allow",
      "Principal": {"AWS": ["USER_ID"]},
      "Action": ["s3:*"],
      "Resource": [
        "arn:aws:s3:::example-bucket",
        "arn:aws:s3:::example-bucket/*"
      ]
    }
  ]
}

 

7. Bucket Policy через S3 API

Для работы с Bucket Policy через S3 API в примерах используется AWS CLI. Заменяйте example-bucket и путь к JSON-файлу своими значениями; endpoint PlatformCraft оставляйте без изменений.

Применить или заменить политику

aws --endpoint https://eu-s3.platformcraft.com s3api put-bucket-policy --bucket example-bucket --policy file:///path/to/policy.json

Одна политика на бакет: повторный вызов put-bucket-policy заменяет текущую политику бакета новой. Если нужно сохранить существующие правила, включите их в новый JSON перед отправкой.

Получить политику

aws s3api get-bucket-policy --bucket example-bucket --endpoint-url=https://eu-s3.platformcraft.com

Удалить политику

aws s3api delete-bucket-policy --bucket example-bucket --endpoint-url=https://eu-s3.platformcraft.com

 

8. Типовые ошибки

ОшибкаЧто проверить
Invalid bucket nameИмя бакета не прошло проверку формата.
BucketAlreadyOwnedByYouБакет с таким именем уже принадлежит текущей учетной записи.
BucketAlreadyExistsИмя бакета уже занято в системе.
NoSuchBucketУказанного бакета не существует.
AccessDenied / 403Нет прав на операцию либо используются недействительные ключи доступа.
BucketNotEmptyБакет нельзя удалить, пока в нем есть объекты.
Policy has invalid resourceВ Bucket Policy некорректно указан ресурс.

 

9. Быстрая диагностика доступа

СитуацияЧто проверить
Пользователь не открывает S3Проверьте доступ к сервису S3 в IAM.
S3 открывается, но бакет недоступенПроверьте Bucket Policy, Principal, Actions и Resources.
Allow не дает ожидаемого доступаПроверьте, нет ли отдельного Deny для того же действия или ресурса.
head-bucket возвращает 403Проверьте и существование бакета, и права: HEAD не различает эти причины.
put-bucket-policy удалил старые правилаМетод заменяет текущую политику целиком; сформируйте единый JSON со всеми нужными правилами.

Подпишитесь на наши новости,
чтобы быть в курсе всех событий

    Прокрутить вверх