Общая информация о политиках доступа
Доступ к бакету можно задать через политику доступа (Bucket policy). Политика состоит из правил, которые разрешают или запрещают действия с ресурсом (бакетом или группой объектов) для всех или выбранных принципалов (пользователей). Основной принцип — если политика доступа создана, запрещено все, что не разрешено.
Политика доступа работает для лю бого авторизованного доступа. Авторизованным доступом считается просмотр и управление бакетами и их объектами через панель управления и API. Неавторизованным доступом считаются запросы к объектам в публичных бакетах по публичному домену бакета или пользовательским доменам.
Политика доступа имеет ограничение на максимальный размер в 20 КБ.
Политика доступа может распространяться на любого пользователя, которому разрешен доступ к хранилищу в соответствии с ролевой моделью, а также определяет доступ для пользователей с ролями object_storage_user и s3.bucket.user.
Подробнее о взаимодействии ролевой модели и политик доступа в инструкции Управлять доступом в S3.
Управлять политиками доступа может Владелец аккаунта и пользователи с ролью member.
Если у пользователя с ролью member выбрана область доступа Проекты, у него в разрешении дол жен быть добавлен соответствующий проект.
Создавать политики доступа и управлять ими можно в панели управления или через S3 API в соответствии с требованиями к структуре политики.
Структура политики доступа
Политика доступа имеет JSON-структуру. Пример политики:
{
"Id": "my-bucket-policy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowObjectDeletion",
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::bucket-name",
"arn:aws:s3:::bucket-name/*",
"arn:aws:s3:::bucket-name/${aws:userid}/*"
],
"Condition": {
"StringEquals": {
"aws:UserAgent": [
"storage-test-user-agent"
]
}
}
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/*"
}
]
}
Содержимое политики:
Правила
Правила бывают двух типов: разрешающие (Allow) и запрещающие (Deny).
Разрешение или запрет распространяется на действия, ресурсы и принципалов, добавленных в правило.
Если политика содержит несколько правил, они применяются следующим образом:
- если хотя бы одно разрешающее правило выполняется, доступ будет разрешен;
- если хотя бы одно запрещающее правило выполняется, доступ будет запрещен;
- если выполняются одновременно разрешающие и запрещающие правила, доступ будет запрещен;
- если ни одно правило не выполняется, доступ будет запрещен.
Принципалы
Правило применяется в отношении запросов от принципалов (пользователей):
- на авторизованные запросы определенных пользователей, указываются идентификаторы пользователей (посмотреть идентификатор сервисного пользователя можно в панели управления);
- на все авторизованные и неавторизованные запросы, обозначается символом
*.
Добавлять в качестве принципалов пользователей с доступом в панель управления можно только при настройке политики через панель управления.
Ресурсы
Ресурсы — бакет или набор объектов, на которые будет распространяться правило. Указывать можно только ресурсы, связанные с бакетом, для которого настраивается политика.
Ресурсы можно указывать в форматах:
arn:aws:s3:::<bucket-name>— ресурс бакета, можно указать только один ресурс такого формата (бакет, для которого настраивается политика). Ресурс будет работать для действий, связанных с настройкой бакета, и не распространяется на его объекты;arn:aws:s3:::<bucket-name>/<prefix>— ресурс объектов бакета, где<prefix>— префикс, на объекты с которым будет распространяться правило. Если указать*, в ресурсы будут включены все объекты бакета;arn:aws:s3:::<bucket-name>/${<variable-name>}— ресурс объектов бакета, где<variable-name>— имя подстановочной переменной (ключа), которая выполняет роль префикса.
Действия
Если указать *, в правило будут включены все действия.
Условия
Условие определяет, в каких случаях правило будет работать. Условие состоит из