Копировать / экспортировать группу безопасности AWS в несколько учетных записей AWS
У меня есть среда AWS с несколькими учетными записями (настроенная с помощью зоны приземления AWS), и мне нужно скопировать определенную группу безопасности для всех учетных записей. У меня есть написано CFT, но это слишком много повторяющихся задач, чтобы сделать это один за другим.
Группа безопасности находится в центральной учетной записи (shared-services), которая имеет доступ ко всем другим учетным записям. Лучше, если есть способ интегрировать это в торговый автомат учетных записей (AVM), чтобы избежать будущих задач экспорта SG во вновь созданные учетные записи.
5 ответов
Вы должны использовать CloudFormation Stacksets. StackSets - это функция облачной информации, в которой у вас есть основная учетная запись, в которой вы создаете / обновляете / удаляете набор стеков, и у вас есть дочерние учетные записи. В стеке вы настраиваете свои дочерние учетные записи aws, для которых вы хотите развернуть шаблон CF и регион.
Исходя из вашего комментария, вашей основной учетной записью будут общие службы, а остальные учетные записи - детские. Вам потребуется развернуть пару ролей IAM, чтобы разрешить доступ между учетными записями, но после этого вы сможете автоматически развертывать все свои шаблоны в учетных записях до 500 aws и обновлять их.
Более подробная информация здесь: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html
Вы можете экспортировать группу безопасности и другие конфигурации с CloudFormation с помощью CloudFormer, который создает шаблон из существующей конфигурации учетной записи. Проверьте действия, описанные в этом руководстве, https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-cloudformer.html Он загрузит шаблон на S3, и вы сможете повторно использовать его или некоторые его части.
Чтобы скопировать AWS Security Gp из одной учетной записи любого региона в другую учетную запись AWS в любой регион, требуется много скриптов (кодирования) в aws cli или boto3. Но одна вещь, которую я сделал, что выполнимо для моего варианта использования (белый список 14 IP-адресов для HTTPS), - это написать сценарий bash.Здесь я создаю пустой SG для другой учетной записи AWS (или вы можете использовать aws cli для его создания),
Region1=
SGFromCopy=
profilefromcopy=
Region2=
SGToCopy=
profiletocopy=
for IP in $(aws ec2 describe-security-groups --region $Region1 --group-id=$SGFromCopy --profile $profilefromcopy --query SecurityGroups[].IpPermissions[].IpRanges[].CidrIp --output text) ;
do
aws ec2 authorize-security-group-ingress --group-id=$SGToCopy --ip-permissions IpProtocol=TCP,FromPort=443,ToPort=443,IpRanges=[{CidrIp=$IP}] --profile $profiletocopy --region $Region2;
done ;
`
U может изменить скрипт, если у вас есть CSV, сформированный из SG, а затем вы просто выполнили итерацию в цикле while
БОНУС
Чтобы получить желаемый результат, вы должны изменить вывод в файле или где-то еще
> aws ec2 describe-security-groups --region $ Region1 --group-id $ SGFromCopy --profile $profilefromcopy --query SecurityGroups[].IpPermissions[] - вывод текста
Я смог сделать это через торговый автомат. Но AGL's Stacksets тоже должна быть хорошей альтернативой.
Поскольку вы используете AWS Landing Zone, вы можете добавить группу безопасности в aws_baseline
шаблоны, либо в качестве нового шаблона, либо добавленные в один из существующих файлов. После отправки AWS Landing Zone использует пошаговые функции и наборы стеков AWS для развертывания SG на всех существующих и будущих учетных записях. Если вы решите создать группу безопасности в новом файле, вы должны добавить ссылку на нее в manifest.yaml
файл (сравните с тем, как ссылаются другие шаблоны).