Jak określić zależności grup zabezpieczeń AWS?

46

Amazon EC2 nie pozwala mi usunąć grupy zabezpieczeń, narzekając, że grupa nadal ma zależności. Jak znaleźć te zależności?

aws ec2 opisz-zabezpieczenia-grupy nie mówią.

użytkownik14645
źródło
Odpowiedź nie jest właściwa w tym pytaniu @MichaelHampton, mimo że jest tak oznaczona.
konr
@konr Jeśli uważasz, że pytanie wymaga lepszych odpowiedzi, możesz rozpocząć nagrodę .
Michael Hampton

Odpowiedzi:

58

Wklej identyfikator grupy zabezpieczeń w sekcji „Interfejsy sieciowe” EC2. Znajduje to zastosowanie w EC2, EB, RDS, ELB.

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

Denys Stroebel
źródło
10

Najlepszym sposobem na to w konsoli AWS EC2 jest wklejenie nazwy grupy zabezpieczeń w polu wyszukiwania w sekcji EC2-> Instancje.

Wszystkie instancje powiązane z wklejoną grupą bezpieczeństwa zostaną zapełnione - będą to obiekty ec2 (zależności).

Możesz także uruchomić to wyszukiwanie w sekcji ELB i innych ofertach AWS wykorzystujących grupy zabezpieczeń.

Jeśli próbujesz usunąć grupę zabezpieczeń, musisz albo „zmienić grupę zabezpieczeń” dla każdej instancji (jeśli są w VPC), albo utworzyć interfejs AMI i uruchomić ponownie przy użyciu innej grupy zabezpieczeń - a następnie usuń starą instancję (jeśli przy użyciu EC2 classic)

Mam nadzieję, że pomaga-

Scott Moore
źródło
8

Musisz spojrzeć na obiekty instancji EC2, a nie na same grupy:

$ aws ec2 describe-instances --output text

Następnie wyszukaj „sg- *” lub skorzystaj ze standardowych narzędzi przetwarzania strumienia tekstu unix, aby wyciągnąć potrzebne dane.

Alternatywnie, jeśli masz niewielką liczbę instancji, użyj --output tabledla ładnie sformatowanej listy.

EEAA
źródło
2
aws ec2 describe-instances --output text | grep sg-
cdmckay
Ponieważ grupa zabezpieczeń może odnosić się do innych grup zabezpieczeń, być może trzeba uruchomić tę funkcję rekurencyjnie?
brendan
1
To cicha niekompletna. Grupy zabezpieczeń mogą być używane w wielu miejscach poza instancjami EC2 - ELB, VPC, inne grupy bezpieczeństwa (jak już wspomniano @brendan) itp.
Amos Shapira
@AmosShapira OP zapytał konkretnie o EC2. Jeśli chcesz, zawsze możesz edytować moją odpowiedź, aby ją poprawić.
EEAA,
@AmosShapira Rozwiązało to problem, który miał OP. Odpowiedzi SF nie muszą być wyczerpującą odpowiedzią na każdą możliwą powiązaną sytuację.
EEAA,
7

Możesz przesłuchać aws cli, aby uzyskać potrzebne dane.

Musisz:

  • Wymień wszystkie grupy zabezpieczeń szukające odniesień do danej grupy
  • Wymień wszystkie EC2 i ich grupy
  • Wymień wszystkie ELB i ich grupy
  • Wymień wszystkie RDS i ich grupy

Możesz także użyć bibliotek, takich jak boto https://code.google.com/p/boto/ zamiast surowego aws cli.

Drew Khoury
źródło
4

Funkcje Lambda mogą również mieć grupy bezpieczeństwa. Podczas pisania Amazon nie zapobiega usuwaniu grup zabezpieczeń używanych przez funkcje Lambda.

Użyłem tego:

aws lambda list-functions | jq -c '.Functions[] | {FunctionArn, SecurityGroups: (.VpcConfig.SecurityGroupIds[]? // null) }'
karpada
źródło
2

Innym problemem są SecurityGroups, które zależą od innych SecurityGroups. Można użyć tego polecenia, aby wygenerować listę Adjacency (bezpośrednie zależności):

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

Idealnie, ten wynik powinien zostać wykorzystany do znalezienia zamknięcia przechodniego (wszystkie zależności, bezpośrednie i pośrednie). Niestety nie udało mi się znaleźć narzędzia do zamykania przechodniego.

karpada
źródło
1

To może nie być dostępne, gdy pytanie zostało pierwotnie zadane, ale jeśli przejdziesz do Konsoli AWS dla grup zabezpieczeń, wybierz grupy, o których mowa, i wybierz opcję Usuń akcję, pojawi się monit z informacją, czy istnieje odniesienie i .

pchnięcie
źródło
1

Za pomocą tego narzędzia Python można wyświetlić listę grup zabezpieczeń wraz z ich zależnościami. Pozwala także na wyświetlanie nieużywanych (przestarzałych) grup zabezpieczeń:

https://github.com/mingbowan/sgdeps

Ryan Fisher
źródło
0

Zaznaczona odpowiedź jest niepoprawna. Jeśli widzisz naruszenie zależności, prawdopodobnie w Twojej konfiguracji uprawnień IP (Ingress) znajduje się odniesienie do innej grupy zabezpieczeń. Konieczne będzie odwołanie wszystkich uprawnień wejściowych zawierających grupy zabezpieczeń jako źródło.

MRW
źródło
Domyślam się, że pierwotne pytanie dotyczyło pewnej grupy zabezpieczeń. Czy istnieją rzeczy, które nie są interfejsami sieciowymi, które odwołują się do grup zabezpieczeń (i ich portów wejściowych)? Jeśli nie, to lista interfejsów sieciowych jest dobrą odpowiedzią, nie?
użytkownik14645
Chociaż w twoim punkcie jest wartość, odwołanie do grupy zabezpieczeń nie stanowi naruszenia zależności. Możliwe jest usunięcie grupy zabezpieczeń, która nie jest dołączona do żadnego ENI, ale do której odwołuje się inna grupa zabezpieczeń. Po usunięciu pojawi się powiadomienie „Masz nowe nieaktualne reguły grupy zabezpieczeń” w konsoli, aby wskazać, że w regule znajduje się stare odniesienie do nieistniejącej grupy zabezpieczeń. Następnie wyświetli link „Wyświetl nieaktualne reguły”, aby zmienić sytuację w przyszłości.
Denys Stroebel,