Открыть сервис

AWS Identity and Access Management

AWS Identity and Access Management (IAM) — это веб-сервис, предоставляемый Amazon Web Services (AWS, входит в состав Amazon.com, Inc. — организация признана иноагентом в РФ, а также признана экстремистской и запрещена в РФ), который позволяет централизованно управлять доступом к ресурсам AWS. IAM обеспечивает аутентификацию (проверку подлинности) и авторизацию (предоставление разрешений) для пользователей, групп, сервисов и приложений, работающих в облачной инфраструктуре AWS. Сервис был запущен в 2011 году и является ключевым компонентом безопасности AWS, реализуя принцип минимальных привилегий (least privilege) — предоставление только тех прав, которые необходимы для выполнения конкретной задачи.

Основные компоненты

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

Пользователь IAM представляет собой отдельную учётную запись, которая может быть создана для человека, сервиса или приложения. Каждому пользователю присваиваются уникальные учётные данные: имя пользователя, пароль (для доступа к консоли управления AWS) и/или ключи доступа (Access Key ID и Secret Access Key) для программного доступа через API, CLI или SDK. Пользователи могут быть добавлены в группы для упрощения управления разрешениями.

Группы (Groups)

Группа IAM — это набор пользователей, к которым применяются общие политики доступа. Использование групп позволяет администраторам назначать разрешения сразу нескольким пользователям, а не каждому по отдельности. Например, можно создать группу «Разработчики» с разрешениями на чтение и запись в определённые сервисы AWS, и группу «Администраторы» с полным доступом к управлению аккаунтом.

Роли (Roles)

Роль IAM — это временная учётная запись, которая не связана с конкретным пользователем или группой. Роли используются для предоставления разрешений доверенным субъектам, таким как:

  • Сервисы AWS: например, разрешение EC2-инстансу (виртуальной машине AWS) получать доступ к S3-бакету (хранилищу объектов) без хранения ключей доступа на самом инстансе.
  • Пользователи из других аккаунтов AWS: для предоставления доступа к ресурсам одного аккаунта пользователям другого (кросс-аккаунтный доступ).
  • Федеративные пользователи: пользователи, прошедшие аутентификацию через внешний провайдер идентификации (например, Active Directory, Google, Facebook).

Политики (Policies)

Политика IAM — это документ в формате JSON, который определяет разрешения. Политики бывают двух типов:

  • Управляемые политики (Managed Policies): предварительно созданные Amazon (AWS Managed Policies) или пользователем (Customer Managed Policies). Они могут быть прикреплены к нескольким пользователям, группам или ролям.
  • Встроенные политики (Inline Policies): создаются непосредственно для одного пользователя, группы или роли и не могут быть повторно использованы.

Политика состоит из операторов (statements), каждый из которых содержит:

  • Effect: Allow (разрешить) или Deny (запретить).
  • Action: действия, которые разрешены или запрещены (например, s3:GetObject, ec2:StartInstances).
  • Resource: ресурсы, к которым применяется действие (например, arn:aws:s3:::example-bucket/*).
  • Condition: (необязательно) условия, при которых политика действует (например, IP-адрес, время суток, использование MFA).

Устройство и принцип работы

Аутентификация

Аутентификация в IAM происходит через:

  • Пароль: для доступа к веб-консоли AWS.
  • Ключи доступа: для программного доступа (CLI, SDK, API).
  • Сертификаты X.509: для подписи запросов к некоторым сервисам AWS.
  • Многофакторная аутентификация (MFA): дополнительный уровень защиты, требующий одноразовый код с устройства (например, смартфона, аппаратного токена).

Авторизация

Когда пользователь или сервис делает запрос к AWS, IAM проверяет:

  1. Подлинность запроса (аутентификация).
  2. Наличие политик, прикреплённых к субъекту (пользователю, группе, роли).
  3. Наличие политик, прикреплённых к ресурсу (Resource-based Policies, например, для S3-бакетов).
  4. Применение правил по умолчанию: все запросы по умолчанию запрещены (Implicit Deny). Явное разрешение (Allow) в политике переопределяет запрет по умолчанию, но явный запрет (Explicit Deny) переопределяет любое разрешение.

Границы разрешений (Permissions Boundaries)

IAM позволяет устанавливать границы разрешений — максимальный набор прав, который может быть предоставлен пользователю или роли. Это используется для делегирования управления разрешениями, например, администратор может создать роль с границей, ограничивающей её возможности, и передать её другому администратору.

История и развитие

Запуск и первые версии (2011–2013)

IAM был запущен 3 мая 2011 года. Первоначально сервис поддерживал только базовые функции: создание пользователей, групп и политик. В 2012 году была добавлена поддержка ролей для сервисов AWS, что позволило EC2-инстансам получать временные учётные данные.

Расширение функционала (2014–2018)

В 2014 году появилась поддержка MFA для API-запросов. В 2015 году была введена возможность использования временных учётных данных через AWS Security Token Service (STS). В 2016 году IAM начал поддерживать политики на основе ресурсов (Resource-based Policies) для S3 и других сервисов. В 2017 году была добавлена функция IAM Access Analyzer, которая анализирует политики на предмет избыточных разрешений.

Современное состояние (2019–настоящее время)

В 2019 году IAM получил поддержку политик на основе тегов (Tag-based Policies), что позволило более гибко управлять доступом к ресурсам. В 2020 году была запущена функция IAM Roles Anywhere, позволяющая использовать IAM-роли для серверов, работающих вне AWS (on-premises). В 2022 году IAM интегрировался с AWS Identity Center (ранее AWS SSO) для централизованного управления доступом к нескольким аккаунтам AWS.

Применение

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

IAM является основным инструментом для разграничения доступа к сервисам AWS, таким как:

  • Amazon S3: управление доступом к бакетам и объектам (чтение, запись, удаление).
  • Amazon EC2: управление запуском, остановкой и изменением конфигурации виртуальных машин.
  • Amazon RDS: управление базами данных.
  • AWS Lambda: управление созданием и выполнением функций.

Кросс-аккаунтный доступ

IAM позволяет предоставлять доступ к ресурсам одного аккаунта AWS пользователям другого аккаунта. Это часто используется в корпоративных средах, где несколько команд или отделов имеют отдельные аккаунты AWS, но должны совместно использовать определённые ресурсы (например, централизованный S3-бакет для логов).

Федеративный доступ

IAM поддерживает федерацию с внешними провайдерами идентификации через протоколы SAML 2.0 и OpenID Connect (OIDC). Это позволяет сотрудникам компании входить в консоль AWS, используя свои корпоративные учётные данные (например, из Active Directory), без необходимости создавать отдельных пользователей IAM.

Автоматизация и DevOps

IAM широко используется в CI/CD-пайплайнах (непрерывная интеграция и доставка) для предоставления временных разрешений инструментам, таким как Jenkins, GitLab CI, GitHub Actions. Роли IAM позволяют автоматизировать развёртывание приложений без хранения долгосрочных ключей доступа.

Критика и ограничения

Сложность управления

По мере роста организации количество политик и пользователей IAM может стать трудным для управления. Неправильно настроенные политики могут привести к избыточным разрешениям, что увеличивает риск утечки данных. IAM Access Analyzer помогает выявлять такие проблемы, но не устраняет их полностью.

Задержки при репликации

Изменения в политиках IAM (например, добавление нового разрешения) распространяются по регионам AWS с задержкой до нескольких минут. Это может привести к временным несоответствиям в доступе, особенно в сценариях с высокой динамикой.

Отсутствие встроенной поддержки для некоторых сценариев

IAM не поддерживает прямую интеграцию с некоторыми популярными протоколами аутентификации, такими как OAuth 2.0 (для пользовательских приложений). Для этого требуется использование AWS Cognito или сторонних решений. Кроме того, IAM не предоставляет встроенных средств для управления доступом на уровне отдельных записей в базах данных (Row-Level Security) — это реализуется на уровне приложений.

Зависимость от AWS

IAM является проприетарным сервисом, тесно интегрированным с экосистемой AWS. Перенос политик IAM в другие облачные платформы (например, Azure или Google Cloud) требует их полной переработки, что создаёт сложности при мультиоблачных стратегиях.

Интересные факты

  • Максимальное количество объектов: В одном аккаунте AWS можно создать до 5000 пользователей, 300 групп и 1000 ролей (лимиты могут быть увеличены по запросу).
  • Политика по умолчанию: Для всех пользователей IAM по умолчанию действует политика, запрещающая любые действия, кроме тех, что явно разрешены.
  • IAM и STS: AWS Security Token Service (STS) является частью IAM и генерирует временные учётные данные (токены), которые действуют от 15 минут до 36 часов.
  • IAM Roles Anywhere: Эта функция, запущенная в 2020 году, позволяет использовать IAM-роли для серверов, работающих за пределами AWS, через сертификаты X.509.

Источники

  • AWS Documentation: «What is IAM?» (Amazon Web Services, 2024).
  • AWS re:Invent 2023: «IAM best practices and advanced features» (презентация AWS).
  • «AWS Security Best Practices» (AWS Whitepaper, 2023).
  • «IAM Access Analyzer: A Practical Guide» (AWS Blog, 2022).
  • «AWS Identity and Access Management: A Comprehensive Guide» (O'Reilly Media, 2021).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →