Como melhorar a administração e organização dos Grupos de Segurança da AWS com o VPC Prefix List

Introdução
Quando comecei a usar mais a AWS, é comum criar cada vez mais grupos de segurança e com o tempo manter todos eles organizados acaba sendo tedioso, pois você observará que precisará atualizar com uma certa frequência cada grupo de segurança.
Para contextualizar melhor, imagine o seguinte cenário de exemplo:
Uma equipe de desenvolvedores solicita para você a criação de um novo servidor web no Windows com IIS instalado, então você prontamente cria uma instância EC2 com um novo grupo de segurança chamado "
SG-web-app1".Agora a mesma equipe de desenvolvedores solicita para você a criação de um outro servidor Windows com um novo serviço do Windows instalado, então você prontamente cria uma outra instância EC2 e prefere não utilizar o mesmo grupo de segurança, pois você é organizado e prefere criar um outro grupo de segurança com nome diferente que distingue melhor "
SG-services-app1"Então em cada grupo de segurança você adiciona o IP de cada desenvolvedor para o protocolo RDP e permite que eles possam acessar remotamente cada instância, isso se pareceria por exemplo com:
| Nome | Protocolo | Porta | IP do Desenvolvedor |
| SG-web-app1 | RDP | 3389 | 1.2.3.4 |
| SG-web-app1 | RDP | 3389 | 5.6.7.8 |
| SG-services-app1 | RDP | 3389 | 1.2.3.4 |
| SG-services-app1 | RDP | 3389 | 5.6.7.8 |
Observe na tabela que você tem 2 IPs diferentes de 2 desenvolvedores diferentes em 2 grupos de seguranças diferentes e aí que todo o problema começa.
Cada desenvolvedor possui um IP dinâmico e não fixo, isso na prática significa que o IP que eles recebem do provedor de internet deles mudam frequentemente.
Então eles começam a enviar para você que perderam o acesso remoto, isso acontece porque o IP real e atual deles não é o mesmo que você liberou no grupo de segurança inicialmente.
Você então solicita o novo IP para eles e então atualiza cada grupo de segurança e o problema é resolvido.
Mas será que está resolvido mesmo? A resposta curta é sim. Mas comece a multiplicar essa situação para mais pessoas na equipe e para mais grupos de segurança e você passará muito tempo lembrando, organizando e atualizando esses grupos de segurança.
Se você está em uma situação semelhante, compartilho a solução que encontrei para reduzir essa complexidade usando o VPC Prefix List.
VPC Prefix List
A lista de prefixo da AWS é um recurso que existe já algum tempo e existem 2 tipos:
Lista de prefixos gerenciadas pela AWS:
Como o nome indica, essas listas são gerenciadas pela AWS e são usadas para manter um conjunto de intervalos de endereços IP para serviços da AWS como o
S3,DynamoDBeCloudFront.Listas de prefixos gerenciadas pelo cliente:
São criadas e mantidas por qualquer pessoa que tenha acesso ao Console AWS, as APIs da AWS ou aos SDKs da AWS. É nisso que nos concentraremos.
A lista de prefixo gerenciados pelo cliente da AWS VPC é uma ótima ferramenta disponível, pois fornece a capacidade de rastrear e manter uma lista de valores de bloco CIDR, que podem então ser referenciados por outros componentes de rede da AWS em suas regras.
Como criar um VPC Prefix List
1- Acesse a console AWS → VPC → Managed Prefix Lists

2- Clique em Create Prefix List
Para isso, atente-se as seguintes regras:
Você deve escolher o tipo de família como IPv4 ou IPv6 e a quantidade máxima de IPs que poderá ter essa lista. E esses valores não podem ser alterados depois.
Um grupo de segurança possui um limite de 60 regras
Cada entrada da sua lista consumirá uma regra do grupo de segurança
Por exemplo se sua lista de prefixo tiver 20 endereços IPs, isso consumirá 20 das 60 regras que o grupo de segurança pode ter
Então obviamente você não pode adicionar mais do que 60 IPs nessa lista, pois atingirá a cota limite do grupo de segurança e não dará certo
Na prática isso significa, que ao adicionar no grupo de segurança uma lista de prefixo, mesmo que seja uma regra, na verdade a lista expandirá pela quantidade de IPs da lista e consumirá do seu limite no grupo de segurança
A única exceção é que digamos que você tenha uma lista de prefixo IPv4 com 60 IPs e outra lista de prefixo IPv6 com outros 60 IPs, então você adiciona essas duas regras no grupo de segurança e irá ter então 120 IPs como total, isso iria funcionar porque a cota do grupo de segurança é imposta separadamente para IPv4 e IPv6
O mesmo não se aplica por exemplo se você adicionar no grupo de segurança 2 listas de prefixos IPv4 com 60 IPs cada, isso daria um total de 120 IPs IPv4 e ultrapassaria a cota de 60 regras do grupo de segurança
Para nosso exemplo, defini um limite de 20 entradas, isso dá uma margem para usar outras regras no grupo de segurança no futuro se for necessário
E lembre-se de adicionar
/32ao final do IP que algum desenvolvedor te passar, pois esse é o formato correto do CIDR aqui.

Como configurar o Grupo de Segurança
1- Uma vez criado, você verá ela juntamente com as listas de prefixos gerenciados pela AWS:

2- Agora acesse o grupo de segurança e adicione a regra de entrada com o ID da lista de prefixo

Para manter ainda mais organizado, costumo criar o grupo de segurança com o nome SG-<name>-team-rdp-<env>, por exemplo SG-simplescloud-team-rdp-qa e sua regra de entrada ficaria parecido com a imagem acima.
Então o que está acontecendo na prática é que:
- As instâncias EC2
web-app1eservices-app1do nosso exemplo, agora terão esse grupo de segurança adicionalSG-<name>-team-rdp-<env>anexados nas instâncias e permitirá o acesso remoto para os IPs que serão consultados na lista de prefixo criada. Por exemplo a instância "web-app1" teria dois grupos de segurança anexados:
| Instância | Grupo de Segurança 1 | Grupo de Segurança 2 |
| web-app1 | SG-http-https | SG-simplescloud-team-rdp-qa |
| Porta 80 e 443 | Porta 3389 |
Desta forma, sua instância terá grupos de segurança dedicados pelos protocolos que as regras permitem, evitando aqueles grupos de segurança "
launch-wizard" que possui todas regras misturadas deHTTP,HTTPS,RDP,MSSQL, etc. Facilitando assim a administração a longo prazoDesta forma ainda, os desenvolvedores ainda sim precisarão fornecer para você seus respectivos IPs dinâmicos atualizados, a grande diferença agora é que você não precisará mais entrar em cada grupo de segurança e ir atualizando, atualizará apenas a lista de prefixo em um único lugar e isso será replicado para todos os grupos de segurança que fizer referência a ela
Diminuindo muito então a sobrecarga de administração e organização dos grupos de segurança.
Se ainda não estiver convencido dos benefícios, passamos por mais um exemplo:
Imagine que você tenha os IPs repetidos nos grupos de segurança X, Y e Z:

Aplicando essa solução, isso poderia ser modificado por:

Observe então que não será mais necessário entrar em cada grupo de segurança para atualizar, uma vez que você atualizar a lista de prefixo centralmente, isso será aplicado automaticamente para todos os grupos de segurança que fazem referência para essa lista de prefixo em suas regras.
Conclusão
Administrar e organizar os grupos de segurança da AWS é uma tarefa importante relacionada a segurança, porém ela pode ser tediosa e trabalhosa ao longo do tempo. Seu tempo é valioso demais para ficar perdendo tempo com esse tipo de tarefa, então compartilhei uma solução com VPC Prefix List para reduzir drasticamente as atualizações diretamente nos grupos de segurança e então manter as coisas organizadas com o menor esforço possível.






