
У нас есть несколько крупных аккаунтов AWS, и мне было поручено внедрить рекомендации по мониторингу ресурсов и обеспечить настройку мониторинга для всех существующих и будущих ресурсов.
Есть ли способ предотвратить создание/изменение ресурсов путем вызова правил на основе параметров ресурсов и/или пользовательских условий? Например, не разрешайте создание экземпляра RDS, если для него не включен расширенный мониторинг, или не разрешайте создание любого экземпляра EC2 без определенных оповещений CloudWatch.
Я посмотрел на Policies / Guardrails, но мне кажется, что это недостаточно надежно. Что другие люди используют в этом сценарии?
РЕДАКТИРОВАТЬЯ рассматривал AWS Config как потенциальное решение, но, похоже, там есть много ограничений. Например, у меня есть возможность проводить аудит кластеров RDS, чтобы увидеть, созданы ли у них оповещения для определенных метрик, но я не могу сделать то же самое для экземпляров RDS.
решение1
Предотвращение создания ресурсов с помощью SCP
В некоторых случаях для этого типа требований можно использовать политики управления службами, но только в отношении свойств создаваемого ресурса. Насколько мне известно, утверждение «вы не можете создать экземпляр EC2, если не создан сигнал тревоги CloudWatch» не сработает.
На сайте AWS есть несколько примеров политик управления службами.эта страница, я скопирую один ниже. Я использовал эту технику, чтобы сделать что-то вроде предотвращения создания экземпляра EC2, если он не зашифрован, если том EBS не зашифрован, и предотвращения создания RDS, если хранилище не зашифровано.
Пример SCP от Amazon: с этим SCP любые запуски экземпляров, не использующие тип экземпляра t2.micro, отклоняются.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RequireMicroInstanceType",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringNotEquals":{
"ec2:InstanceType":"t2.micro"
}
}
}
]
}
Автоматическое исправление
Вы можете рассмотреть автоматическое исправление после создания ресурсов. Что-то вроде AWS Config может получать уведомления каждый раз при создании ресурса, запускать скрипт Lambda, который затем позволяет запускать пользовательский код для определения состояния и настройки связанных ресурсов. Опять же, это настраиваемо, но мы делали это в прошлом. Например, когда создается контейнер S3, мы включаем ведение журнала и управление версиями, если только не указан определенный тег.
Аналогичным образом вы можете удалить несоответствующие требованиям ресурсы, а не выполнять автоматическое исправление.
Предотвращение создания ресурсов с помощью разрешений IAM
Вместо удаления несоответствующих ресурсов вы могли бы рассмотреть возможность сокращения разрешений для пользователей, чтобы они не могли напрямую создавать ресурсы, и внедрения некой системы самообслуживания, которая настраивает для них ресурсы, со всеми требуемыми связанными ресурсами. Я сам этого не делал, поэтому не могу сказать, как именно это сделать.
Это может быть так же просто, как разрешить запуск предоставленных вами шаблонов CloudFormation под служебной ролью, но не предоставлять пользователям разрешения на непосредственное создание ресурсов.