Общая информация о политиках доступа
Доступ к бакету можно задать через политику доступа (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/*"
}
]
}
Содержимое политики: