Политики IAM

Ролевая модель IAM

IAM предоставляет возможность управлять сущностями в каждом пространстве имен (namespace), такими как пользователи, группы, роли и корневой пользователь пространства имен.

Роль

Описание

Пользователи (Users)

Пользователь IAM представляет собой человека (или приложение) в пространстве имен (namespace), который может взаимодействовать с ресурсами Объектного хранилища S3.

Примечание

  • Пользователи IAM могут принадлежать к одной или нескольким группам IAM.

  • Пользователи IAM имеют связанные с ними долгосрочные учетные данные, которые используются для доступа к ресурсам S3, IAM и STS. Учетные данные состоят из идентификатора ключа доступа (access key) и секретного ключа доступа (secret key).

  • Пользователи IAM могут получить доступ к API.

Группы (Groups)

Группы IAM — это совокупность пользователей IAM. Группы позволяют задавать разрешения для всех пользователей в группе.

Примечание

  • Группы не могут содержать другие группы.

  • Группы не могут получить доступ к любым API ECS, доступ могут получить только пользователи IAM и роли.

Роли (Roles)

Роль IAM — это идентификатор, который могут принимать доверенные внутренние и внешние пользователи.

Роль не имеет никаких учетных данных, связанных с ней. Когда пользователю назначается роль, система предоставляет ему временные учетные данные, которые содержат идентификатор ключа доступа (access key), секретный ключ доступа (secret key) и токен безопасности (security token).

Корневой пользователь (Root user)

Корневой пользователь является администратором и владельцем корзин и объектов в пространстве имен.

Политика (Policy)

Политика IAM — набор разрешений для пользователей IAM, который позволяет контролировать доступ к объектному хранилищу. Политика описывается с помощью специального языка в формате JSON.

Структура политики IAM

Чтобы назначить разрешения для пользователя, группы, роли или ресурса, необходимо создать политику IAM. Политика содержит следующие данные:

  1. Действия (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) к существующей версии объекта.

  1. Ресурсы (Resources) — ресурсы объектного хранилища, для которых разрешено выполнять определенные действия. Например, список корзин, для которых пользователю разрешается выполнять действие ListBucket. Пользователи не могут получить доступ к тем ресурсам, для которых явно не предоставляется разрешения.

  2. Запрет или разрешение (Effect) — разрешает или запрещает доступ. Поскольку по умолчанию доступ запрещен, обычно создаются правила, которые разрешают определенные действия.

  3. Условия (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 через ограничение тегов объектов, разрешенных в запросе.