Политики IAM
Ролевая модель IAM
IAM предоставляет возможность управлять сущностями в каждом пространстве имен (namespace), такими как пользователи, группы, роли и корневой пользователь пространства имен.
Роль |
Описание |
---|---|
Пользователи (Users) |
Пользователь IAM представляет собой человека (или приложение) в пространстве имен (namespace), который может взаимодействовать с ресурсами Объектного хранилища S3. Примечание
|
Группы (Groups) |
Группы IAM — это совокупность пользователей IAM. Группы позволяют задавать разрешения для всех пользователей в группе. Примечание
|
Роли (Roles) |
Роль IAM — это идентификатор, который могут принимать доверенные внутренние и внешние пользователи. Роль не имеет никаких учетных данных, связанных с ней. Когда пользователю назначается роль, система предоставляет ему временные учетные данные, которые содержат идентификатор ключа доступа (access key), секретный ключ доступа (secret key) и токен безопасности (security token). |
Корневой пользователь (Root user) |
Корневой пользователь является администратором и владельцем корзин и объектов в пространстве имен. |
Политика (Policy) |
Политика IAM — набор разрешений для пользователей IAM, который позволяет контролировать доступ к объектному хранилищу. Политика описывается с помощью специального языка в формате JSON. |
Структура политики IAM
Чтобы назначить разрешения для пользователя, группы, роли или ресурса, необходимо создать политику IAM. Политика содержит следующие данные:
Действия (Actions) — разрешенные действия для сервиса. Например, можно разрешить пользователю вызывать действие
ListBucket
. Любые действия, которые явно не разрешается выполнять, запрещаются.Список действий (Actions)
Действия (Actions)
Описание
s3:ListBucket
Получить список объектов в корзине.
s3:ListAllMyBuckets
Получить список всех корзин, к которым есть доступ у отправителя запроса.
s3:GetBucketPolicy
Возвращает применяемую политику на бакете.
s3:CreateBucket
Создать корзину.
s3:DeleteBucket
Удалить корзину. Для выполнения этого действия необходимо предварительно удалить все объекты из корзины.
s3:PutBucketCORS
Установить политику CORS на корзину. Если конфигурация существует, она будет перезаписана.
s3:PutBucketVersioning
Установить версионирование для существующей корзины (доступно только для владельца корзины).
Возможные значения версионности:
Enabled
— включает версионность для объектов в корзине. Все объекты, добавленные в корзину, получают уникальный идентификатор версии.Suspended
— отключает версионирование для объектов в корзине. Все объекты, добавленные в корзину, получают нулевой идентификатор версии.
Состояния версионности у корзины не существует, если оно специально не устанавливалось. В этом случае запрос
GetBucketVersioning
не вернет текущее состояние версионности.s3:PutBucketObjectLockConfiguration
Разместить конфигурацию блокировки объектов для указанной корзины. Правило, указанное в конфигурации
Object Lock
, будет применяться по умолчанию к каждому новому объекту, помещенному в указанную корзину.s3:EnableObjectLock
Включить блокировку объектов в корзине.
s3:PutLifecycleConfiguration
Разместить или заместить конфигурацию жизненного цикла корзины.
s3:PutObject
Добавить объект в корзину.
s3:DeleteObject
При включенном версионировании удаляет нулевую версию объекта (если она существует) и вставляет маркер
delete
, который становится последней версией объекта.s3:DeleteObjectVersion
Удалить версию объекта. Для успешного выполнения команды требуется указать идентификатор (ID) версии.
s3:AbortMultipartUpload
Прервать составную (multipart) загрузку.
s3:PutObjectLegalHold
Предотвратить перезапись и удаление версии объекта.
s3:PutObjectRetention
Включить жизненный цикл объекта.
s3:BypassGovernanceRetention
Удалить версию объекта, защищенную от удаления политикой Governance Retention.
s3:PutObjectTagging
Установить заданный набор тегов на объект, который уже существует в корзине.
s3:PutObjectVersionTagging
Добавить тэг на версию объекта.
s3:DeleteObjectTagging
Удалить тег с объекта.
s3:DeleteObjectVersionTagging
Удалить тег с версии объекта.
s3:PutBucketAcl
Добавить список контроля доступа (ACL) к существующей корзине.
s3:PutBucketPolicy
Применить политику к существующей корзине.
s3:DeleteBucketPolicy
Удалить политику корзины.
s3:PutObjectAcl
Добавить список контроля доступа (ACL) к существующему объекту.
s3:PutObjectVersionAcl
Добавить список контроля доступа (ACL) к существующей версии объекта.
Ресурсы (Resources) — ресурсы объектного хранилища, для которых разрешено выполнять определенные действия. Например, список корзин, для которых пользователю разрешается выполнять действие
ListBucket
. Пользователи не могут получить доступ к тем ресурсам, для которых явно не предоставляется разрешения.Запрет или разрешение (Effect) — разрешает или запрещает доступ. Поскольку по умолчанию доступ запрещен, обычно создаются правила, которые разрешают определенные действия.
Условия (Conditions) — условия, которые должны выполняться, чтобы применялась политика. Например, можно разрешить доступ только к определенным корзинам S3, если пользователь подключается с определенного диапазона IP-адресов или использует при входе в систему многофакторную аутентификацию.
Список условий (Conditions)
Общие ключи условий (Global condition keys) Общие ключи условий
Тип
Описание
aws:CurrentTime
Date
Проверяет дату и время.
aws:EpochTime
Date
Проверяет дату и время, используя UNIX-время.
aws:PrincipalArn
ARN
Проверяет ARN пользователя IAM или роли, от которых выполнен запрос.
aws:UserAgent
String
Проверяет клиентское приложение, которое отправляет запрос.
aws:PrincipalTag/ tag-key
String
Проверяет тег, назначенный отправителю запроса, на соответствие указанному имени и значению ключа.
aws:RequestTag/ tag-key
String
Проверяет наличие тега пары «ключ-значение» в запросе AWS.
aws:ResourceTag/ tag-key
String
Проверяет, что тег пары «ключ-значение» назначен для ресурса.
aws:SourceIp
IpAddr
Проверяет IP-адрес устройства, запрашивающего доступ.
aws:TagKeys
String, ForAllValues:String ForAnyValue: String
Этот контекстный ключ представляет собой список ключей тегов без значений.
aws:TokenIssueTime
Date
Проверяет дату и время выдачи временных учетных данных.
aws:principaltype
String
Указывает тип учётной записи, отправляющей запрос:
Корневой пользователь —
Account
;Пользователь IAM —
User
;Пользователь объекта Legacy —
ECSUser
.
aws:username
String
Устанавливает имя пользователя IAM на основе запроса от авторизованного пользователя IAM.
Ключи условий для протокола S3 (S3 condition keys) Ключи условий для протокола S3
Описание
s3:x-amz-acl
Указывает стандартный список управления доступом в запросе.
s3:x-amz-grant- permission
Определяет разрешение на следующие действия:
read
write
read-acp
write-acp
full-control
s3:x-amz-copy-source
Позволяет ограничить источник копирования определенной корзиной, папкой или объектом.
s3:x-amz-metadata-directive
Определяет поведение, которое будет применяться при загрузке объектов (COPY или REPLACE).
s3:x-amz-server-side-encryption
Указывает, что запрос должен содержать этот заголовок, чтобы обеспечить хранение загрузок в зашифрованном виде.
s3:VersionId
Ограничивает доступ к определенным версиям объекта.
s3:delimiter
Используется, чтобы потребовать от отправителя запроса указать ограничительный символ.
s3:max-keys
Ограничивает количество запросов
ListBucket
установленным значением.s3:prefix
Ограничивает
ListBucket
иListBucketVersions
определенным префиксом.s3:ExistingObjectTag/ <tag-key>
Устанавливает ограничение для действия
s3:PutObjectAcl
только для объектов, которые имеют определенный тег и значение.s3:RequestObjectTagKeys
Устанавливает ограничение для действия
s3:PutObject
через ограничение тегов объектов, разрешенных в запросе.s3:RequestObjectTag/ <tag-key>
Устанавливает ограничение для действия
s3:PutObject
через ограничение тегов объектов, разрешенных в запросе.