Как добавить политики доступа к объектному хранилищу S3 в личном кабинете
В S3 -хранилище файлы размещаются в качестве объектов в бакетах (контейнерах). Доступ пользователей к бакетам зависит от настройки соответствующих политик.
Бакеты могут быть приватными или публичными. По умолчанию контейнеры в S3-хранилище — приватные, и получить к ним доступ может только авторизованный пользователь (администратор). Если сделать бакет публичным, авторизация для доступа к нему не потребуется.
В личном кабинете можно настроить доступ к бакету, загрузить политику через программный код или json-файл. Также можно добавить политики для хранения или реплекации данных и других задач.
Настройка доступов к бакету
1. Перейдите в раздел «Облачные решение».

2. Откройте вкладку «Объектное хранилище S3» в верхнем меню.
3. Нажмите на «Управление».

4. Перейдите во вкладку «Политики».

5. Кликните на иконку редактирования.

6. Выберите тип политики: приватная или публичная. Либо проведите ручную настройку.

7. Нажмите на «Изменить», чтобы применить политики к бакету.
Для чего нужна ручная настройка политик доступа
Ручную настройку используют для более гибких параметров доступа. Например, можно ограничить доступ к файлам с определенных IP-адресов.
Для ручной настройки можно использовать генератор политик AWS. Готовую политику нужно вставить в модальное окно под текстом «Вставьте код» или сохранить ее в формате JSON и загрузить в объектное хранилище, нажав на соответствующую кнопку (см. скриншот выше).
Вот пример политики, которая разрешает публичный доступ на чтение всех файлов в контейнере для любого пользователя:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::BUCKET/*"]
}
]
}
Если нужно предоставить выборочный доступ, можно использовать политику, которая открывает доступ к одному бакету хранилища и скрывает другой. Например:
{
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/secret/*"
}
]
}
- где вместо my_bucket/* требуется указать путь до контейнера, к которому нужно разрешить доступ;
- а вместо my_bucket/secret/* — путь до директории, которую нужно скрыть.
