O blog da AWS
Automação de VPC Flow Logs utilizando Eventos de ciclo de vida da AWS Control Tower
Por Welly Siauw, Arquiteto Sênior de Soluções de Parceiros da AWS,
Luciano Mucilli Cloud Infrastructure Architect na AWS e
Robert Calvachi Cloud Infrastructure Architect na AWS
Muitos clientes com os quais trabalhamos usam o Amazon VPC Flow Logs para fins de monitoramento, solução de problemas, detecção de anomalias ou arquivamento. Uma pergunta comum dos clientes é de como automatizar e centralizar Amazon VPCs Flow Logs em um ambiente de várias contas. O AWS Control Tower fornece governança para varias contas com registro centralizado utilizando o AWS CloudTrail e o AWS Config.
Nesta publicação, veremos como automatizar e centralizar Amazon VPC Flow Logs em seu ambiente de várias contas do AWS Control Tower. Com essa solução, você pode gerenciar VPCs Flow Logs em várias contas automaticamente e com verificação de consistência periódica.
Sobre este blog post |
|
Tempo de leitura | 10 min. |
Tempo de implantação | ~15 min. |
Custo | Os recursos implantados nesta solução são abordados no nível gratuito da AWS. Consulte a página de preços do CloudWatch para obter o custo de entrega do VPC Flow Logs. |
Nível | Avançado (300) |
Serviços da AWS | AWS Control Tower AWS CloudFormation Amazon Virtual Private Cloud (VPC) Amazon Simple Storage Service (Amazon S3) Eventos do Amazon CloudWatch Amazon EventBridge AWS Lambda |
Resumo da solução
O AWS Control Tower configura o armazenamento de log centralizado na conta Log Archive. Nesta solução, você pode usar a conta de Log Archive ou outra conta, como por exemplo uma conta de rede como destino dos logs. Aqui chamaremos de conta Hub a conta em que um bucket do Amazon S3 será criado para o armazenamento dos Logs.
Cada proprietário de conta pode configurar diferentes filtros de VPC Flow Logs por VPC. Por exemplo: Podemos registrar todo o tráfego em uma VPC de produção e registrar apenas o tráfego rejeitado em uma VPC de desenvolvimento. A solução usa Tags para cada filtro do VPC Flow Logs. Quando a tag predefinida é adicionada às VPCs ou sub-redes, a ação gera eventos do CloudWatch com as informações das tags incluídas. Essa solução usa o Amazon EventBridge para enviar eventos da conta de origem para a conta Hub. Quando o evento chega no barramento de eventos da conta Hub, um recurso AWS Lambda é acionado. Esta função utiliza a tag inserida no evento para modificar o filtro do VPC Flow Logs na conta de origem.
Para garantir que todas as novas contas geradas a partir da AWS Control Tower Account Factory se beneficiem dessa automação, a solução usa Eventos de ciclo de vida na AWS Control Tower para implantar a infraestrutura necessária após uma nova conta ser totalmente provisionada. Todos os recursos necessários nesta solução são implantados usando o AWS CloudFormation Stacks e o AWS CloudFormation StackSets a partir da conta de gerenciamento da AWS Control Tower.
O diagrama a seguir ilustra o processo de automação de VPC Flow Logs:
- A criação de uma nova conta aciona o evento de ciclo de vida da AWS Control Tower, no qual invoca a função Lifecycle Lambda.
- O id da nova conta é verificado e adicionado às instâncias existentes do CloudFormation StackSets.
- O CloudFormation StackSets implementará as regras EventBridge, o Event Bus e a função Lambda FlowLogActivator.
- Crie ou atualize uma Tag predefinida na VPC que gerará eventos do CloudWatch com informações das tags incluídas.
- A regra EventBridge na nova conta encaminhará o evento para o Event Bus na conta Hub.
- A regra EventBridge na conta Hub ativa a função Lambda FlowLogActivator.
- A Lambda assume uma função na nova conta e configura VPCs Flow Logs.
- Os logs do VPCs Flow Logs são enviados para um bucket predefinido do Amazon S3 na conta Hub.
Pré-requisitos
Esses são os pré-requisitos necessários para implementar a solução.
- Presumimos que você já tenha uma versão funcional da AWS Control Tower. Caso contrário, siga a postagem do blog tutorial de Jeff Barr para obter sua primeira configuração da AWS Control Tower.
- ID da conta de gerenciamento e ID da conta Hub. A conta Hub pode ser a conta do Log Archive existente ou outra conta gerenciada pela AWS Control Tower.
- ID da organização da AWS (formato: o-text), que pode ser encontrada na guia de configuração do console da organização da AWS
- O ID da conta da AWS que você deseja incluir na implantação. Por favor, note que a conta de gerenciamento não pode ser utilizada.
Implantação da automação.
O primeiro passo é criar a infraestrutura para essa automação nas contas existentes. Para implantar em várias contas e regiões, você usará o AWS CloudFormation StackSets.
- Faça login na conta de gerenciamento da AWS Control Tower e selecione a região da AWS na qual a AWS Control Tower foi ativada.
- No console do AWS CloudFormation StackSets, insira a URL do Amazon S3: https://s3.amazonaws.com/marketplace-sa-resources-ct-us-east-1/ct_vpc_flowlog_stackset.yml
- Digite o Nome da StackSet, por exemplo, ‘CT-Flowlog’
- Na seção Parâmetros, insira os seguintes parâmetros:
- ComplianceFrequency = frequência para verificar a conformidade dos Flow Logs, o valor deve ser entre 2 e 168 horas.
- EventBusDestinationAccount = ID da conta do hub.
- EventBusName = “Flowlog-EventBus” ou, opcionalmente, insira o nome do barramento do evento.
- FlowLogBucketName = Selecione um nome exclusivo para o bucket do S3 que armazenará os logs. Dica: insira o ID da conta no nome do bucket, ou seja,flowlog
- FlowLogDestinationAccount = ID da conta do hub.
- MasterAccount = ID da conta de gerenciamento do pré-requisito anterior.
- MasterRegion = ID da região da AWS em que a AWS Control Tower foi ativada.
- OrgID = ID da organização da AWS.
- StackSetName = Insira o nome dos StackSets como na etapa anterior, ou seja, ‘CT-FlowLog’
- Na seção Permissões, escolha Permissões de autoatendimento insira as seguintes configurações:
- Nome da função do IAM: Selecione AWSControlTowerStackSetRole
- Nome da função de execução do IAM: AWSControlTowereXecution
- Na seção Contas:
- Selecione: Implantar pilhas em contas
- Forneça uma lista delimitada por vírgulas dos IDs de conta que você deseja incluir. Importante: Certifique-se de incluir a conta Hub na lista de IDs.
- Na seção Especificar regiões, selecione as regiões da AWS nas quais você deseja implantar a automação.
- Na página Revisar, valide todos os parâmetros e configurações. Não se esqueça de marcar a caixa de seleção: Entendo que o AWS CloudFormation pode criar recursos do IAM com nomes personalizados. Quando estiver pronto, selecione Enviar.
- Navegue até a guia de informações do StackSets e anote o StackSet ARN. Você precisará dele na próxima etapa.
Configurar o evento de ciclo de vida
Na etapa anterior, a automação foi implementada para cobrir contas existentes. A automação agora será configurada para contas futuras usando o Evento de ciclo de vida da AWS Control Tower.
- Faça login na conta de gerenciamento do AWS Control Tower e selecione a região da AWS na qual a AWS Control Tower foi ativada.
- Use esta URL de atalho para criar a pilha e selecione Próximo.
- Na página Especificar detalhes da pilha, dê um nome como “CT-Flowlog-Lifecycle”.
- Na seção Parâmetros, insira os seguintes parâmetros:
- EventBusDestinationAccount = ID da conta do hub.
- OrgID = ID da organização.
- StackSetArn = StackSet ARN da etapa 9 da seção anterior.
- Na página Configurar opções de pilha, você pode optar por adicionar Tags e outras opções. Escolha Próximo para continuar.
- Na página Revisar, valide seus parâmetros e, finalmente, selecione Criar pilha.
Testando a solução
Depois de concluir a configuração dos VPC Flow Logs e do ciclo de vida da AWS Control Tower, você estará pronto para testa-lo. Vamos escolher uma conta que você incluiu na Stack Set anteriormente.
- Faça login em qualquer uma das contas que foram incluídas anteriormente na StackSet. Certifique-se de que a seção do console esteja na região AWS que foi incluída no escopo.
- Navegue até o console da VPC. Na seção Your VPCs, selecione a VPC que você deseja testar.
- Vá para a guia Tags e selecione Manage tags. Selecione Add new tag e insira a seguinte combinação de chave-valor:
- Chave = flowlog
- Valor = ACCEPT
- Selecione Save para salvar. Aguarde alguns segundos e vá para a guia Flow logs. Você verá que os novos Flow logs foram configurados. Você pode experimentar modificando as tags com combinações diferentes, por exemplo ALL ou REJECT.
- Agora vamos tentar adicionar outro Flow Log no nível da sub-rede. Na seção Subnets, selecione a sub-rede que você deseja testar.
- Vá para a guia Tags e selecione Manage tags. Selecione Add new tag e insira a seguinte combinação de chave-valor:
- Chave = flowlog
- Valor = REJECT
- Selecione Save para salvar. Aguarde alguns segundos e vá para a guia Flow logs. Você verá um segundo Flow Log foi configurado.
Nota: Lembre-se de que o bucket do Amazon S3 pertence à conta Hub. Se você quiser acessar os logs brutos, primeiro faça login na conta Hub.
Isso conclui o teste, se você implementou essa automação em várias regiões da AWS, vá em frente e a teste em cada região seguindo as etapas acima. Se você planeja criar uma nova conta na AWS Control Tower, consulte a etapa Criar ou registrar uma conta individual. Em seguida, execute o teste seguindo as etapas acima depois que a nova conta for totalmente provisionada.
Personalização opcional
O Amazon VPC Flow Logs oferece suporte a três tipos de filtro: All, Accept e Reject (Tudo, Aceito, Rejeitado). A função Lambda na conta Hub é programada para aceitar combinações de chave e valor conforme tabela abaixo:
Modo de filtro |
Chave da Tag |
Valor da tag |
Tudo | flowlog, flow-log, flow_log, FlowLog, Flow-Log, Flow_Log | all, full, enable, active, true, yes |
Aceito | accept, pass, allow | |
Rejeitado | reject, deny, block |
Opcionalmente, você pode modificar o modelo existente para corresponder à combinação chave-valor de tag com base nos requisitos da sua organização, para isso:
- Abra o arquivo de modelo yml com um editor de texto.
- Na seção Mappings do modelo AWS CloudFormation, procure por LambDavariable > Tag
- Para modificar uma tag key, adicione ou exclua o valor de KeyList e Key para corresponder aos seus requisitos.
- Salve o arquivo.
- Atualize StackSets usando o novo arquivo de modelo, inserindo os mesmos parâmetros das etapas anteriores.
Limpeza
Para evitar cobranças futuras, os recursos desta solução podem ser removidos apenas deletando a Stack e StackSets a partir do console do AWS CloudFormation.
- Para remover a configuração do Evento do ciclo de vida, siga o guia para remover a pilha criada na etapa 2.
- Para excluir a configuração de VPC Flow Logs, primeiro você deve excluir as instâncias da pilha do conjunto de pilhas e, em seguida excluir as StacksSets
- A remoção do Stack e StackSets não exclui os logs de VPC Flow logs existentes que você configurou anteriormente.
- Por fim, o Bucket S3 na conta Hub é mantido por padrão, não se esqueça de excluir esse bucket se você não precisar mais dele.
Conclusão
Neste Blog post, demonstramos como automatizar a configuração de VPC Flow Logs em um ambiente de várias contas usando o EventBridge e o AWS Lambda para orquestração. Também mostramos como estender o evento do ciclo de vida da AWS Control Tower para automatizar a configuração durante o provisionamento de uma nova conta. Por fim, fornecemos um exemplo de como personalizar rótulos (Tags) de acordo com o padrão da sua organização.
Para expandir essa solução, considere incorporar o modelo de exemplo com uma outra customização e empacotá-los como uma única solução. Para obter mais informações, consulte Personalizações da AWS Control Tower.
Repositório GitHub:
https://github.com/aws-samples/aws-ct-vpc-flowlogs
Este artigo foi traduzido do Blog da AWS em Inglês.
Sobre o autor
Welly Siauw é arquiteto de soluções de parceiros sênior na AWS. Welly gosta de trabalhar com clientes da AWS para resolver desafios de arquitetura, operacionais e de otimização de custos.