AWS IAM простыми словами: пользователи, группы, роли и политики
Основы4 минРедакция Innovialabs
Коротко
IAM решает, кто и что может делать в вашем AWS-аккаунте: пользователи, группы и роли получают права через JSON-политики, всё неразрешённое запрещено, а root-аккаунт закрывают MFA и не используют в повседневной работе.
Что делает IAM
IAM (Identity and Access Management) — сервис AWS, который для каждого запроса отвечает на один вопрос: может ли эта учётная запись выполнить это действие над этим ресурсом? Это касается людей в консоли, скриптов через CLI и приложений, которые обращаются к API AWS.
Ответ по умолчанию — нет. Ничего не разрешено, пока политика явно это не разрешит.
Четыре строительных блока
| Блок | Что это | Где используют |
|---|---|---|
| User (пользователь) | Постоянная учётная запись с паролем и/или ключами доступа | Человек или, в старых схемах, скрипт |
| Group (группа) | Набор пользователей; политики группы действуют на всех участников | «Developers», «ReadOnly», «Admins» |
| Role (роль) | Учётная запись без постоянных ключей: её принимают и получают временные учётные данные | Серверы, Lambda, CI/CD, доступ между аккаунтами |
| Policy (политика) | JSON-документ со списком разрешённых или запрещённых действий | Прикрепляется к пользователям, группам или ролям |
Привязывайте политики к группам и ролям, а не к отдельным пользователям. Тогда новый сотрудник просто добавляется в группу, а уходящий — удаляется из неё.
Как читать JSON-политику
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::my-app-uploads/*"
}
]
}
Читайте её как предложение:
- Effect —
Allow(разрешить) илиDeny(запретить). - Action — какие операции API, в формате
сервис:Операция. Маскаs3:*разрешает все операции S3, а это редко то, что нужно. - Resource — над какими объектами, по ARN. Здесь — любой файл в бакете
my-app-uploads, и больше ничего. - Condition (необязательно) — дополнительные условия, например определённый IP или вход с MFA.
Version — это версия языка политик, а не дата, которую нужно менять.
Логика проверки коротко: явный Deny всегда побеждает, затем явный Allow разрешает запрос, а всё неупомянутое запрещено.
Уберите root-аккаунт подальше
Root — это email, на который создан аккаунт. Он может всё, включая закрытие аккаунта и изменение биллинга, и его права нельзя ограничить политиками IAM.
Что сделать сразу после создания аккаунта:
- Включить MFA для root (аппаратный ключ или приложение-аутентификатор).
- Убедиться, что у root нет ключей доступа, и удалить их, если есть.
- Поставить сложный уникальный пароль и почту, которую контролирует компания, а не личную.
- Создать отдельную учётную запись администратора для работы и больше не входить под root.
Root нужен только для редких задач, например некоторых настроек биллинга и аккаунта.
Роли вместо ключей доступа
Access keys — постоянная пара ключей. Если они утекли через репозиторий, лог или ноутбук, они работают, пока кто-то не заметит и не удалит их.
Роли выдают временные учётные данные, которые истекают сами. Используйте их везде, где можно:
- EC2 и контейнеры — прикрепите роль к инстансу или задаче, SDK сам получит учётные данные, без ключей в конфигах.
- Lambda — каждая функция работает с execution role.
- CI/CD — GitHub Actions и похожие системы принимают роль через OIDC без хранения ключей в секретах.
- Люди — для входа сотрудников AWS рекомендует IAM Identity Center, который тоже выдаёт временные учётные данные.
Ключи доступа оставляйте только там, где по-другому нельзя, и регулярно меняйте их.
Минимальные права для небольшой команды
Принцип наименьших привилегий (least privilege) — каждой учётной записи только те права, которые ей действительно нужны.
- Группа Admins — один-два человека, MFA обязательна.
- Группа Developers — доступ к сервисам проекта, в идеале только к ресурсам разработки.
- Группа ReadOnly — для менеджеров, аудиторов и поддержки.
- Отдельная роль на каждое приложение — права только на его бакет, очередь или базу.
- Отдельная роль для деплоя — её принимает CI/CD.
Если нужно стартовать быстро, начните с управляемых политик AWS, а затем сужайте их. IAM Access Analyzer умеет предложить политику на основе того, что учётная запись реально использовала.
Частые ошибки
- Ежедневная работа под root или
AdministratorAccessу всех. - Ключи доступа в Git или в
.envна ноутбуке. "Action": "*"и"Resource": "*"в политиках приложений.- Общий пользователь на нескольких человек — непонятно, кто что сделал.
- Забытые учётные записи ушедших сотрудников.