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


46

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

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


Ответ неверен в этом вопросе @MichaelHampton, хотя он помечен как таковой.
Конр

@konr Если вы считаете, что вопрос нуждается в лучших ответах, вы можете начать щедрость .
Майкл Хэмптон

Ответы:


58

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

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


10

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

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

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

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

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


8

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

$ aws ec2 describe-instances --output text

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

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


2
aws ec2 describe-instances --output text | grep sg-
cdmckay

Поскольку группа безопасности может ссылаться на другие группы безопасности, может быть, вам нужно запустить эту функцию рекурсивно?
Брендан

1
Это тихо неполно. Группы безопасности могут использоваться во многих местах, кроме экземпляров EC2 - ELB, VPC, другие группы безопасности (как уже упоминалось @brendan) и т. Д.
Амос Шапира,

@AmosShapira ОП спрашивал конкретно о EC2. Если хотите, вы всегда можете отредактировать мой ответ, чтобы улучшить его.
EEAA

@AmosShapira Это решило проблему, с которой столкнулся ОП. Ответы SF не обязательно должны быть исчерпывающим ответом на все возможные ситуации.
EEAA

7

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

Вам нужно будет:

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

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


4

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

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

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

2

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

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

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


1

Возможно, это было недоступно при первоначальном задании вопроса, но если вы войдете в Консоль AWS для групп безопасности, выберите соответствующие группы и выберите действие «Удалить», в появившемся запросе будет указано, на что на него ссылаются и каким образом. ,


1

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

https://github.com/mingbowan/sgdeps


0

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


Я предполагаю, что первоначальный вопрос был о том, что ссылается на какую-то группу безопасности. Существуют ли вещи, которые не являются сетевыми интерфейсами, которые ссылаются на группы безопасности (и их входные порты)? Если нет, то список сетевых интерфейсов - хороший ответ, нет?
user14645

Хотя в вашей точке зрения есть ценность, ссылка на группу безопасности не является нарушением зависимости. Можно удалить группу безопасности, которая не присоединена к какому-либо ENI, но на которую ссылается другая группа безопасности. После удаления вы получите уведомление «У вас новые устаревшие правила группы безопасности» в консоли, чтобы указать, что в правиле есть старая ссылка на несуществующую группу безопасности. Затем вы получите гиперссылку «Просмотреть устаревшие правила», чтобы исправить ситуацию после этого.
Денис Штребель
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.