Python Boto AWS удаляет правила группы безопасности VPC

#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