#amazon-web-services #boto #amazon-vpc
#amazon-веб-сервисы #boto #amazon-vpc
Вопрос:
В настоящее время я автоматизирую сборку AWS VPC, но хочу удалить правила по умолчанию, добавленные в группу безопасности, созданную с помощью VPC. Я могу просматривать правила группы безопасности следующим образом:
for security_group in vpc_connection.get_all_security_groups():
for rule in vpc_security_group.rules:
print dir(rule)
Я был бы признателен, если бы кто-нибудь мог рассказать мне или привести пример того, как удалить правила по умолчанию из VPC.
Из документации API я вижу, что существует несколько методов, таких как:
boto.ec2.connection.revoke_security_group()
Однако мне не ясно, что нужно передавать в качестве аргументов, если это действительно правильный метод.
Большое спасибо
H
Комментарии:
1. Обратите внимание, что в настоящее время разрабатывается более новая версия boto ( github.com/boto/boto3 ).
Ответ №1:
Я понял это в конце:
for rule in vpc_security_group.rules:
for grant in rule.grants:
ec2_connection.revoke_security_group(group_id=vpc_security_group.id, ip_protocol=rule.ip_protocol, from_port=rule.from_port, to_port=rule.to_port, src_security_group_group_id=grant.group_id, cidr_ip=grant.cidr_ip)
for rule in vpc_security_group.rules_egress:
for grant in rule.grants:
ec2_connection.revoke_security_group_egress(vpc_security_group.id, rule.ip_protocol, rule.from_port, rule.to_port, grant.group_id, grant.cidr_ip)
Комментарии:
1. Действительно ли это сработало? Я обнаружил, что этот подход удаляет не все элементы. Мне повезло больше с копированием списков. т. е. для правила в списке (vpc_security_group.rules): для предоставления в списке (rule.grants): — но это все еще не улавливает все разрешения…
2. Для меня это удаляет начальные правила для группы безопасности VPC. Я не проверял, удаляет ли это все правила, если впоследствии будут добавлены другие, — это все, что я могу сказать на данный момент.
3. При ближайшем рассмотрении я понял, что в вашем коде проблемы нет. Я использовал vpc_security_gropu.revoke — в котором есть ошибка. Он пытается обновить локальный список правил внутри security_group. Каким-то образом это запутывается при циклическом просмотре грантов.
4. Спасибо, у меня это сработало, к сожалению, в документации boto (хотя и фантастической) отсутствуют некоторые ключевые фрагменты и примеры..
Ответ №2:
Я использовал часть вашей логики выше, чтобы создать пару скриптов на python, которые удалят группу безопасности, будь то в ec2-classic или VPC (при условии, что только правила входа). Существует пара особых случаев, например, ссылка на ваш SG, подлежащий удалению, содержится в правиле входа в другой SG. Другим особым случаем является ссылка на SG AWS по умолчанию для ELB в EC2-classic. Оба варианта обрабатываются корректно, и сценарии можно найти здесь: https://gist.github.com/arpcefxl/2acd7d873b95dbebcd42