Wie ermittle ich Abhängigkeiten von AWS-Sicherheitsgruppen?

46

In Amazon EC2 kann ich keine Sicherheitsgruppe löschen und mich beschweren, dass die Gruppe noch Abhängigkeiten aufweist. Wie finde ich diese Abhängigkeiten?

aws ec2 describe-security-groups sagt nichts.

user14645
quelle
Die Antwort ist in dieser Frage @MichaelHampton nicht richtig, obwohl sie als solche gekennzeichnet ist.
Konr
@konr Wenn Sie glauben, dass die Frage bessere Antworten benötigt, können Sie ein Kopfgeld auslösen .
Michael Hampton

Antworten:

58

Fügen Sie die Sicherheitsgruppen-ID in den Abschnitt "Network Interfaces" von EC2 ein. Dies wird in EC2, EB, RDS und ELB zum Einsatz kommen.

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

Verweigert Ströbel
quelle
10

Die beste Möglichkeit, dies in der AWS EC2-Konsole zu tun, besteht darin, den Namen der Sicherheitsgruppe in das Suchfeld im Abschnitt EC2-> Instances einzufügen.

Alle Instanzen, die der eingefügten Sicherheitsgruppe zugeordnet sind, werden dann ausgefüllt. Dies sind die ec2-Objekte (Abhängigkeiten).

Sie können diese Suche auch im ELB-Bereich und in anderen AWS-Angeboten ausführen, die Sicherheitsgruppen verwenden.

Wenn Sie versuchen, die Sicherheitsgruppe zu löschen, müssen Sie entweder die Sicherheitsgruppe für jede Instanz ändern (wenn sie sich in einer VPC befinden) oder eine AMI erstellen und mit einer anderen Sicherheitsgruppe neu starten. Löschen Sie dann die alte Instanz (wenn vorhanden) mit EC2 classic)

Ich hoffe, das hilft-

Scott Moore
quelle
8

Sie müssen sich Ihre EC2-Instanzobjekte ansehen, nicht die Gruppen selbst:

$ aws ec2 describe-instances --output text

Suchen Sie dann entweder nach "sg- *" oder verwenden Sie standardmäßige Unix-Textstream-Verarbeitungswerkzeuge, um die benötigten Daten abzurufen.

Alternativ können Sie bei einer geringen Anzahl von Instanzen --output tableeine schön formatierte Liste erstellen.

EEAA
quelle
2
aws ec2 describe-instances --output text | grep sg-
Cdmckay
Da eine Sicherheitsgruppe auf andere Sicherheitsgruppen verweisen kann, müssen Sie diese Funktion möglicherweise rekursiv ausführen?
brendan
1
Das ist ziemlich unvollständig. Sicherheitsgruppen können an vielen Stellen neben EC2-Instanzen verwendet werden - ELBs, VPCs, andere Sicherheitsgruppen (wie @brendan bereits erwähnt) usw.
Amos Shapira
@ AmosShapira Das OP fragte speziell nach EC2. Wenn Sie möchten, können Sie meine Antwort jederzeit bearbeiten, um sie zu verbessern.
EEAA
@ AmosShapira Es löste das Problem, das das OP hatte. SF-Antworten müssen keine umfassende Antwort auf jede mögliche verwandte Situation sein.
EEAA
7

Sie können die aws cli abfragen, um die gewünschten Daten zu erhalten.

Sie müssen Folgendes tun:

  • Listen Sie alle Sicherheitsgruppen auf, die nach Verweisen auf die betreffende Gruppe suchen
  • Listen Sie alle EC2s und ihre Gruppen auf
  • Listen Sie alle ELBs und ihre Gruppen auf
  • Listen Sie alle RDSs und ihre Gruppen auf

Sie können auch Bibliotheken wie https://code.google.com/p/boto/ anstelle der RAW-AWS-CLI verwenden.

Drew Khoury
quelle
4

Lambda-Funktionen können auch Sicherheitsgruppen haben. Zum Zeitpunkt des Schreibens verhindert Amazon das Löschen von Sicherheitsgruppen, die von Lambda-Funktionen verwendet werden, nicht.

Ich habe das benutzt:

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

Ein weiteres Problem sind Sicherheitsgruppen, die von anderen Sicherheitsgruppen abhängen. Mit diesem Befehl kann man die Adjacency-Liste erzeugen (direkte Abhängigkeiten):

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

Idealerweise sollte dieses Ergebnis verwendet werden, um den Transitiven Abschluss zu finden (alle Abhängigkeiten, direkt und indirekt). Leider konnte ich keine Transitive Closure Util finden.

Karpada
quelle
1

Dies war möglicherweise nicht verfügbar, als die Frage ursprünglich gestellt wurde. Wenn Sie jedoch in die AWS Console for Security Groups wechseln, die fraglichen Gruppen auswählen und die Löschaktion auswählen, werden Sie in der daraufhin angezeigten Eingabeaufforderung darüber informiert, ob und von wem auf sie verwiesen wird .

schieben
quelle
1

Mit diesem Python-Tool können Sie Sicherheitsgruppen mit ihren Abhängigkeiten auflisten. Sie können auch nicht verwendete (veraltete) Sicherheitsgruppen auflisten:

https://github.com/mingbowan/sgdeps

Ryan Fisher
quelle
0

Die markierte Antwort ist falsch. Wenn eine Abhängigkeitsverletzung auftritt, wird wahrscheinlich in Ihrer IP-Berechtigungskonfiguration (Ingress) auf eine andere Sicherheitsgruppe verwiesen. Sie müssen alle Zugriffsberechtigungen widerrufen, die Sicherheitsgruppen als Quelle enthalten.

MRW
quelle
Ich denke, die ursprüngliche Frage war, was auf eine Sicherheitsgruppe verweist. Gibt es Dinge, die keine Netzwerkschnittstellen sind, die auf Sicherheitsgruppen (und deren Eingangsports) verweisen? Wenn nicht, dann ist die Liste der Netzwerkschnittstellen eine gute Antwort, nein?
user14645
Obwohl Ihr Punkt einen Wert hat, ist ein Verweis auf eine Sicherheitsgruppe keine Abhängigkeitsverletzung. Es ist möglich, eine Sicherheitsgruppe zu löschen, die keiner ENI zugeordnet ist, auf die jedoch in einer anderen Sicherheitsgruppe verwiesen wird. Nachdem ein Löschvorgang ausgeführt wurde, wird in Ihrer Konsole die Benachrichtigung "Sie haben neue veraltete Sicherheitsgruppenregeln" angezeigt, die darauf hinweist, dass in einer Regel ein alter Verweis auf eine nicht vorhandene Sicherheitsgruppe vorhanden ist. Sie erhalten dann einen Hyperlink zum Anzeigen veralteter Regeln, um die Situation danach zu ändern.
Denys Stroebel