Информационная безопасность
IAM и управление доступом
Capital One 2019. Один запрос к http://169.254.169.254/latest/meta-data/iam/security-credentials/. Credentials WAF EC2 инстанса. IAM role имела GetObject на все S3 buckets. Атакующий скачал 30 000 файлов. 106 миллионов записей. Штраф 80 млн долларов. Исправление заняло бы 5 минут: ограничить IAM policy одним конкретным bucket. PoLP - это контроль blast radius при компрометации.
- Capital One 2019: overly permissive IAM role + SSRF = 106M records. IAM policy исправлена за 5 минут, не сделали заранее
- Tesla 2018: K8s dashboard без пароля -> pod с AWS credentials в env -> crypto mining на EC2
- Uber 2022: AWS credentials в GitHub -> S3, RDS -> 57M records. Правило: только IRSA, никаких static keys
IAM Policies: язык политик доступа
2019 год. Capital One. IAM роль WAF сервиса имела s3:GetObject на все S3 buckets вместо одного конкретного. Через SSRF атакующий получил credentials и прочитал 30 000 файлов. 106 миллионов клиентских записей. Причина: overly permissive IAM policy. IAM policy - контракт безопасности, не деталь реализации.
Wildcard * в Action или Resource - красный флаг. s3:* + * = полный доступ к S3. AWS Access Analyzer автоматически находит overly permissive policies.
Lambda обрабатывает заказы и пишет в DynamoDB таблицу orders. Минимально необходимая IAM policy?
Least Privilege: минимально необходимые права
Принцип наименьших привилегий (PoLP): каждый субъект имеет только права необходимые для функции. Избыточные права не используются в нормальной работе - но используются при компрометации.
AWS SCP (Service Control Policies) - guardrails на уровне Organization. Применяются ко всем аккаунтам, не могут быть override даже root: запрет отключения CloudTrail, ограничение регионов.
Разработчик хочет дать CI/CD pipeline права для деплоя Lambda. Какой подход правильный?
Service Accounts: идентичности для машин
Сервисы нуждаются в идентичности так же как люди. Service Account - IAM идентичность для машины: Lambda, EC2, K8s Pod, CI/CD pipeline. Не человек - другой lifecycle. Те же принципы: least privilege, audit, no shared accounts.
Shared service accounts - антипаттерн. Если 10 сервисов используют один account: audit trail неразличим, нельзя отозвать доступ одному. Один сервис = один service account.
K8s Pod нужен доступ к AWS S3. Как правильно передать credentials?
Identity Federation: единая идентичность
Организация: AD с 1000 пользователями, AWS, GCP, Salesforce, GitHub. Без federation: 5000 аккаунтов для управления. Identity Federation - корпоративный IdP как единый источник истины. SSO: один вход, доступ везде.
JIT Provisioning: пользователь не существует в target system до первого логина. При логине IdP создаёт аккаунт с нужными правами. Deprovision: отключить в IdP -> доступ везде прекращён немедленно.
IAM - это только пользователи и пароли в cloud консоли
IAM охватывает: human identities, service accounts, federation с IdP, cross-account access, temporary credentials. Federation - enterprise стандарт, не локальные аккаунты.
Локальные IAM пользователи не масштабируются: нет centralized deprovisioning, static credentials. Federation решает lifecycle управление и audit trail с корпоративной идентичностью.
Сотрудник уволен. AD аккаунт заблокирован. Okta federated с AD. Что произойдёт с доступом в AWS?
Итоги
- IAM Policies: JSON с Effect/Action/Resource/Condition. Wildcard * - красный флаг. SCP - guardrails на уровне Organization
- Least Privilege: только необходимые actions на конкретные ресурсы. Access Analyzer находит неиспользуемые за 90 дней
- Service Accounts: один сервис = один account. IRSA/Workload Identity: временные credentials без static keys
- Federation: корпоративный IdP -> SSO везде. Увольнение в AD = мгновенный revoke. JIT provisioning
Связанные темы
IAM - фундамент cloud security:
- Аутентификация и авторизация — IAM реализует RBAC/ABAC в cloud масштабе
- Безопасность AWS/GCP/Azure — IAM политики управляют каждым cloud ресурсом
- Безопасность контейнеров — K8s RBAC + IRSA: federation между K8s и cloud IAM
Вопросы для размышления
- Есть ли IAM пользователи с AdministratorAccess? Обоснованы ли они?
- Используются ли static AWS credentials в CI/CD или .env файлах?
- Как обрабатывается offboarding? Теряет ли уволенный доступ в тот же день?
Связанные уроки
- sec-03 — RBAC/ABAC - основа IAM моделей
- sec-27 — AWS/GCP/Azure security использует IAM как фундамент
- sec-18 — K8s ServiceAccount + IRSA -> AWS IAM
- net-68-auth-network