Як визначити залежності групи безпеки AWS?


46

Amazon EC2 не дозволить мені видалити групу безпеки, поскаржившись, що група все ще має залежності. Як я можу знайти, які ці залежності?

aws ec2 опису-групи безпеки не говорить.


У цьому запитанні @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)

Сподіваюся, що це допомагає-


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. Якщо ви хочете, ви завжди можете редагувати мою відповідь, щоб покращити її.
ЄЕАА

@AmosShapira Це вирішило проблему, з якою виникала ОП. Відповіді СФ не повинні бути вичерпною відповіддю на кожну можливу ситуацію.
ЄЕАА

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

Інша проблема - SecurityGroups, які залежать від інших SecurityGroups. Можна скористатися цією командою для створення списку суміжності (прямі залежності):

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-дозволів (адресації) буде вказано іншу групу безпеки. Вам потрібно буде відкликати всі дозволи на вхід, які містять Групи безпеки як джерело.


Я здогадуюсь, що первинним питанням було те, що стосується якоїсь групи безпеки. Чи є речі, які не є мережевими інтерфейсами, які посилаються на групи безпеки (та їх вхідні порти)? Якщо ні, то список мережевих інтерфейсів - хороша відповідь, ні?
користувач14645

Хоча у вашій точці є значення, посилання на групу безпеки не є порушенням залежності. Можна видалити групу безпеки, яка не приєднана до жодної ENI, але посилається на іншу групу безпеки. Після того, як видалення відбудеться, ви отримаєте сповіщення "У вас є нові застарілі правила безпеки групи" на вашій консолі, щоб вказати, що в правилі є стара посилання на неіснуючу групу безпеки. Потім він надасть вам гіперпосилання "переглянути несвіжі правила", щоб потім змінити ситуацію.
Denys Stroebel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.