Перейти к основному содержимому

Управление доступом

Что такое политика бакета?

Политика бакета — это набор правил, с помощью которых можно управлять доступом к объектам, хранящимся в бакете.

Что можно сделать с помощью политик бакета:

Назначить права доступа:

  • разрешать или запрещать действия с объектами для конкретных пользователей, групп или любых пользователей из сети интернет.
  • управлять действиями: определять, какие операции разрешены (например, чтение, запись, удаление), а какие — запрещены.

Настроить условия доступа:

  • устанавливать ограничения по 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"
}
}

Особенности применения политики доступа к бакету

  1. Пустая политика = полный запрет доступа.
  2. Если к бакету применена политика доступа, но в ней не указано ни одного правила (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Прерывание составной загрузки

Для управления политикой доступа см. инструкцию Управление доступом. Для ознакомления с дополнительными примерами см. Примеры политик доступа.