Comment déterminer les dépendances du groupe de sécurité AWS?

46

Amazon EC2 ne me laissera pas supprimer un groupe de sécurité, se plaignant que le groupe a toujours des dépendances. Comment puis-je trouver ce que sont ces dépendances?

aws ec2 décrivent-groupes de sécurité ne dit pas.

utilisateur14645
la source
La réponse à cette question @MichaelHampton n’est pas correcte, même si elle est marquée comme telle.
Konr
@konr Si vous pensez que la question a besoin de meilleures réponses, vous pouvez commencer à recevoir une prime .
Michael Hampton
similaire à stackoverflow.com/questions/24685508/…
LHWizard 2/02/2017

Réponses:

58

Collez l'ID du groupe de sécurité dans la section "Interfaces réseau" de EC2. Cela trouvera une utilisation dans EC2, EB, RDS, ELB.

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

Denys Stroebel
la source
10

La meilleure façon de procéder dans la console AWS EC2 consiste à coller le nom du groupe de sécurité dans le champ de recherche de la section EC2-> Instances.

Toutes les instances associées au groupe de sécurité collé seront ensuite peuplées. Celles-ci seraient les objets ec2 (dépendances).

Vous pouvez également exécuter cette recherche dans la section ELB et dans d'autres offres AWS utilisant des groupes de sécurité.

Si vous essayez de supprimer le groupe de sécurité, vous devez soit «modifier le groupe de sécurité» pour chaque instance (s’ils se trouvent dans un VPC), soit créer une AMI et relancer l’utilisation d’un groupe de sécurité différent, puis supprimer l’ancienne instance (si nécessaire). en utilisant EC2 classic)

J'espère que ça t'as aidé-

Scott Moore
la source
8

Vous devez regarder vos objets d'instance EC2, pas les groupes eux-mêmes:

$ aws ec2 describe-instances --output text

Recherchez ensuite "sg- *" ou utilisez des outils de traitement de flux de texte unix standard pour extraire les données dont vous avez besoin.

Sinon, si vous avez un petit nombre d'instances, utilisez-le --output tablepour une liste bien formatée.

EEAA
la source
2
aws ec2 describe-instances --output text | grep sg-
cdmckay
Puisqu'un groupe de sécurité peut faire référence à d'autres groupes de sécurité, vous devez peut-être exécuter cette fonction de manière récursive?
Brendan
1
C'est calme incomplet. Les groupes de sécurité peuvent être utilisés dans de nombreux endroits en dehors des instances EC2 - ELB, VPC, autres groupes de sécurité (comme l'a déjà mentionné @brendan), etc.
Amos Shapira
@AmosShapira Le PO posait spécifiquement des questions sur EC2. Si vous le souhaitez, vous êtes toujours libre de modifier ma réponse pour l'améliorer.
EEAA
@ AmosShapira Cela a résolu le problème rencontré par le PO. Les réponses de SF ne sont pas obligées d'être une réponse complète à toutes les situations liées possibles.
EEAA
7

Vous pouvez interroger le aws cli pour obtenir les données souhaitées.

Vous aurez besoin de:

  • Répertoriez tous les groupes de sécurité recherchant des références au groupe en question.
  • Lister tous les EC2 et leurs groupes
  • Lister tous les ELB et leurs groupes
  • Lister tous les RDS et leurs groupes

Vous pouvez également utiliser des bibliothèques, telles que boto https://code.google.com/p/boto/ à la place de raw aws cli.

Drew Khoury
la source
4

Les fonctions Lambda peuvent également avoir des groupes de sécurité. Au moment de la rédaction, Amazon n'empêche pas la suppression des groupes de sécurité utilisés par les fonctions Lambda.

J'ai utilisé ceci:

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

Un autre problème concerne les SecurityGroups qui dépendent d’autres SecurityGroups. On peut utiliser cette commande pour générer la liste Adjacency (dépendances directes):

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

Idéalement, ce résultat devrait être utilisé pour trouver la fermeture transitive (toutes les dépendances, directes et indirectes). Malheureusement, je n'ai pas réussi à trouver un util de fermeture transitive.

Karpada
la source
1

Cela n'était peut-être pas disponible lorsque la question a été posée à l'origine, mais si vous allez dans la console AWS pour les groupes de sécurité, sélectionnez le (s) groupe (s) en question et sélectionnez l'action Supprimer, l'invite résultante vous dira si elle est référencée et par quoi. .

pousser
la source
1

Vous pouvez utiliser cet outil Python pour répertorier les groupes de sécurité avec leurs dépendances. Il permet également d’énumérer les groupes de sécurité inutilisés (obsolètes):

https://github.com/mingbowan/sgdeps

Ryan Fisher
la source
0

La réponse marquée est incorrecte. Si vous constatez une violation de dépendance, il est probable qu'un autre groupe de sécurité soit référencé dans votre configuration des autorisations IP (entrée). Vous devrez révoquer toutes les autorisations d'entrée contenant des groupes de sécurité comme source.

MRW
la source
Je suppose que la question initiale était de savoir ce qui faisait référence à un groupe de sécurité. Y a-t-il des éléments qui ne sont pas des interfaces réseau qui font référence à des groupes de sécurité (et à leurs ports d'entrée)? Sinon, la liste des interfaces réseau est une bonne réponse, non?
user14645
Bien que votre point ait de la valeur, une référence à un groupe de sécurité n'est pas une violation de dépendance. Il est possible de supprimer un groupe de sécurité qui n'est pas attaché à un ENI mais qui est référencé dans un autre groupe de sécurité. Une fois la suppression effectuée, vous recevrez une notification "Vous disposez de nouvelles règles de groupe de sécurité obsolètes" dans votre console pour indiquer qu'il existe une ancienne référence à un groupe de sécurité inexistant dans une règle. Il vous donnera ensuite un hyperlien "Voir les règles obsolètes" pour modifier la situation par la suite.
Denys Stroebel