¿Cómo determinar las dependencias del grupo de seguridad de AWS?

46

Amazon EC2 no me deja eliminar un grupo de seguridad, quejándose de que el grupo todavía tiene dependencias. ¿Cómo puedo encontrar cuáles son esas dependencias?

aws ec2 describe-security-groups no lo dice.

usuario14645
fuente
La respuesta no es correcta en esa pregunta @MichaelHampton, a pesar de que está marcada como tal.
konr
@konr Si cree que la pregunta necesita mejores respuestas, puede comenzar una recompensa .
Michael Hampton

Respuestas:

58

Pegue la identificación del grupo de seguridad en la sección "Interfaces de red" de EC2. Esto encontrará el uso en EC2, EB, RDS, ELB.

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

Denys Stroebel
fuente
10

La mejor manera de hacerlo en la consola de AWS EC2 es pegar el nombre del grupo de seguridad en el campo de búsqueda en la sección EC2-> Instancias.

Todas las instancias asociadas con el grupo de seguridad pegado se completarán; esos serían los objetos ec2 (dependencias).

También puede ejecutar esta búsqueda en la sección ELB y otras ofertas de AWS que utilizan grupos de seguridad.

Si está tratando de eliminar el grupo de seguridad, necesitará 'cambiar el grupo de seguridad' para cada instancia (si están en una VPC) o crear una AMI y reiniciar usando un grupo de seguridad diferente; luego elimine la instancia anterior (si usando EC2 classic)

Espero que ayude-

Scott Moore
fuente
8

Debe mirar sus objetos de instancia EC2, no los grupos en sí:

$ aws ec2 describe-instances --output text

Luego, busque "sg- *" o use las herramientas de procesamiento de flujo de texto estándar de Unix para extraer los datos que necesita.

Alternativamente, si tiene una pequeña cantidad de instancias, úsela --output tablepara una lista bien formateada.

EEAA
fuente
2
aws ec2 describe-instances --output text | grep sg-
cdmckay
Dado que un grupo de seguridad puede referirse a otros grupos de seguridad, ¿tal vez necesite ejecutar esa función de forma recursiva?
brendan
1
Eso es silencioso incompleto. Los grupos de seguridad se pueden utilizar en muchos lugares, además de EC2 instancias - ELB de,, otros grupos de seguridad de VPC (como ya se ha mencionado @brendan), etc
Amos Shapira
@AmosShapira El OP estaba preguntando específicamente sobre EC2. Si lo desea, siempre puede editar mi respuesta para mejorarla.
EEAA
@AmosShapira Solucionó el problema que tenía el OP. No se requiere que las respuestas SF sean una respuesta integral a cada posible situación relacionada.
EEAA
7

Puede interrogar a aws cli para obtener los datos que desea.

Necesitarás:

  • Lista de todos los grupos de seguridad que buscan referencias al grupo en cuestión
  • Listar todos los EC2 y sus grupos
  • Listar todos los ELB y sus grupos
  • Listar todos los RDS y sus grupos

También puede usar bibliotecas, como boto https://code.google.com/p/boto/ en lugar del raw aws cli.

Drew Khoury
fuente
4

Las funciones de Lambda también pueden tener grupos de seguridad. Al momento de escribir, Amazon no impide la eliminación de grupos de seguridad utilizados por las funciones de Lambda.

Usé esto:

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

Otro problema son los SecurityGroups que dependen de otros SecurityGroups. Uno puede usar este comando para generar la lista de adyacencia (dependencias directas):

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

Idealmente, este resultado debería usarse para encontrar el cierre transitivo (todas las dependencias, directas e indirectas). Desafortunadamente, no pude encontrar una utilidad de cierre transitivo.

karpada
fuente
1

Es posible que esto no haya estado disponible cuando la pregunta se hizo originalmente, pero si ingresa a la consola de AWS para grupos de seguridad, selecciona los grupos en cuestión y selecciona la acción Eliminar, el mensaje resultante le dirá si está referenciada y por qué .

empujón
fuente
1

Puede usar esta herramienta de Python para enumerar grupos de seguridad con sus dependencias. También permite enumerar grupos de seguridad no utilizados (obsoletos):

https://github.com/mingbowan/sgdeps

Ryan Fisher
fuente
0

La respuesta marcada es incorrecta. Si ve una Infracción de dependencia, es probable que se haga referencia a otro Grupo de seguridad en su configuración de Permisos de IP (Ingress). Deberá revocar todos los permisos de ingreso que contengan Grupos de seguridad como fuente.

MRW
fuente
Supongo que la pregunta original era qué hace referencia a algún grupo de seguridad. ¿Hay cosas que no son interfaces de red que hacen referencia a grupos de seguridad (y sus puertos de entrada)? Si no, entonces la lista de interfaces de red es una buena respuesta, ¿no?
user14645
Si bien hay un valor en su punto, una referencia a un grupo de seguridad no es una violación de dependencia. Es posible eliminar un grupo de seguridad que no está conectado a ninguna ENI pero que está referenciado en otro grupo de seguridad. Después de que se realiza una eliminación, recibirá una notificación "Tiene nuevas reglas de grupo de seguridad obsoletas" en su consola para indicar que hay una referencia anterior a un grupo de seguridad inexistente en una regla. Luego le dará un hipervínculo "ver reglas obsoletas" para enmendar la situación a partir de entonces.
Denys Stroebel