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ą.
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ą.
Odpowiedzi:
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
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-
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 table
dla ładnie sformatowanej listy.
aws ec2 describe-instances --output text | grep sg-
Możesz przesłuchać aws cli, aby uzyskać potrzebne dane.
Musisz:
Możesz także użyć bibliotek, takich jak boto https://code.google.com/p/boto/ zamiast surowego aws cli.
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) }'
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.
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ń:
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.