Трехуровневое приложение: веб, приложение, БД. БД должна быть недоступна из интернета ни при каких обстоятельствах.
→Публичные подсети для веб-уровня (ALB). Приватные подсети для уровня приложений и уровня БД. Группа безопасности БД разрешает трафик только из группы безопасности уровня приложений (не из диапазонов CIDR).
Почему: Таблицы маршрутизации подсетей обеспечивают достижимость; ссылки между группами безопасности кодируют принцип наименьших привилегий на уровне SG и сохраняются при изменении IP-адресов.
Источник↗
Экземпляру EC2 требуется доступ к S3. Избегайте встроенных учетных данных.
→Роль IAM, прикрепленная через профиль экземпляра. SDK извлекает временные учетные данные из IMDSv2.
Почему: Долгоживущие ключи доступа на экземплярах являются главной причиной утечки учетных данных. Роли автоматически ротируются, никогда не сохраняются.
Источник↗
Блокировать атаки SSRF, пытающиеся читать метаданные экземпляра EC2.
→Обеспечить IMDSv2 (`HttpTokens=required`) при запуске экземпляра. Отклонять неаутентифицированные запросы IMDSv1.
Почему: IMDSv2 требует токен сессии через PUT перед ответом конечной точки метаданных; атаки SSRF, выполняющие только GET-запросы, блокируются.
Источник↗
Сервис A в аккаунте A вызывает Lambda в аккаунте B. Наименьшие привилегии.
→Политика на основе ресурсов в целевой Lambda, предоставляющая `lambda:InvokeFunction` роли-сущности аккаунта A. Вызывающий принимает на себя свою собственную роль и вызывает напрямую — не требуется цепочка ролей.
Почему: Политики ресурсов — это самый простой шаблон меж-аккаунтного взаимодействия для ресурсов, ориентированных на сервисы (Lambda, S3, SNS, SQS, KMS).
Источник↗
Другие аккаунты AWS должны загружать данные в центральный S3-бакет.
→Политика бакета, предоставляющая `s3:PutObject` внешним аккаунтным сущностям. Добавить требование ACL `bucket-owner-full-control`, чтобы владелец бакета сохранял контроль над объектами.
Почему: Без `bucket-owner-full-control` (или `BucketOwnerEnforced` Object Ownership) загруженные объекты принадлежат аккаунту-загрузчику.
Источник↗
Предотвратить публичный доступ к любому S3-бакету в организации.
→Включить S3 Block Public Access на уровне аккаунта (и для всей организации через SCP). Это переопределяет ACL и политики на уровне бакета.
Почему: Настройка на уровне аккаунта имеет приоритет над настройками для отдельных бакетов — защита от случайной неправильной конфигурации.
Источник↗
Разработчики должны самостоятельно создавать роли IAM, но не могут предоставлять разрешения, выходящие за рамки определенного максимального набора.
→Границы разрешений (Permission boundaries) для сущности разработчика. Эффективные разрешения = политика идентификации ∩ граница.
Почему: SCP применяются на уровне аккаунта/OU; границы определяют область действия для отдельных сущностей. Используйте границы для делегированных административных шаблонов.
Источник↗
Ограничить OU определенными регионами для соответствия требованиям к резидентности данных.
→Политика управления сервисами (SCP) в Organizations, запрещающая любое действие, если `aws:RequestedRegion` отсутствует в разрешенном списке.
Почему: SCP — это единственный механизм, который может запрещать действия, разрешенные самим аккаунтом. IAM не может запретить то, что может предоставить root-аккаунт.
Источник↗
Единый вход для сотрудников в нескольких аккаунтах AWS; интеграция с корпоративным IdP.
→AWS IAM Identity Center (ранее AWS SSO) с федерацией SAML/OIDC к корпоративному IdP. Наборы разрешений сопоставляются с ролями в членских аккаунтах.
Почему: Identity Center — это каноническое решение для многоаккаунтной идентификации сотрудников. Cognito предназначен для конечных пользователей приложений, а не для сотрудников.
Источник↗
Выбрать Cognito User Pool или Identity Pool.
→User Pool = регистрация / вход / выдача JWT для пользователей приложения. Identity Pool = обмен токенов на временные учетные данные AWS. Большинство приложений используют оба: User Pool аутентифицирует, Identity Pool авторизует доступ к AWS.
Источник↗
Добавить настраиваемый шаг проверки в процесс входа Cognito (например, домен электронной почты из белого списка).
→Триггеры Lambda: Pre Sign-up, Pre Authentication, Define/Create/Verify Auth Challenge. Проверить или отклонить в Lambda.
Источник↗
Требуется полный контроль над ротацией ключей, удалением и журналом аудита для каждого ключа.
→Ключ KMS, управляемый клиентом (CMK). Ключи, управляемые AWS (`aws/<service>`), проще, но не предлагают контроля над политиками ключей или видимости использования отдельных ключей.
Почему: CMK позволяют ограничивать доступ к каждому ключу в CloudTrail, устанавливать политики ключей для использования между аккаунтами, а также отключать/планировать удаление.
Источник↗
Аккаунту B нужно расшифровать объекты S3, зашифрованные с помощью CMK аккаунта A.
→Политика ключа на CMK предоставляет `kms:Decrypt` сущностям аккаунта B. IAM аккаунта B также требуется `kms:Decrypt` для ARN ключа. Требуются обе части.
Почему: KMS cross-account требует явного разрешения как в политике ключа, так и в IAM-идентификаторе вызывающего (в отличие от большинства политик ресурсов).
Источник↗
Зашифровать данные в `us-east-1`; расшифровать в `us-west-2` после репликации, без повторного шифрования.
→Мультирегиональный ключ KMS. Основной в одном регионе, реплика в другом, оба с одним и тем же ключевым материалом и ID.
Почему: Избегает сложной процедуры перешифрования шифротекста для межрегионального аварийного переключения или DR.
Источник↗
Шифровать большие объекты без чрезмерных затрат на вызовы API KMS для каждого объекта.
→Конвертное шифрование. KMS генерирует ключ данных (один вызов API); использовать ключ данных для локального шифрования полезной нагрузки; хранить зашифрованный ключ данных вместе с шифротекстом.
Почему: KMS имеет ограничения по скорости и тарифицируется за запрос. Шаблон конвертного шифрования — это канонический способ шифрования данных размером > нескольких КБ.
Источник↗
Выбрать Secrets Manager или SSM Parameter Store SecureString.
→Учетные данные БД с автоматической ротацией, совместное использование между аккаунтами, большие секреты → Secrets Manager. Флаги конфигурации, настройки приложений, простые секреты, минимальная стоимость → SSM Parameter Store.
Почему: Secrets Manager имеет встроенные Lambda для ротации RDS/Aurora/DocumentDB/Redshift; Parameter Store не имеет нативной ротации, но бесплатен для уровня Standard.
Источник↗
Автоматически ротировать пароль RDS каждые 30 дней.
→Secrets Manager с управляемой ротацией. Встроенный шаблон Lambda обрабатывает ротацию одного пользователя против конечной точки RDS. Приложения получают секрет во время подключения (кешируется) — без повторного развертывания приложения.
Источник↗
Смягчить атаку HTTP-флуда Layer 7 без блокировки легитимных всплесков.
→Правило AWS WAF на основе скорости (например, 2000 запросов / 5 мин на IP) на ALB или CloudFront. Объединить с управляемыми группами правил для известных плохих IP.
Почему: Правила скорости WAF отслеживают по исходному IP; автоматически блокируют при превышении порога; снимают блокировку после окончания окна.
Источник↗
Критически важное приложение нуждается в защите от DDoS-атак и круглосуточной поддержке SRT.
→AWS Shield Advanced на CloudFront / ALB / NLB / Global Accelerator. Включает защиту от затрат (возмещение расходов на масштабирование во время атаки) + доступ к команде Shield Response Team.
Почему: Shield Standard автоматический и бесплатный; Advanced добавляет защиту и SLA. CloudFront всегда рекомендуется в качестве основного входного шлюза.
Источник↗
Выбрать группу безопасности (security group) или NACL.
→Stateful, прикрепляется к ENI, только разрешение → группа безопасности (по умолчанию). Stateless, на уровне подсети, разрешение + явный запрет → NACL. Используйте NACL для общих правил запрета (блокировка диапазонов IP); SG для всего остального.
Почему: NACLs оценивают входящий и исходящий трафик отдельно. SG автоматически разрешают обратный трафик.
Источник↗
EC2 в приватной подсети должен достигать S3/DynamoDB без затрат на NAT-исходящий трафик.
→VPC Gateway Endpoint для S3 и DynamoDB. Бесплатно, запись в таблице маршрутизации, без NAT.
Почему: Gateway Endpoints предназначены только для S3/DynamoDB. Экономит плату за обработку данных NAT и сохраняет трафик в магистрали AWS.
Источник↗
Приватная подсеть должна приватно достигать API сервисов AWS (KMS, Secrets Manager, ECR и т. д.).
→VPC Interface Endpoint (PrivateLink) для каждого сервиса. ENI в вашем VPC, оплачивается за час + за ГБ.
Почему: Interface Endpoints работают практически для каждого сервиса AWS. Используйте для устранения исходящего трафика NAT для вызовов сервисов.
Источник↗
SaaS-провайдер предоставляет свой сервис внутри VPC аккаунтам клиентов приватно, без VPC-пиринга и без поддержания маршрутизации клиентов.
→Сервис конечных точек AWS PrivateLink, поддерживаемый NLB. Клиенты создают Interface Endpoints для потребления.
Почему: Нет проблем с пересечением CIDR, нет пирингового мешинга, односторонняя экспозиция (провайдер не видит трафик клиентов).
Источник↗
Соединить 30+ VPC между аккаунтами и локальными средами в топологии "звезда".
→AWS Transit Gateway. Одно присоединение на VPC; таблицы маршрутизации сегментируют трафик.
Почему: Полностью связанный пиринг требует N×(N-1)/2 подключений. TGW масштабируется линейно и поддерживает меж-аккаунтное взаимодействие через RAM.
Источник↗
Гибридное подключение, требующее предсказуемой пропускной способности, низкой задержки и шифрования.
→Direct Connect с Site-to-Site VPN поверх DX (MACsec или IPsec). Сам по себе DX нешифрован; VPN поверх DX приватен + зашифрован + имеет низкий джиттер.
Почему: Обычный VPN через интернет дешев, но имеет переменную задержку. Один DX быстр, но передает данные в открытом виде на канальном уровне.
Источник↗
Непрерывное обнаружение угроз по VPC Flow Logs, DNS, CloudTrail, аудиту EKS, событиям данных S3.
→Amazon GuardDuty. Для всей организации через делегированного администратора Organizations.
Почему: Управляемое обнаружение угроз. Обнаружения передаются в Security Hub или EventBridge для автоматизации реагирования.
Источник↗
Обнаружение и классификация PII / PHI в S3-бакетах.
→Amazon Macie. Обнаружение конфиденциальных данных на основе ML, с областью действия S3, интегрируется с Security Hub.
Источник↗
Непрерывное сканирование CVE для EC2, образов ECR, функций Lambda.
→Amazon Inspector v2. Автоматически обнаруживает ресурсы через Systems Manager Agent, сканирует на предмет опубликованных CVE.
Источник↗
Агрегировать обнаружения из GuardDuty, Inspector, Macie, IAM Access Analyzer в одну панель управления.
→AWS Security Hub. CSPM с AWS Foundational Security Best Practices и стандартами CIS.
Источник↗
Обеспечить шифрование всех томов EBS; автоматически исправлять несоответствующие ресурсы.
→Правила AWS Config (управляемые `encrypted-volumes`) + runbook Systems Manager Automation для исправления, запускаемые через действие исправления Config.
Источник↗
Единый, защищенный от подделок журнал аудита для всех аккаунтов в организации.
→Организационный журнал (Organization trail) с включенной проверкой файлов журналов, записываемый в центральный S3-бакет с политикой бакета, запрещающей удаление.
Почему: Организационные журналы автоматически включаются во всех членских аккаунтах (текущих и будущих). Хеши проверки доказывают, что журналы не были изменены.
Источник↗
Нескольким отделам требуется ограниченный доступ к различным префиксам в общем S3-бакете.
→Точки доступа S3 (S3 Access Points) — по одной на отдел, каждая со своей собственной политикой доступа и (опционально) ограничением VPC.
Почему: Чище, чем разветвленная политика бакета; точки доступа имеют свои собственные ARN и имена DNS.
Источник↗
Рабочая нагрузка PCI DSS — строгая изоляция от аккаунтов, не относящихся к PCI.
→Выделенный аккаунт AWS внутри OU в Organizations с SCP, ограничивающими доступ к сервисам/регионам. Отдельные VPC, ключи KMS, роли IAM. Network Firewall или GWLB для проверки исходящего трафика.
Почему: Граница аккаунта — это сильнейшая изоляция зоны поражения в AWS.
Источник↗
Публичный TLS-сертификат для `*.example.com` на ALB и CloudFront. Автоматическое продление.
→Публичный сертификат AWS Certificate Manager (ACM) с DNS-валидацией в Route 53. Автоматически продлевается за 60 дней до истечения срока действия.
Почему: Бесплатно для использования с интегрированными сервисами AWS. Проверка по электронной почте работает, но для автоматизации предпочтительна проверка DNS.
Источник↗