Como determinar as dependências do grupo de segurança da AWS?

46

O Amazon EC2 não me permite excluir um grupo de segurança, reclamando que o grupo ainda tem dependências. Como posso encontrar quais são essas dependências?

O aws ec2 descrevem-security-groups não diz.

user14645
fonte
A resposta não está correta nessa pergunta @MichaelHampton, mesmo que esteja marcada assim.
21414 konr
@ konr Se você acredita que a pergunta precisa de respostas melhores, você pode começar um prêmio .
Michael Hampton
semelhante ao stackoverflow.com/questions/24685508/…
LHWizard 02/02

Respostas:

58

Cole o ID do grupo de segurança na seção "Interfaces de rede" do EC2. Isso encontrará uso em EC2, EB, RDS, ELB.

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

Denys Stroebel
fonte
10

A melhor maneira de fazer isso no console do AWS EC2 é colar o nome do grupo de segurança no campo de pesquisa na seção EC2-> Instâncias.

Todas as instâncias associadas ao grupo de segurança colado serão preenchidas; esses seriam os objetos ec2 (dependências).

Você também pode executar esta pesquisa na seção ELB e em outras ofertas da AWS que utilizam grupos de segurança.

Se você estiver tentando excluir o grupo de segurança, será necessário 'alterar o grupo de segurança' para cada instância (se estiver em uma VPC) ou criar uma AMI e reiniciar usando um grupo de segurança diferente - e excluir a instância antiga (se usando o EC2 classic)

Espero que ajude-

Scott Moore
fonte
8

Você precisa examinar seus objetos de instância do EC2, não os próprios grupos:

$ aws ec2 describe-instances --output text

Em seguida, procure "sg- *" ou use as ferramentas de processamento de fluxo de texto unix padrão para obter os dados necessários.

Como alternativa, se você tiver um pequeno número de instâncias, use --output tablepara uma lista bem formatada.

EEAA
fonte
2
aws ec2 describe-instances --output text | grep sg-
Cdmckay 10/06
Como um grupo de segurança pode se referir a outros grupos de segurança, talvez você precise executar essa função recursivamente?
Brendan
1
Isso é silencioso incompleto. Os grupos de segurança pode ser usado em muitos lugares além do EC2 instâncias - ELB das,, outros grupos de segurança do VPC (como @brendan já mencionado) etc.
Amos Shapira
@AmosShapira O OP estava perguntando especificamente sobre o EC2. Se quiser, você sempre pode editar minha resposta para melhorá-la.
EEAA
@AmosShapira Resolveu o problema que o OP estava tendo. As respostas SF não precisam ser uma resposta abrangente para todas as situações relacionadas possíveis.
EEAA
7

Você pode interrogar o aws cli para obter os dados que deseja.

Você precisará:

  • Listar todos os grupos de segurança que procuram referências ao grupo em questão
  • Listar todos os EC2s e seus grupos
  • Listar todos os ELBs e seus grupos
  • Listar todos os RDSs e seus grupos

Você também pode usar bibliotecas, como https://code.google.com/p/boto/, em vez do aws cli bruto.

Drew Khoury
fonte
4

As funções do Lambda também podem ter grupos de segurança. No momento da escrita, a Amazon não impede a exclusão de grupos de segurança usados ​​pelas funções do Lambda.

Eu usei isso:

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

Outro problema são os SecurityGroups que dependem de outros SecurityGroups. Pode-se usar este comando para gerar a lista de adjacências (dependências diretas):

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

Idealmente, esse resultado deve ser usado para encontrar o fechamento transitivo (todas as dependências, diretas e indiretas). Infelizmente, não encontrei um utilitário de fechamento Transitivo.

karpada
fonte
1

Isso pode não estar disponível quando a pergunta foi feita originalmente, mas se você for ao Console da AWS para grupos de segurança, selecione o (s) grupo (s) em questão e selecione a ação Excluir, o prompt resultante informará se é referenciado e por que .

empurrão
fonte
1

Você pode usar esta ferramenta Python para listar grupos de segurança com suas dependências. Também permite listar grupos de segurança não utilizados (obsoletos):

https://github.com/mingbowan/sgdeps

Ryan Fisher
fonte
0

A resposta marcada está incorreta. Se você estiver vendo uma violação de dependência, é provável que outro grupo de segurança seja mencionado na configuração de permissões de IP (ingresso). Você precisará revogar todas as permissões de entrada que contêm Grupos de Segurança como sua origem.

MRW
fonte
Acho que a pergunta original era o que faz referência a algum grupo de segurança. Existem coisas que não são interfaces de rede que fazem referência a grupos de segurança (e suas portas de entrada)? Caso contrário, a lista de interfaces de rede é uma boa resposta, não?
User14645
Embora exista valor no seu argumento, uma referência a um grupo de segurança não é uma violação de dependência. É possível excluir um grupo de segurança que não está anexado a nenhuma ENI, mas que é referenciado em outro grupo de segurança. Após a exclusão, você receberá uma notificação "Você tem novas regras de grupo de segurança obsoletas" no console para indicar que existe uma referência antiga a um grupo de segurança inexistente em uma regra. Em seguida, ele fornecerá um hiperlink "exibir regras obsoletas" para alterar a situação a partir de então.
Denys Stroebel 08/08/19