Управление доступом
Что такое политика бакета?
Политика бакета — это набор правил, с помощью которых можно управлять доступом к объектам, хранящимся в бакете.
Что можно сделать с помощью политик бакета:
Назначить права доступа:
- разрешать или запрещать действия с объектами для конкретных пользователей, групп или любых пользователей из сети интернет.
- управлять действиями: определять, какие операции разрешены (например, чтение, запись, удаление), а какие — запрещены.
Настроить условия доступа:
- устанавливать ограничения по IP-адресу, времени доступа и другим параметрам.
Зачем использовать политики бакета:
- контролируйте, кто имеет доступ к данным — это помогает избежать несанкционированного доступа;
- гибко настраивайте доступ под разные сценарии: по IP, по времени или иным условиям;
- обеспечьте соответствие внутренним требованиям безопасности и конфиденциальности.
Формат политики доступа
Основные элементы политики доступа
Политика бакета — это JSON-документ, содержащий один или несколько блоков Statement, в которых описываются правила доступа к объектам. Каждое правило — это самостоятельный блок, содержащий информацию о том:
- кто может получить доступ;
- какие действия разрешены или запрещены;
- какие ресурсы затрагивает правило.
При каких условиях оно действует.
| Элемент | Тип | Описание | Пример |
|---|---|---|---|
| Version | Дата | Версия синтаксиса политики. Используется фиксированное значение: 2012-10-17 | "Version": "2012-10-17" |
| Statement | Объект | Список правил, каждое из которых включает в себя следующие параметры: | |
| → Effect | Строка | разрешить (Allow) или запретить (Deny) выполнение действия; | "Effect": "Allow" |
| → Principal | Строка | кому предоставляется доступ (пользователь, группа или все пользователи); | "Principal": "*" |
| → Action | Строка | какие действия разрешены или запрещены (например, s3:GetObject — чтение объекта); | "Action": "s3:GetObject" |
| → Resource | Строка | ресурс, к которому применяется правило. Обычно это ARN бакета или объектов | "Resource": "arn:aws:s3:::bucket/*" |
| → Condition | Объект | (необязательный) дополнительные условия применения политики (например, IP-адреса, время). | cм. ниже |
Пример политики доступа:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam:::user/userid"
]
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::example",
"arn:aws:s3:::example/*"
]
}
]
}
Условия (Condition)
С помощью блока Condition можно задать ограничения по:
IP-адресу:
"Condition": {
"IpAddress": {
"aws:SourceIp": "192.0.2.0/24"
}
}
Времени доступа:
"Condition": {
"DateGreaterThan": {
"aws:CurrentTime": "2025-05-19T00:00:00Z"
}
}
Особенности применения политики доступа к бакету
- Пустая политика = полный запрет доступа.
- Если к бакету применена политика доступа, но в ней не указано ни одного правила (Statement), все обращения к ресурсу будут автоматически отклоняться. Такой бакет становится недоступным для всех пользователей.
Как отключить политику доступа
Чтобы полностью убрать ограничения, заданные политикой, необходимо удалить саму политику, а не просто оставить ее пустой. Удаление политики вернет поведение бакета к стандартным настройкам прав доступа.
Разделение ресурсов: бакет ≠ объекты внутри
В Amazon S3 ресурсы бакета и его объектов считаются разными сущностями. Указав только бакет (arn:aws:s3:::samplebucket) в разделе Resource, вы не даете доступ к файлам внутри него.
Как правильно указать ресурсы
Чтобы правило охватывало и сам бакет, и все его объекты, в политике нужно указать оба ресурса отдельно:
"Resource": [
"arn:aws:s3:::samplebucket",
"arn:aws:s3:::samplebucket/*"
]
Где:
- samplebucket — применяется к операциям, связанным с настройками самого бакета (например, просмотр списка объектов, изменение тегов, управление политиками и т.д.);
- samplebucket/* — охватывает все объекты внутри бакета.
Действия в политике доступа
Политики доступа позволяют точно управлять доступом, разрешая или запрещая определенные действия с бакетом и объектами внутри него. Ниже представлены наиболее распространенные действия, которые можно указать в параметре Action в политике.
Общие действия
| Действие | Описание |
|---|---|
| * | Все действия с бакетом и его объектами |
| s3:* | Все действия, относящиеся к сервису S3 |
Удаление
| Действие | Описание |
|---|---|
| s3:DeleteBucket | Удаление самого бакета |
| s3:DeleteObject | Удаление объекта |
| s3:DeleteObjectVersion | Удаление конкретной версии объекта |
| s3:DeleteBucketPolicy | Удаление политики бакета |
| s3:DeleteObjectTagging | Удаление тегов объекта |
| s3:DeleteObjectVersionTagging | Удаление тегов версии объекта |
Получение (чтение) данных
| Действие | Описание |
|---|---|
| s3:GetObject | Получение (чтение) объекта |
| s3:GetObjectVersion | Чтение определенной версии объекта |
| s3:GetObjectAttributes | Получение метаданных объекта |
| s3:GetObjectTagging | Получение тегов объекта |
| s3:ListBucket | Получение списка объектов в бакете |
| s3:ListBucketVersions | Получение списка версий объектов |
| s3:ListBucketMultipartUploads | Просмотр незавершенных составных загрузок |
| s3:ListMultipartUploadParts | Просмотр частей составной загрузки |
Получение настроек бакета
| Действие | Описание |
|---|---|
| s3:GetLifecycleConfiguration | Просмотр настроек жизненного цикла |
| s3:GetBucketTagging | Получение тегов, назначенных бакету |
| s3:GetBucketVersioning | Проверка статуса версионирования |
| s3:GetBucketPolicy | Получение текущей политики доступа |
| s3:GetBucketLogging | Получение настроек логирования |
| s3:GetBucketCORS | Получение настроек CORS |
Изменение данных и настроек
| Действие | Описание |
|---|---|
| s3:PutObject | Загрузка объекта в бакет |
| s3:PutObjectTagging | Назначение тегов объекту |
| s3:PutBucketCORS | Настройка CORS (междоменные запросы) |
| s3:PutBucketVersioning | Включение/отключение версионирования |
| s3:PutBucketLogging | Настройка логирования |
| s3:PutBucketPolicy | Назначение новой политики доступа |
Прочие действия
| Действие | Описание |
|---|---|
| s3:AbortMultipartUpload | Прерывание составной загрузки |
Для управления политикой доступа см. инструкцию Управление доступом. Для ознакомления с дополнительными примерами см. Примеры политик доступа.