Назад | Перейти на главную страницу

Как определить зависимости групп безопасности AWS?

Amazon EC2 не позволяет мне удалить группу безопасности, жалуясь, что у группы все еще есть зависимости. Как я могу узнать, что это за зависимости?

aws ec2 description-security-groups не говорит.

Вставьте идентификатор группы безопасности в раздел «Сетевые интерфейсы» EC2. Это найдет применение в EC2, EB, RDS, ELB.

CLI: aws ec2 describe-network-interfaces --filters Name=group-id,Values=sg-123abc45

Лучший способ сделать это в консоли AWS EC2 - вставить имя группы безопасности в поле поиска в разделе EC2-> Instances.

Затем будут заполнены все экземпляры, связанные с вставленной группой безопасности - это будут объекты ec2 (зависимости).

Вы также можете выполнить этот поиск в разделе ELB и других предложениях AWS, которые используют группы безопасности.

Если вы пытаетесь удалить группу безопасности, вам нужно будет либо «изменить группу безопасности» для каждого экземпляра (если они находятся в VPC), либо создать AMI и перезапустить с использованием другой группы безопасности, а затем удалить старый экземпляр (если с использованием классической версии EC2)

Надеюсь, это поможет-

Вам нужно смотреть на объекты вашего экземпляра EC2, а не на сами группы:

$ aws ec2 describe-instances --output text

Затем либо найдите «sg- *», либо используйте стандартные инструменты обработки текстового потока unix, чтобы извлечь нужные данные.

В качестве альтернативы, если у вас небольшое количество экземпляров, используйте --output table для красиво оформленного списка.

Вы можете запросить aws cli, чтобы получить нужные данные.

Вам необходимо:

  • Перечислите все группы безопасности, ищущие ссылки на рассматриваемую группу
  • Перечислите все EC2 и их группы
  • Список всех ELB и их групп
  • Список всех RDS и их групп

Вы также можете использовать библиотеки, такие как boto https://code.google.com/p/boto/ вместо raw aws cli.

Лямбда-функции также могут иметь группы безопасности. На момент написания Amazon не предотвращает удаление групп безопасности, используемых функциями Lambda.

Я использовал это:

aws lambda list-functions | jq -c '.Functions[] | {FunctionArn, SecurityGroups: (.VpcConfig.SecurityGroupIds[]? // null) }'

Другая проблема - это группы безопасности, которые зависят от других групп безопасности. Можно использовать эту команду для генерации Список смежности (прямые зависимости):

aws ec2 describe-security-groups --query "SecurityGroups[*].{ID:GroupId,Name:GroupName,dependentOnSGs:IpPermissions[].UserIdGroupPairs[].GroupId}

В идеале этот результат следует использовать для поиска Переходное закрытие (все зависимости, прямые и косвенные). К сожалению, мне не удалось найти утилиту Transitive closure util.

Вы можете использовать этот инструмент Python для составления списка групп безопасности с их зависимостями. Он также позволяет отображать неиспользуемые (устаревшие) группы безопасности:

https://github.com/mingbowan/sgdeps

Это могло быть недоступно, когда вопрос был первоначально задан, но если вы войдете в Консоль AWS для групп безопасности, выберите нужную группу (группы) и выберите действие Удалить, в появившемся запросе будет указано, есть ли на нее ссылка и по какому .

Отмеченный ответ неверен. Если вы видите нарушение зависимости, вероятно, в вашей конфигурации разрешений IP (Ingress) указана другая группа безопасности. Вам нужно будет отозвать все входящие разрешения, которые содержат группы безопасности в качестве источника.