Копировать / экспортировать группу безопасности 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 файл (сравните с тем, как ссылаются другие шаблоны).

Другие вопросы по тегам