Imposta avvisi per la chiusura programmatica degli account in Organizations AWS - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Imposta avvisi per la chiusura programmatica degli account in Organizations AWS

Creato da Richard Milner-Watts (AWS), Debojit Bhadra () e Manav Yadav () AWS AWS

Archivio AWS di codici: Account Closure Notifier

Ambiente: produzione

Tecnologie: gestione e governance

AWSservizi: AWS CloudTrail; Amazon EventBridge; AWS Lambda; AWS Organizations; Amazon SNS

Riepilogo

The CloseAccount APIfor AWSOrganizations consente di chiudere gli account dei membri all'interno di un'organizzazione a livello di codice, senza dover accedere all'account con le credenziali root. RemoveAccountFromOrganization APIEstrae un account da un'organizzazione in AWS Organizations, quindi diventa un account autonomo.

Questi APIs potrebbero aumentare il numero di operatori che possono chiudere o rimuovere un AWS account. Tutti gli utenti che hanno accesso all'organizzazione tramite AWS Identity and Access Management (IAM) nell'account di gestione AWS Organizations possono richiamarliAPIs, quindi l'accesso non è limitato al proprietario dell'e-mail principale dell'account con qualsiasi dispositivo di autenticazione a più fattori (MFA) associato.

Questo modello implementa avvisi quando i CloseAccount e RemoveAccountFromOrganization APIs vengono chiamati, in modo da poter monitorare queste attività. Per gli avvisi, utilizza un argomento Amazon Simple Notification Service (AmazonSNS). Puoi anche configurare le notifiche Slack tramite un webhook.

Prerequisiti e limitazioni

Prerequisiti

  • Un account attivo AWS

  • Un'organizzazione in AWS Organizations

  • Accesso all'account di gestione dell'organizzazione, nella directory principale dell'organizzazione, per creare le risorse necessarie

Limitazioni

  • Come descritto nel APIriferimento AWS Organizations, CloseAccount API consente di chiudere solo il 10% degli account dei membri attivi entro un periodo continuativo di 30 giorni.

  • Quando un AWS account viene chiuso, il suo stato viene modificato inSUSPENDED. Per 90 giorni dopo questa transizione dello stato, AWS Support può riaprire l'account. Dopo 90 giorni l'account viene eliminato definitivamente.

  • Utenti che hanno accesso all'account di gestione AWS Organizations e APIs potrebbero anche disporre delle autorizzazioni per disabilitare questi avvisi. Se la preoccupazione principale è il comportamento dannoso anziché l'eliminazione accidentale, prendi in considerazione la possibilità di proteggere le risorse create da questo modello con un limite di IAMautorizzazioni.

  • Le API chiamate CloseAccount e RemoveAccountFromOrganization vengono elaborate nella regione Stati Uniti orientali (Virginia settentrionale) (). us-east-1 Pertanto, è necessario implementare questa soluzione per osservare gli eventi. us-east-1

Architettura

Stack tecnologico Target

  • AWSOrganizzazioni

  • AWS CloudTrail

  • Amazon EventBridge

  • AWSLambda

  • Amazon SNS

Architettura Target

Il diagramma seguente mostra l'architettura della soluzione per questo modello.

Architettura per la configurazione degli avvisi in AWS Organizations for account closures
  1. AWSOrganizations elabora una RemoveAccountFromOrganization richiesta CloseAccount or.

  2. Amazon EventBridge è integrato con AWS CloudTrail per inviare questi eventi al bus eventi predefinito.

  3. Una EventBridge regola Amazon personalizzata corrisponde alle richieste di AWS Organizations e chiama una funzione AWS Lambda.

  4. La funzione Lambda invia un messaggio a un SNS argomento, a cui gli utenti possono iscriversi per ricevere avvisi e-mail o ulteriori elaborazioni.

  5. Se le notifiche Slack sono abilitate, la funzione Lambda invia un messaggio a un webhook Slack.

Strumenti

AWSservizi

  • AWS CloudFormationfornisce un modo per modellare una raccolta di risorse correlate AWS e di terze parti, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita, trattando l'infrastruttura come codice.

  • Amazon EventBridge è un servizio di bus eventi senza server che puoi utilizzare per connettere le tue applicazioni con dati provenienti da una varietà di fonti. EventBridge riceve un evento, un indicatore di un cambiamento nell'ambiente e applica una regola per indirizzare l'evento verso un obiettivo. Le regole abbinano gli eventi agli obiettivi in base alla struttura dell'evento, chiamata pattern di evento, o a una pianificazione.

  • AWSLambda è un servizio di elaborazione che supporta l'esecuzione di codice senza fornire o gestire server. Lambda esegue il codice solo quando necessario e si ridimensiona automaticamente, da poche richieste al giorno a migliaia al secondo. I costi saranno calcolati in base al tempo di elaborazione effettivo. Quando il codice non è in esecuzione non viene addebitato alcun costo.

  • AWSOrganizations ti aiuta a gestire e governare centralmente il tuo ambiente man mano che cresci e scalerai AWS le tue risorse. Utilizzando AWS Organizations, puoi creare nuovi AWS account e allocare risorse in modo programmatico, raggruppare account per organizzare i flussi di lavoro, applicare politiche agli account o ai gruppi per la governance e semplificare la fatturazione utilizzando un unico metodo di pagamento per tutti i tuoi account.

  • AWS CloudTrailmonitora e registra l'attività degli account in tutta l'AWSinfrastruttura e ti offre il controllo sulle azioni di archiviazione, analisi e correzione.

  • Amazon Simple Notification Service (AmazonSNS) è un servizio di messaggistica completamente gestito per le comunicazioni application-to-application (A2A) e application-to-person (A2P).

Altri strumenti

  • AWSLa libreria Lambda Powertools for Python è un insieme di utilità che forniscono funzionalità di tracciamento, registrazione, metriche e gestione degli eventi per le funzioni Lambda.

Codice

Il codice per questo pattern si trova nel repository Account Closer Notifier. GitHub AWS

La soluzione include un CloudFormation modello che implementa l'architettura per questo pattern. Utilizza la libreria AWS Lambda Powertools for Python per fornire registrazione e tracciamento.

Epiche

AttivitàDescrizioneCompetenze richieste

Avvia il CloudFormation modello per lo stack di soluzioni.

Il CloudFormation modello per questo modello si trova nel ramo principale del GitHub repository. Distribuisce i IAM ruoli, EventBridge le regole, le funzioni Lambda e SNS l'argomento.

Per avviare il modello:

  1. Clona il GitHub repository per ottenere una copia del codice della soluzione.

  2. Aprire la console di AWS gestione dell'account di gestione AWS Organizations.

  3. Scegli la regione Stati Uniti orientali (Virginia settentrionale) (us-east-1), quindi apri la CloudFormation console.

  4. Create lo stack utilizzando il account-closure-notifier.yml modello e specificando i seguenti valori:  

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

    • ResourcePrefixparametro: aws-account-closure-notifier

    • SlackNotificationparametro: Se sono necessarie notifiche Slack, modifica questa impostazione intrue.

    • SlackWebhookEndpointparametro: Se sono necessarie le notifiche Slack, specifica il webhook. URL

Per ulteriori informazioni sul lancio di uno CloudFormation stack, consulta la documentazione. AWS

AWSamministratore

Verifica che la soluzione sia stata avviata correttamente.

  1. Attendi che lo CloudFormation stack raggiunga lo stato di CREATE _COMPLETE.

  2. Apri la EventBridge console inus-east-1.

  3. Verifica che sia stata creata una nuova regola con il nomeaws-account-closure-notifier-event-rule.

AWSamministratore

Effettua la sottoscrizione all'argomento SNS.

(Facoltativo) Se vuoi iscriverti all'SNSargomento:

  1. Apri la SNSconsole Amazon us-east-1 e trova l'argomento denominatoaws-account-closure-notifier-sns-topic.

  2. Scegli il nome dell'argomento, quindi scegli Crea abbonamento.

  3. Per Protocollo, scegli E-mail.

  4. Per Endpoint, specifica l'indirizzo email a cui deve ricevere la notifica, quindi scegli Crea abbonamento.

  5. Controlla la tua casella di posta elettronica per trovare un messaggio proveniente da AWS Notifiche. Usa il link contenuto in questa email per confermare l'iscrizione.

Per ulteriori informazioni sulla configurazione SNS delle notifiche, consulta la SNSdocumentazione di Amazon.

AWSamministratore
AttivitàDescrizioneCompetenze richieste

Invia un evento di test al bus eventi predefinito.

Il GitHub repository fornisce un esempio di evento che è possibile inviare al bus di eventi EventBridge predefinito per il test. La EventBridge regola reagisce anche agli eventi che utilizzano l'origine degli eventi personalizzata. account.closure.notifier

Nota: non è possibile utilizzare l'origine CloudTrail dell'evento per inviare questo evento, poiché non è possibile inviare un evento come AWS servizio.

Per inviare un evento di prova:

  1. Apri la EventBridge console inus-east-1.

  2. Nel pannello di navigazione, in Bus, scegli Event bus, quindi seleziona il bus eventi predefinito.

  3. Scegli Invia eventi.

  4. Per Origine dell'evento, inserisciaccount.closure.notifier.

  5. In Tipo di dettaglio, immetti AWS API Call via CloudTrail.

  6. Per informazioni dettagliate sull'evento, copia e incolla il contenuto di tests/dummy-event.json dal GitHub repository nella casella di testo.

  7. Scegliete Invia per avviare il flusso di lavoro delle notifiche.

AWSamministratore

Verifica che la notifica e-mail sia stata ricevuta.

Controlla le notifiche nella casella di posta che ha sottoscritto l'SNSargomento. Dovresti ricevere un'e-mail con i dettagli dell'account che è stato chiuso e del principale che ha eseguito la API chiamata.

AWSamministratore

Verifica che la notifica Slack sia stata ricevuta.

(Facoltativo) Se hai specificato un webhook URL per il SlackWebhookEndpoint parametro quando hai distribuito il CloudFormation modello, controlla il canale Slack mappato al webhook. Dovrebbe visualizzare un messaggio con i dettagli dell'account che è stato chiuso e del principale che ha eseguito la chiamata. API

AWSamministratore

Risorse correlate