Gestisci i set di autorizzazioni per più account utilizzando Account Factory for Terraform - 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à.

Gestisci i set di autorizzazioni per più account utilizzando Account Factory for Terraform

Anand Krishna Varanasi e Siamak Heshmati, Amazon Web Services

Riepilogo

Questo modello ti aiuta a integrare AWS Control Tower Account Factory Terraform (AFT) con AWS IAM Identity Centerper configurare autorizzazioni multiple Account AWS su larga scala. Questo approccio utilizza AWS Lambda funzioni personalizzate per automatizzare l'assegnazione dei set di autorizzazioni ai Account AWS quali vengono gestiti come organizzazione. Questo semplifica il processo perché non richiede l'intervento manuale del team di progettazione della piattaforma. Questa soluzione può migliorare l'efficienza operativa, la sicurezza e la coerenza. Promuove un processo di onboarding sicuro e standardizzato per AWS Control Tower, rendendolo indispensabile per le aziende che danno priorità all'agilità e all'affidabilità della propria infrastruttura cloud.

Prerequisiti e limitazioni

Prerequisiti

Limitazioni

  • Questa soluzione può essere utilizzata solo con account gestiti tramite. AWS Control Tower Questa soluzione viene implementata utilizzando Account Factory for Terraform.

  • Questo modello non include istruzioni per configurare la federazione delle identità con una fonte di identità. Per ulteriori informazioni su come completare questa configurazione, consulta i tutorial sulle fonti di identità di IAM Identity Center nella documentazione di IAM Identity Center.

Architettura

Panoramica di AFT

AFT imposta una pipeline Terraform che ti aiuta a fornire e personalizzare i tuoi account. AWS Control Tower AFT segue un GitOps modello che automatizza i processi di fornitura degli account in. AWS Control Tower Si crea un file Terraform per la richiesta di account e lo si archivia nel repository. Questo avvia il flusso di lavoro AFT per il provisioning degli account. Una volta completato il provisioning dell'account, AFT può eseguire automaticamente passaggi di personalizzazione aggiuntivi. Per ulteriori informazioni, consultate l'architettura AFT nella AWS Control Tower documentazione.

AFT fornisce i seguenti repository principali:

  • aft-account-request— Questo repository contiene codice Terraform da creare o aggiornare. Account AWS

  • aft-account-customizations- Questo repository contiene codice Terraform per creare o personalizzare risorse per account.

  • aft-global-customizations— Questo repository contiene codice Terraform per creare o personalizzare risorse per tutti gli account, su larga scala.

  • aft-account-provisioning-customizations- Questo repository gestisce le personalizzazioni che vengono applicate solo a account specifici creati e gestiti con AFT. Ad esempio, è possibile utilizzare questo repository per personalizzare le assegnazioni di utenti o gruppi in IAM Identity Center o per automatizzare la chiusura degli account.

Panoramica della soluzione

Questa soluzione personalizzata include una macchina a AWS Step Functions stati e una AWS Lambda funzione che assegna set di autorizzazioni a utenti e gruppi per più account. La macchina a stati distribuita tramite questo modello funziona insieme alla macchina a stati AFT preesistente. aft_account_provisioning_customizations Un utente invia una richiesta per aggiornare le assegnazioni di utenti e gruppi di IAM Identity Center quando ne Account AWS viene creata una nuova o dopo la creazione dell'account. Lo fanno inserendo una modifica nel repository. aft-account-request La richiesta di creazione o aggiornamento di un account avvia uno stream in Amazon DynamoDB Streams. Questo avvia la funzione Lambda, che aggiorna gli utenti e i gruppi di IAM Identity Center per la destinazione. Account AWS

Di seguito è riportato un esempio dei parametri che è possibile fornire nella funzione Lambda per l'assegnazione di set di autorizzazioni a utenti e gruppi target:

custom_fields = { "InstanceArn" = "<Organization ID>", "PermissionSetArn" = "<Permission set ARN>", "PrincipalId" = "<Principal ID>", }

Di seguito sono riportati i parametri di questa dichiarazione:

  • InstanceArn— L'Amazon Resource Name (ARN) dell'organizzazione

  • PermissionSetArn— L'ARN del set di autorizzazioni

  • PrincipalId— L'identificatore di un utente o di un gruppo in IAM Identity Center a cui verrà applicato il set di autorizzazioni

Nota

È necessario creare il set di autorizzazioni di destinazione, gli utenti e i gruppi prima di eseguire questa soluzione.

Sebbene il InstanceArn valore debba rimanere coerente, è possibile modificare la funzione Lambda per assegnare più set di autorizzazioni a più identità di destinazione. I parametri per i set di autorizzazioni devono terminare con e i parametri per utenti e gruppi devono terminare con. PermissionSetArn PrincipalId È necessario definire entrambi gli attributi. Di seguito è riportato un esempio di come definire più set di autorizzazioni e indirizzare utenti e gruppi:

custom_fields = { "InstanceArn" = "<Organization ID>", "AdminAccessPermissionSetArn" = "<Admin privileges permission set ARN>", "AdminAccessPrincipalId" = "<Admin principal ID>", "ReadOnlyAccessPermissionSetArn" = "<Read-only privileges permission set ARN>", "ReadOnlyAccessPrincipalId" = "<Read-only principal ID>", }

Il diagramma seguente mostra un step-by-step flusso di lavoro che illustra come la soluzione aggiorna i set di autorizzazioni per utenti e gruppi nella destinazione Account AWS su larga scala. Quando l'utente avvia una richiesta di creazione di account, AFT avvia la macchina a stati aft-account-provisioning-framework Step Functions. Questa macchina a stati avvia la funzione extract-alternate-sso Lambda. La funzione Lambda assegna set di autorizzazioni a utenti e gruppi nella destinazione. Account AWS Questi utenti o gruppi possono provenire da qualsiasi fonte di identità configurata in IAM Identity Center. Esempi di fonti di identità includono Okta, Active Directory o Ping Identity.

Flusso di lavoro di aggiornamento dei set di autorizzazioni quando un account viene creato o aggiornato.

Il diagramma mostra il seguente flusso di lavoro quando vengono creati nuovi account:

  1. Un utente inserisce una custom_fields modifica nel aft-account-request repository.

  2. AWS CodePipeline avvia un AWS CodeBuild processo che registra i metadati definiti dall'utente nella tabella Amazon aft-request-audit DynamoDB. Questa tabella contiene attributi per registrare i metadati definiti dall'utente. L'ddb_event_nameattributo definisce il tipo di operazione AFT:

    • Se il valore èINSERT, la soluzione assegna le autorizzazioni impostate alle identità di destinazione al momento della creazione della nuova Account AWS .

    • Se il valore èUPDATE, la soluzione assegna le autorizzazioni impostate alle identità di destinazione dopo la creazione di. Account AWS

  3. Amazon DynamoDB Streams avvia aft_alternate_sso_extract la funzione Lambda.

  4. La funzione aft_alternate_sso_extract Lambda assume un ruolo AWS Identity and Access Management (IAM) nell'account di gestione. AWS Control Tower

  5. La funzione Lambda assegna i set di autorizzazioni agli utenti e ai gruppi di destinazione effettuando una chiamata API AWS SDK per Python (Boto3) create_account_assignment a IAM Identity Center. Recupera il set di autorizzazioni e le assegnazioni di identità dalla tabella Amazon aft-request-audit DynamoDB.

  6. Al termine del flusso di lavoro Step Functions, i set di autorizzazioni vengono assegnati alle identità di destinazione.

Automazione e scalabilità

AFT opera su larga scala utilizzando CodePipeline, Servizi AWS ad esempio AWS CodeBuild, DynamoDB e Lambda, che sono altamente scalabili. Per un'ulteriore automazione, puoi integrare questa soluzione con un sistema di gestione dei ticket o dei problemi, come Jira. Per ulteriori informazioni, consulta la sezione Informazioni aggiuntive di questo modello.

Strumenti

Servizi AWS

  • Account Factory for Terraform (AFT) è lo strumento principale di questa soluzione. Il aft-account-provisioning-customizations repository contiene il codice Terraform per la creazione di personalizzazioni per Account AWS, ad esempio assegnazioni personalizzate di utenti o gruppi di IAM Identity Center.

  • Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.

  • AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.

  • AWS Step Functionsè un servizio di orchestrazione senza server che consente di combinare AWS Lambda funzioni e altro Servizi AWS per creare applicazioni aziendali critiche.

Altri strumenti

  • Python è un linguaggio di programmazione per computer generico.

  • Terraform è uno strumento Infrastructure as Code (IaC) HashiCorp che ti aiuta a creare e gestire risorse cloud e locali.

Archivio di codici

Il repository di codice per AFT è disponibile nel repository GitHub AWS Control Tower Account Factory for Terraform. Il codice per questo pattern è disponibile nel Govern SSO Assignments per l'utilizzo del Account AWS repository Account Factory for Terraform (AFT).

Best practice

Epiche

AttivitàDescrizioneCompetenze richieste

Crea un ruolo IAM.

Nell'account di AWS Control Tower gestione, usa Terraform per creare un ruolo IAM. Questo ruolo ha un accesso tra account e una politica di fiducia che consente l'accesso federato dal provider di identità. Dispone inoltre delle autorizzazioni per concedere l'accesso ad altri account tramite. AWS Control Tower La funzione Lambda assumerà questo ruolo. Esegui questa operazione:

  1. Scarica il AFTCrossAccountRole.tf file dal repository del GitHub codice.

  2. Modificate il AFTCrossAccountRole.tf file in base alle esigenze del vostro AWS ambiente.

  3. In Terraform, inserisci i seguenti comandi per creare questo ruolo IAM:

    terraform init terraform plan terraform apply
  4. Verifica che il ruolo sia stato distribuito correttamente e abbia l'accesso tra account diversi previsto.

AWS DevOps, architetto del cloud

Personalizza la soluzione per il tuo ambiente.

  1. Immettere il seguente comando per clonare il Govern SSO Assignments per l'utilizzo del Account AWS repository Account Factory for Terraform (AFT) sulla workstation locale.

    git clone https://github.com/aws-samples/aft-custom-sso-assignment.git
  2. Nella cartella, apri il file. aft-account-provisioning-customizations/terraform variables.tf

  3. Modificate le variabili in base alle esigenze del vostro ambiente.

  4. Salvare e chiudere il file variables.tf.

  5. Apri il account-request.tf file nel tuo aft-account-request repository.

  6. Modifica i custom_fields parametri per definire i set di autorizzazioni e indirizzare utenti e gruppi. Per ulteriori informazioni, vedere la sezione Architettura di questo modello.

  7. Salvare e chiudere il file account-request.tf.

AWS DevOps, architetto del cloud

Distribuire la soluzione.

  1. Nel repository clonato, copia il contenuto della terraform cartella e incollalo nella terraform cartella del repository. aft-account-provisioning-customizations

  2. Nell'account di gestione AFT, avvia la pipeline. ct-aft-account-provisioning-customizations Questo implementa la soluzione personalizzata. Per istruzioni, consulta Avviare una pipeline in. CodePipeline

  3. Verifica che le risorse siano state distribuite correttamente nell'account di gestione AFT.

AWS DevOps, architetto del cloud

Configura una connessione al repository di codice.

Configura una connessione tra il repository di codice in cui archivierai i file di configurazione e il tuo. Account AWS Per istruzioni, consulta la sezione Aggiungere fornitori di sorgenti di terze parti alle pipeline utilizzate CodeConnections nella AWS CodePipeline documentazione.

AWS DevOps, architetto del cloud
AttivitàDescrizioneCompetenze richieste

Avvia la pipeline AFT per distribuire un nuovo account.

Segui le istruzioni riportate in Fornire un nuovo account con AFT per avviare la pipeline che ne crea uno nuovo Account AWS nel tuo ambiente. AWS Control Tower Attendi il completamento del processo di creazione dell'account.

AWS DevOps, architetto del cloud

Convalida le modifiche.

  1. Apri la AWS IAM Identity Center console.

  2. Nell'elenco degli account, scegli l'account appena creato.

  3. Verifica che i set di autorizzazioni siano stati assegnati per concedere l'accesso agli utenti e ai gruppi target.

AWS DevOps, architetto del cloud

Risoluzione dei problemi

ProblemaSoluzione

L'assegnazione del set di autorizzazioni non funziona.

Assicurati che l'ARN del gruppo, l'id dell'organizzazione e i parametri Lambda siano corretti. Per esempi, consulta la sezione Panoramica della soluzione di questo modello.

L'aggiornamento del codice nel repository non avvia la pipeline.

Questo problema è correlato alla connettività tra l'utente Account AWS e il repository. Nel AWS Management Console, verifica che la connessione sia attiva. Per ulteriori informazioni, consulta GitHub le connessioni nella AWS CodePipeline documentazione.

Informazioni aggiuntive

Integrazione con uno strumento di gestione dei ticket

Puoi scegliere di integrare questa soluzione con uno strumento di gestione dei ticket o dei problemi, come Jira o. ServiceNow Il diagramma seguente mostra un esempio di flusso di lavoro per questa opzione. È possibile integrare lo strumento di gestione dei ticket con gli archivi delle soluzioni AFT utilizzando i connettori dello strumento. Per i connettori Jira, consulta Integrare Jira con. GitHub Per i ServiceNow connettori, vedi Integrazione con. GitHub Puoi persino creare soluzioni personalizzate che richiedono agli utenti di fornire un ID del ticket come parte dell'approvazione della pull request. Se viene approvata una richiesta per crearne una nuova Account AWS utilizzando AFT, quell'evento potrebbe avviare un flusso di lavoro che aggiunge campi personalizzati al aft-account-request GitHub repository. Puoi progettare qualsiasi flusso di lavoro personalizzato che soddisfi i requisiti del tuo caso d'uso.

Flusso di lavoro che utilizza GitHub Actions e uno strumento di gestione dei ticket.

Il diagramma mostra il flusso di lavoro seguente:

  1. Gli utenti richiedono l'assegnazione di un set di autorizzazioni personalizzato in uno strumento di gestione dei ticket, come Jira.

  2. Dopo l'approvazione del caso, inizia un flusso di lavoro per aggiornare l'assegnazione del set di autorizzazioni. (Facoltativo) È possibile utilizzare i plugin per l'automazione personalizzata di questo passaggio.

  3. Gli operatori inviano il codice Terraform con i parametri aggiornati del set di autorizzazioni al aft-account-request repository in un ramo di sviluppo o di funzionalità.

  4. GitHub Le azioni vengono AWS CodeBuild avviate utilizzando una chiamata OpenID Connect (OIDC). CodeBuild esegue scansioni di sicurezza dell'infrastruttura come codice (IaC) utilizzando strumenti come tfsec e checkov. Avvisa gli operatori di eventuali violazioni della sicurezza.

  5. Se non viene rilevata alcuna violazione, GitHub Actions crea una pull request automatica e assegna una revisione del codice ai proprietari del codice. Crea anche un tag per la pull request.

  6. Se il proprietario del codice approva la revisione del codice, viene avviato un altro flusso di lavoro GitHub Actions. Controlla gli standard delle pull request, tra cui:

    • Se il titolo della pull request soddisfa i requisiti.

    • Se il corpo della pull request contiene numeri di casi approvati.

    • Se la pull request è etichettata correttamente.

  7. Se le pull request soddisfano gli standard, GitHub Actions avvia il flusso di lavoro del prodotto AFT. Utilizza avvia la ct-aft-account-request pipeline in AWS CodePipeline. Questa pipeline avvia la macchina a stati aft-account-provisioning-framework personalizzata in Step Functions. Questa macchina a stati funziona come descritto in precedenza nella sezione Panoramica della soluzione di questo modello.