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
Account AWS, gestito tramite. AWS Control Tower Per ulteriori informazioni, vedi Guida introduttiva AWS Control Tower.
Account Factory for Terraform, distribuito in un account dedicato nel tuo ambiente. Per ulteriori informazioni, consulta Deploy AWS Control Tower Account Factory for Terraform.
Un'istanza IAM Identity Center, configurata nel tuo ambiente. Per ulteriori informazioni, consulta Guida introduttiva a IAM Identity Center.
Un gruppo IAM Identity Center attivo, configurato. Per ulteriori informazioni, consulta Aggiungere gruppi al tuo IAM Identity Center directory.
Python versione 3.9 o successiva, installata
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 AWSaft-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'organizzazionePermissionSetArn
— L'ARN del set di autorizzazioniPrincipalId
— 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.

Il diagramma mostra il seguente flusso di lavoro quando vengono creati nuovi account:
Un utente inserisce una
custom_fields
modifica nelaft-account-request
repository.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_name
attributo 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
Amazon DynamoDB Streams avvia
aft_alternate_sso_extract
la funzione Lambda.La funzione
aft_alternate_sso_extract
Lambda assume un ruolo AWS Identity and Access Management (IAM) nell'account di gestione. AWS Control TowerLa 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.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
Archivio di codici
Il repository di codice per AFT è disponibile nel repository GitHub AWS Control Tower Account Factory for Terraform
Best practice
Segui le raccomandazioni di sicurezza per AWS Control Tower. Per ulteriori informazioni, consulta Sicurezza in AWS Control Tower.
Segui il principio del privilegio minimo. Per ulteriori informazioni, consulta Applicazione delle autorizzazioni del privilegio minimo.
Crea set di autorizzazioni e ruoli IAM specifici e mirati per gruppi e unità aziendali.
Epiche
Attività | Descrizione | Competenze 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:
| AWS DevOps, architetto del cloud |
Personalizza la soluzione per il tuo ambiente. |
| AWS DevOps, architetto del cloud |
Distribuire la soluzione. |
| 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à | Descrizione | Competenze 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. |
| AWS DevOps, architetto del cloud |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
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 Jiraaft-account-request
GitHub repository. Puoi progettare qualsiasi flusso di lavoro personalizzato che soddisfi i requisiti del tuo caso d'uso.

Il diagramma mostra il flusso di lavoro seguente:
Gli utenti richiedono l'assegnazione di un set di autorizzazioni personalizzato in uno strumento di gestione dei ticket, come Jira.
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.
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à.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. 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.
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.
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 statiaft-account-provisioning-framework
personalizzata in Step Functions. Questa macchina a stati funziona come descritto in precedenza nella sezione Panoramica della soluzione di questo modello.