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.
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.
Antworten:
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
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-
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 table
eine schön formatierte Liste erstellen.
aws ec2 describe-instances --output text | grep sg-
Sie können die aws cli abfragen, um die gewünschten Daten zu erhalten.
Sie müssen Folgendes tun:
Sie können auch Bibliotheken wie https://code.google.com/p/boto/ anstelle der RAW-AWS-CLI verwenden.
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) }'
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.
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 .
Mit diesem Python-Tool können Sie Sicherheitsgruppen mit ihren Abhängigkeiten auflisten. Sie können auch nicht verwendete (veraltete) Sicherheitsgruppen auflisten:
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.