AWS IAM
AWS IAM (Identity and Access Management) — это веб-сервис, предоставляемый компанией Amazon Web Services (AWS), предназначенный для управления доступом к ресурсам AWS. IAM позволяет централизованно создавать и управлять пользователями, группами, ролями, а также задавать детальные разрешения на выполнение действий с сервисами и ресурсами AWS. Сервис является глобальным и бесплатным для использования (оплачивается только использование ресурсов, к которым предоставляется доступ).
История
Сервис AWS IAM был запущен 3 мая 2010 года. Его появление было связано с необходимостью решения проблемы безопасности и управления доступом в растущей экосистеме облачных сервисов Amazon. До появления IAM управление доступом к AWS было примитивным: существовали только корневые учётные записи (root account) и ключи доступа (Access Key ID и Secret Access Key), которые предоставляли полный контроль над аккаунтом. IAM ввёл концепцию детализированных разрешений, позволяя администраторам точно настраивать, кто и к каким ресурсам имеет доступ.
С момента запуска IAM претерпел ряд значительных обновлений. В 2011 году была добавлена поддержка ролей (Roles) для делегирования доступа между аккаунтами. В 2014 году появилась возможность управления доступом на основе атрибутов (ABAC) с помощью тегов. В 2017 году была введена политика управления сессиями (Session Policies), а в 2019 году — IAM Access Analyzer, инструмент для анализа политик доступа и выявления потенциальных угроз. В 2022 году была добавлена поддержка IAM Roles Anywhere, позволяющая использовать роли IAM для рабочих нагрузок вне AWS.
Основные компоненты
Пользователи (Users)
Пользователь IAM — это сущность, представляющая человека или приложение, которому необходим доступ к ресурсам AWS. Каждый пользователь имеет уникальное имя и набор учётных данных: пароль для консоли управления, ключи доступа для API, CLI или SDK, а также сертификаты X.509. Пользователи могут быть созданы вручную или автоматически через API.
Группы (Groups)
Группа IAM — это коллекция пользователей, к которой применяются общие политики разрешений. Группы упрощают управление доступом: вместо назначения политик каждому пользователю по отдельности, администратор может назначить политику группе, и все её члены автоматически получат соответствующие права. Группы не могут содержать другие группы.
Роли (Roles)
Роль IAM — это временная учётная запись, которой можно назначить разрешения. Роли используются для предоставления доступа к ресурсам AWS другим аккаунтам AWS, сервисам AWS (например, EC2, Lambda), а также внешним пользователям (федерация). Роль не имеет постоянных учётных данных; вместо этого она выдаёт временные токены безопасности (через AWS STS) на определённый период.
Политики (Policies)
Политика IAM — это документ в формате JSON, который определяет разрешения на выполнение действий с ресурсами AWS. Политики бывают двух типов:
- Управляемые политики (Managed Policies) — создаются и поддерживаются AWS (например,
AdministratorAccess,AmazonS3ReadOnlyAccess) или пользователем (Customer Managed Policies). - Встроенные политики (Inline Policies) — прикрепляются непосредственно к пользователю, группе или роли и не могут быть повторно использованы.
Политика состоит из следующих элементов:
- Effect — разрешает (
Allow) или запрещает (Deny) действие. - Action — список действий (например,
s3:GetObject,ec2:StartInstances). - Resource — ARN (Amazon Resource Name) ресурса, к которому применяется действие.
- Condition — необязательное условие (например, IP-адрес, время суток, MFA).
Учётные данные (Credentials)
IAM поддерживает несколько типов учётных данных:
- Пароль — для доступа к консоли управления AWS.
- Ключи доступа (Access Key ID и Secret Access Key) — для доступа через API, CLI или SDK.
- Сертификаты X.509 — для подписи запросов к API.
- Временные токены безопасности — выдаются через AWS Security Token Service (STS) для ролей и федерации.
Принципы работы
Модель разрешений
IAM работает по принципу явного разрешения (explicit allow). По умолчанию все действия с ресурсами AWS запрещены. Разрешения предоставляются только через политики. При этом действует правило: явный запрет (Deny) имеет приоритет над любым разрешением. Это означает, что если политика явно запрещает действие, оно не может быть выполнено, даже если другая политика его разрешает.
Оценка политик
При выполнении запроса к ресурсу AWS IAM оценивает все политики, прикреплённые к пользователю, группе и роли, а также политики самого ресурса (Resource-based policies). Процесс оценки включает:
- Проверку наличия явного запрета. Если есть — доступ запрещён.
- Проверку наличия явного разрешения. Если есть — доступ разрешён.
- Если ни запрета, ни разрешения нет — доступ запрещён по умолчанию.
Федерация и временный доступ
IAM поддерживает федерацию удостоверений (Identity Federation), позволяющую пользователям из внешних систем (например, корпоративный Active Directory, Google, Facebook) получать временный доступ к ресурсам AWS без создания постоянного пользователя IAM. Для этого используется протокол SAML 2.0 или OpenID Connect (OIDC). Временные токены безопасности выдаются через AWS STS.
Применение
Управление доступом к сервисам AWS
IAM является основным инструментом для управления доступом к большинству сервисов AWS, включая S3, EC2, Lambda, RDS, DynamoDB и другие. Администраторы могут создавать политики, которые разрешают или запрещают конкретные действия (например, чтение объекта из корзины S3, запуск экземпляра EC2).
Безопасность и аудит
IAM интегрирован с AWS CloudTrail, который записывает все действия, выполненные пользователями и ролями. Это позволяет проводить аудит доступа, выявлять подозрительную активность и расследовать инциденты безопасности. IAM Access Analyzer помогает анализировать политики и выявлять случаи, когда доступ к ресурсам предоставлен извне аккаунта.
Многофакторная аутентификация (MFA)
IAM поддерживает многофакторную аутентификацию, требующую от пользователя ввода дополнительного кода (например, из приложения-генератора или аппаратного ключа) при входе в консоль или выполнении API-запросов. MFA может быть обязательной для определённых действий (например, удаление ресурсов).
Интеграция с другими сервисами
IAM используется для управления доступом к сервисам AWS, которые не являются частью IAM, например:
- AWS Organizations — для управления политиками доступа на уровне организации.
- AWS Control Tower — для автоматизации создания и управления лендинг-зонами.
- AWS Service Catalog — для управления доступом к продуктам и портфелям.
Ограничения и критика
Сложность управления
С ростом числа пользователей, групп, ролей и политик управление IAM может стать сложным. Администраторы часто сталкиваются с проблемой «разрастания политик» (policy sprawl), когда трудно отследить, какие разрешения имеют конкретные пользователи. AWS предлагает инструменты, такие как IAM Access Analyzer и IAM Policy Simulator, для упрощения анализа, но полностью решить проблему не удаётся.
Задержка при распространении изменений
Изменения в политиках IAM не вступают в силу мгновенно. Существует задержка (обычно несколько секунд, но в редких случаях до нескольких минут) между моментом сохранения политики и её применением. Это может быть критично в сценариях, требующих немедленного отзыва доступа.
Отсутствие встроенного управления привилегированным доступом
IAM не предоставляет встроенных механизмов для управления привилегированным доступом, таких как привязка к временным окнам, утверждение запросов на повышение привилегий или автоматический отзыв прав после выполнения задачи. Для этого требуются сторонние решения или сервисы AWS, такие как AWS Identity Center (ранее AWS SSO).
Зависимость от других сервисов
IAM является критически важным сервисом, но его работа зависит от других компонентов AWS, таких как AWS STS (выдача токенов) и AWS CloudTrail (аудит). Сбой в этих сервисах может привести к невозможности аутентификации или аудита.
Сравнение с альтернативами
AWS IAM vs. Azure RBAC
Microsoft Azure использует модель управления доступом на основе ролей (RBAC), которая концептуально похожа на IAM, но имеет различия в реализации. В Azure роли назначаются на уровне подписки, группы ресурсов или ресурса, а не на уровне пользователя. IAM более гибок в плане детализации разрешений, но Azure RBAC проще в настройке для типовых сценариев.
AWS IAM vs. Google Cloud IAM
Google Cloud IAM также использует политики на основе ролей, но отличается терминологией: вместо пользователей, групп и ролей используются «участники» (members), «роли» (roles) и «политики» (policies). Google Cloud IAM поддерживает наследование разрешений на уровне проекта, организации и папки, что упрощает управление в крупных средах.
Интересные факты
- IAM является одним из самых старых и наиболее используемых сервисов AWS. По состоянию на 2024 год, более 90% аккаунтов AWS используют IAM для управления доступом.
- В 2019 году AWS представила IAM Access Analyzer, который использует машинное обучение для анализа политик и выявления потенциальных угроз, таких как публичный доступ к корзинам S3.
- IAM поддерживает более 2000 различных действий для сервисов AWS, что делает его одним из самых детализированных сервисов управления доступом в облаке.
- В 2020 году была обнаружена уязвимость, позволяющая злоумышленникам обходить политики IAM с помощью специально сформированных запросов. AWS оперативно выпустила исправление.
Источники
- AWS Documentation: «What is IAM?» (Amazon Web Services, 2024)
- «AWS IAM: A Comprehensive Guide» (AWS Whitepapers, 2023)
- «Cloud Security: IAM Best Practices» (Amazon Web Services, 2022)
- «AWS IAM Access Analyzer: User Guide» (AWS Documentation, 2024)
- «Azure vs. AWS: IAM Comparison» (Microsoft Azure Documentation, 2023)
- «Google Cloud IAM vs. AWS IAM» (Google Cloud Documentation, 2024)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →