Configure alertas para encerramentos programáticos de contas no AWS Organizations - Recomendações da AWS

Configure alertas para encerramentos programáticos de contas no AWS Organizations

Richard Milner-Watts, Debojit Bhadra e Manav Yadav, Amazon Web Services

Resumo

A API CloseAccount para AWS Organizations permite que você feche contas de membros dentro de uma organização de forma programática, sem precisar fazer login na conta com credenciais raiz. A API RemoveAccountFromOrganization extrai uma conta de uma organização no AWS Organizations, então ela se torna uma conta independente.

Essas APIs potencialmente aumentam o número de operadores que podem fechar ou remover uma conta da AWS. Todos os usuários que têm acesso à organização por meio do AWS Identity and Access Management (IAM) na conta de gerenciamento do AWS Organizations podem chamar essas APIs, portanto, o acesso não se limita ao proprietário do e-mail raiz da conta com qualquer dispositivo de autenticação multifator (MFA) associado.

Esse padrão implementa alertas quando as APIs CloseAccount e RemoveAccountFromOrganization são chamadas, para que você possa monitorar essas atividades. Para alertas, ele usa um tópico do Amazon Simple Notification Service (Amazon SNS). Também é possível configurar as notificações do Slack usando um webhook.

Pré-requisitos e limitações

Pré-requisitos 

  • Uma conta AWS ativa

  • Uma organização no AWS Organizations

  • Acesso à conta de gerenciamento da organização, sob a raiz da organização, para criar os recursos necessários

Limitações

  • Conforme descrito na referência da API do AWS Organizations, a API CloseAccount permite que apenas 10% das contas ativas dos membros sejam fechadas em um período contínuo de 30 dias.

  • Quando uma conta da AWS é fechada, seu status é alterado para SUSPENSO. Por 90 dias após essa transição de status, o AWS Support pode reabrir a conta. A conta é excluída permanentemente após 90 dias.

  • Os usuários que têm acesso à conta de gerenciamento e às APIs do AWS Organizations também podem ter permissões para desativar esses alertas. Se a principal preocupação for comportamento malicioso em vez de exclusão acidental, considere proteger os recursos criados por esse padrão com um limite de permissões do IAM.

  • A API chama por CloseAccount e RemoveAccountFromOrganization é processado na região Leste dos EUA (Norte da Virgínia) (us-east-1). Portanto, você deve implantar essa solução em us-east-1 para observar os eventos.

Arquitetura

Pilha de tecnologias de destino  

  • AWS Organizations

  • AWS CloudTrail

  • Amazon EventBridge

  • AWS Lambda

  • Amazon SNS

Arquitetura de destino 

O diagrama a seguir mostra a arquitetura da solução desse padrão.

Arquitetura para configurar alertas no AWS Organizations para encerramentos de contas
  1. O AWS Organizations processa uma solicitação CloseAccount ou RemoveAccountFromOrganization.

  2. O Amazon EventBridge é integrado ao AWS CloudTrail para entregar esses eventos ao barramento de eventos padrão.

  3. Uma regra personalizada do Amazon EventBridge corresponde às solicitações do AWS Organizations e chama uma função do Lambda da AWS.

  4. A função do Lambda entrega uma mensagem para um tópico do SNS, na qual os usuários podem se inscrever para receber alertas por e-mail ou processamento adicional.

  5. Se as notificações do Slack estiverem ativadas, a função do Lambda enviará uma mensagem para um webhook do Slack.

Ferramentas

Serviços da AWS

  • O AWS CloudFormation fornece uma forma de modelar uma coleção de recursos relacionados da AWS e de terceiros, provisioná-los de forma rápida e consistente e gerenciá-los em todo o ciclo de vida, tratando a infraestrutura como código.

  • O Amazon EventBridge é uma tecnologia sem servidor de barramento de eventos que você pode usar para facilitar a conexão de aplicações a dados de diversas origens. O EventBridge recebe um evento, um indicador de uma mudança no ambiente, e aplica uma regra para encaminhar o evento a um destino. As regras fazem a correspondência entre os eventos e os destinos com base na estrutura do evento, chamada padrão do evento ou em um schedule.

  • O ‭‬AWS Lambda‭ é um serviço de computação que permite a execução do código sem provisionar ou gerenciar servidores O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia a milhares por segundo. Você paga apenas pelo tempo de computação consumido. Não haverá cobranças quando seu código não estiver em execução.

  • O AWS Organizations ajuda a gerenciar e governar centralmente seu ambiente à medida que você expande e escala seus recursos da AWS da. Usando o AWS Organizations, você pode criar programaticamente novas contas da AWS e alocar recursos, agrupar contas para organizar seus fluxos de trabalho, aplicar políticas a contas ou grupos para fins de governança e simplificar o faturamento usando um único método de pagamento para todas as suas contas.

  • O AWS CloudTrail monitora e registra a atividade da conta em toda a sua infraestrutura da AWS e oferece controle sobre ações de armazenamento, análise e remediação.

  • O Amazon Simple Notification Service (Amazon SNS) é um serviço de mensagens totalmente gerenciado para comunicação entre aplicações (A2A) e de aplicação para pessoa (A2P).

Outras ferramentas

código

O código desse padrão está localizado no repositório GitHub AWS Account Closer Notifier.

A solução inclui um modelo do CloudFormation que implanta a arquitetura desse padrão. Ele usa a biblioteca AWS Lambda Powertools for Python para fornecer registro e rastreamento.

Épicos

TarefaDescriçãoHabilidades necessárias

Inicie o modelo do CloudFormation para a pilha de soluções.

O modelo do CloudFormation para esse padrão está na ramificação principal do repositório do GitHub. Ele implanta os perfis do IAM, as regras do EventBridge, as funções do Lambda e o tópico do SNS.

Para iniciar o modelo:

  1. Clone o repositório do GitHub para obter uma cópia do código da solução.

  2. Abra o Console de Gerenciamento da AWS para a conta de gerenciamento do AWS Organizations.

  3. Escolha a região Leste dos EUA (Norte da Virgínia) (us-east-1) e abra o console do CloudFormation.

  4. Crie a pilha usando o modelo account-closure-notifier.yml e especificando os seguintes valores:  

    • Nome da pilha: aws-account-closure-notifier-stack 

    • ResourcePrefixparâmetro:aws-account-closure-notifier

    • SlackNotification parâmetro : se as notificações do Slack forem necessárias, altere essa configuração para true.

    • Parâmetro SlackWebhookEndpoint: se as notificações do Slack forem necessárias, especifique o URL do webhook.

Para obter mais informações sobre como iniciar uma linha do CloudFormation, consulte a documentação da AWS.

Administrador da AWS

Verifique se a solução foi iniciada com sucesso.

  1. Aguarde até que a pilha do CloudFormation alcance o status CREATE_COMPLETE.

  2. Abra o EventBridge console em us-east-1.

  3. Verifique se uma nova regra foi criada com o nome aws-account-closure-notifier-event-rule.

Administrador da AWS

Inscreva-se no tópico do SNS.

(Opcional) Se você quiser se inscrever no tópico do SNS:

  1. Abra o console do Amazon SNS em us-east-1 e encontre o tópico chamado aws-account-closure-notifier-sns-topic.

  2. Escolha o nome do tópico e, em seguida, escolha Criar inscrição.

  3. Em Protocolo, escolha E-mail.

  4. Em Endpoint, especifique um endereço de e-mail para receber a notificação e, em seguida, escolha Criar assinatura.

  5. Verifique sua caixa de entrada de e-mail para ver uma mensagem do AWS Notifications. Use o link no e-mail para confirmar a assinatura.

Para obter mais informações sobre como configurar as notificações do SNS, consulte a documentação do Amazon SNS.

Administrador da AWS
TarefaDescriçãoHabilidades necessárias

Envie um evento de teste ao barramento de eventos padrão.

O repositório do GitHub fornece um evento de amostra que você pode enviar para o barramento de eventos padrão do EventBridge para teste. A regra do EventBridge também reage aos eventos que usam a fonte de eventos personalizada account.closure.notifier.

nota

Não é possível usar a origem de eventos do CloudTrail para enviar este evento, pois não é permitido enviar um evento em nome de um serviço da AWS.

Para enviar um evento de teste:

  1. Abra o EventBridge console em us-east-1.

  2. No painel de navegação, em Barramentos, escolha Barramentos de eventos e selecione o barramento de eventos padrão.

  3. Escolha Enviar eventos.

  4. Em Origem do evento, insira account.closure.notifier.

  5. Em Tipo de detalhe, insira AWS API Call via CloudTrail.

  6. Para Detalhes do evento, copie e cole o conteúdo tests/dummy-event.json do repositório do GitHub na caixa de texto.

  7. Escolha Enviar  para iniciar o fluxo de trabalho de notificação.

Administrador da AWS

Verifique se a notificação por e-mail foi recebida.

Verifique se há notificações na caixa de correio que se inscreveu no tópico do SNS. Você deve receber um e-mail com detalhes da conta que foi fechada e da entidade principal que realizou a chamada de API.

Administrador da AWS

Verifique se a notificação do Slack foi recebida.

(Opcional) Se você especificou uma URL de webhook para o parâmetro SlackWebhookEndpoint ao implantar o modelo CloudFormation, verifique o canal do Slack que está mapeado para o webhook. Ele deve exibir uma mensagem com detalhes da conta que foi fechada e da entidade principal que realizou a chamada de API.

Administrador da AWS

Recursos relacionados