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 AWS autorizzazioni in modo dinamico utilizzando Terraform
Vinicius Elias e Marcos Vinicius Pinto Jordão, Amazon Web Services
Riepilogo
AWS IAM Identity Center migliora AWS Identity and Access Management (IAM) fornendo un hub centralizzato per la gestione dell'accesso Single Sign-On alle applicazioni cloud. Account AWS Tuttavia, la gestione manuale dei set di autorizzazioni di IAM Identity Center può diventare sempre più complessa e soggetta a errori man mano che l'organizzazione cresce. Questa complessità può portare a potenziali lacune di sicurezza e sovraccarichi amministrativi.
Questa soluzione consente di gestire i set di autorizzazioni tramite Infrastructure as Code (IaC) utilizzando una pipeline di integrazione e distribuzione continua (CI/CD) creata con tecnologia nativa. Servizi AWS Consente una perfetta integrazione del meccanismo di assegnazione del set di autorizzazioni con gli eventi del AWS Control Tower ciclo di vita o un ambiente Account Factory for Terraform (AFT). Questo approccio fornisce configurazioni di identità dinamiche sia per quelle nuove che per quelle esistenti. Account AWS
EventBridge Le regole di Amazon monitorano Account AWS la creazione e gli aggiornamenti, il che aiuta le configurazioni delle identità a rimanere sincronizzate con la struttura organizzativa. Dopo aver creato o aggiornato gli account in AWS Control Tower o AFT, viene attivata la pipeline. Valuta un set di file JSON con definizioni di set di autorizzazioni e regole di assegnazione. Quindi la pipeline applica e sincronizza le impostazioni su tutti gli account.
Questo approccio offre i seguenti vantaggi:
Coerenza: elimina la deriva manuale della configurazione all'interno dell'organizzazione AWS
Verificabilità: mantiene una cronologia completa di tutte le modifiche alla gestione delle identità
Scalabilità: applica automaticamente le configurazioni man mano che l'ambiente cresce AWS
Sicurezza: riduce l'errore umano nell'assegnazione delle autorizzazioni
Conformità: facilita il rispetto dei requisiti normativi attraverso modifiche documentate e regole di assegnazione
Prerequisiti e limitazioni
Un ambiente multi-account con AWS Control Tower e configurato. AWS Organizations Facoltativamente, puoi usare AFT con. AWS Control Tower
Un amministratore delegato di IAM Identity Center Account AWS a ricevere la soluzione. Per ulteriori informazioni, consulta Amministrazione delegata nella documentazione di IAM Identity Center.
Un repository del sistema di controllo della versione (VCS) per gestire il codice principale. Per un esempio, consultate il repository della soluzione. GitHub
AWS Risorse necessarie per la gestione del backend Terraform, come un bucket Amazon Simple Storage Service (Amazon S3) e una tabella Amazon DynamoDB.
Limitazioni
La pipeline utilizza AWS risorse native e Terraform open source. La pipeline non è predisposta per effettuare chiamate verso ecosistemi di terze parti.
Alcuni Servizi AWS non sono disponibili in tutti. Regioni AWS Per la disponibilità regionale, vedi AWS Servizi per regione
. Per endpoint specifici, consulta Endpoints and quotas del servizio e scegli il link relativo al servizio.
Architettura
Il diagramma seguente mostra i componenti e il flusso di lavoro di questo modello.

AWS Control Tower flusso di eventi
La soluzione inizia con l'integrazione degli eventi provenienti da entrambi AWS Control Tower o da AFT. La scelta tra l'uno o l'altro servizio viene effettuata al momento dell'implementazione tramite una definizione variabile. Indipendentemente dal metodo utilizzato, la pipeline viene attivata ogni volta che un account viene creato o aggiornato. La pipeline riconcilia le politiche archiviate nell'archivio di gestione dei set di autorizzazioni.
Di seguito sono riportati gli eventi del ciclo di vita: AWS Control Tower
CreateManagedAccount— Quando viene creato un nuovo accountUpdateManagedAccount— Quando viene aggiornato un account esistente
Routing degli eventi
EventBridge funge da servizio centrale di elaborazione degli eventi, registrando gli eventi generati nell'account. AWS Control Tower Quando si verificano degli eventi, li indirizza EventBridge in modo intelligente a un bus di eventi centralizzato nell'account della soluzione. AWS Control Tower gli eventi del ciclo di vita seguono schemi di routing distinti. Se AFT è definito come origine dell'evento, l'account di gestione AFT gestisce gli eventi anziché l'account. AWS Control Tower Questa architettura basata sugli eventi consente risposte automatiche ai cambiamenti organizzativi senza intervento manuale.
Processo di integrazione AFT
Quando gli eventi AWS Control Tower del ciclo di vita raggiungono l'account di gestione AFT, attivano automaticamente più processi a valle intrinseci ad AFT. Una volta completato il flusso di lavoro di personalizzazione dell'account AFT, pubblica un messaggio nell'argomento dedicato Amazon Simple Notification Service (aft-notificationsAmazon SNS). Questo argomento attiva la aft-new-account-forward-event AWS Lambda funzione implementata da questa soluzione. La funzione Lambda invia l'evento al bus degli eventi dell'account della soluzione, dove viene utilizzato per avviare la pipeline.
Infrastruttura come pipeline di codice
La pipeline di soluzioni funziona come un meccanismo di implementazione completamente automatizzato. Il AWS CodePipeline servizio monitora continuamente l'archivio per rilevare eventuali modifiche. Dopo aver rilevato nuovi commit, avvia automaticamente il flusso di lavoro di distribuzione e avvia un processo sequenziale che include fasi di convalida ed esecuzione. Il sistema esegue plan le operazioni Terraform per identificare le modifiche proposte, seguite dai apply comandi Terraform per implementare tali modifiche nell'ambiente. AWS In particolare, la pipeline funziona senza cancelli di approvazione manuale. Questo approccio consente una rapida implementazione delle modifiche all'infrastruttura mantenendo al contempo la verificabilità tramite i registri della pipeline e i file di stato Terraform.
La pipeline sfrutta le funzionalità di Terraform AWS CodeBuild per eseguire le operazioni di Terraform in un ambiente controllato con le autorizzazioni appropriate. Attraverso questo approccio IaC, la pipeline può eseguire operazioni complete di gestione delle autorizzazioni, tra cui:
Creare nuovi set di autorizzazioni.
Aggiorna i set di autorizzazioni esistenti.
Rimuovere i set di autorizzazioni non necessari.
Gestisci l'assegnazione di queste autorizzazioni tra account e gruppi all'interno delle AWS organizzazioni.
Per mantenere la coerenza dell'infrastruttura e prevenire modifiche in conflitto, la soluzione implementa il sistema di gestione dello stato di backend Terraform utilizzando un bucket Amazon S3 e una tabella Amazon DynamoDB dedicata. Questo approccio fornisce una posizione di archiviazione persistente per i file di stato Terraform e meccanismi di blocco dello stato per impedire modifiche simultanee alle stesse risorse.
Il codice Terraform principale utilizza il modulo Terraform ufficiale. AWS permission-sets Questo modulo può gestire dinamicamente i set di autorizzazioni in IAM Identity Center, sulla base di modelli di set di autorizzazioni.
Gestione del controllo del codice sorgente
I modelli di set di autorizzazioni (file JSON) risiedono in un sistema di controllo delle versioni esterno, ad esempio GitHub, che fornisce un archivio centralizzato per le configurazioni di gestione delle identità. Questo approccio stabilisce un'unica fonte di verità per le definizioni dei set di autorizzazioni, consentendo al contempo lo sviluppo collaborativo attraverso pratiche standard di revisione del codice. Gli utenti autorizzati possono apportare modifiche a questi modelli seguendo i processi di gestione delle modifiche organizzative. Questi commit fungono da trigger principale per la pipeline di distribuzione automatizzata, che avvia il processo di aggiornamento dell'infrastruttura.
Strumenti
Servizi AWS
AWS CodeBuildè un servizio di compilazione completamente gestito che consente di compilare il codice sorgente, eseguire test unitari e produrre artefatti pronti per la distribuzione.
AWS CodeConnectionsconsente a AWS risorse e servizi, ad esempio, di connettersi a repository di codice esterni CodePipeline, come. GitHub
AWS CodePipelineaiuta a modellare e configurare rapidamente le diverse fasi di un rilascio software e ad automatizzare i passaggi necessari per rilasciare le modifiche software in modo continuo.
AWS Command Line Interface (AWS CLI) è uno strumento open source che consente di interagire Servizi AWS tramite comandi nella shell della riga di comando.
AWS Control Towerti aiuta a configurare e gestire un ambiente con AWS più account, seguendo le migliori pratiche prescrittive.
Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
Amazon EventBridge è un servizio di bus eventi senza server che ti aiuta a connettere le tue applicazioni con dati in tempo reale provenienti da una varietà di fonti. Ad esempio, AWS Lambda funzioni, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altro modo. Account AWS
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
AWS IAM Identity Centerti aiuta a gestire centralmente l'accesso Single Sign-On (SSO) a tutte le tue applicazioni e a quelle sul cloud. Account AWS
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 Organizationsè un servizio di gestione degli account che ti aiuta a consolidare più account Account AWS in un'organizzazione da creare e gestire centralmente.
Amazon Simple Notification Service (Amazon SNS) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail. Abilita le notifiche push per gli eventi di gestione degli account, assicurando che le parti interessate siano informate di importanti modifiche o azioni all'interno del sistema.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
Altri strumenti
Terraform
è uno strumento di infrastruttura come codice (IaC) HashiCorp che ti aiuta a creare e gestire risorse cloud e locali.
Deposito di codici
Il codice per questo pattern è disponibile nell'organizzazione AWS Samples del repository sample-terraform-aws-permission-sets-pipeline
Best practice
Aggiungi sempre le versioni dei moduli e dei provider Terraform utilizzati per eseguire il codice in produzione.
Utilizza uno strumento di analisi statico del codice, come Checkov
, per scansionare il codice e quindi risolvere i problemi di sicurezza. Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le best practice relative alla concessione dei privilegi minimi e alla sicurezza nella documentazione IAM.
Epiche
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Crea risorse di backend Terraform. | Se non hai ancora creato le tue AWS risorse di backend Terraform, utilizza i seguenti passaggi per creare un bucket Amazon S3
| Amministratore AWS |
Crea un ruolo per più account. | È necessario fornire un ruolo IAM tra account nella configurazione del provider
Questo esempio utilizza la policy IAM AWS gestita AdministratorAccess. Se preferisci, puoi utilizzare una politica più specifica. | Amministratore AWS |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Crea un repository dedicato. | Questa attività presuppone che tu stia utilizzando. GitHub Crea un repository dedicato per archiviare il codice Terraform principale e i file JSON del modello di set di autorizzazioni. | DevOps ingegnere |
Prepara il codice del set di autorizzazioni. | Per informazioni su come strutturare i seguenti file, consultate il codice di esempio ── main.tf ─ output.tf ── providers.jinja ── modelli Copia il contenuto, conserva i | DevOps ingegnere |
Effettua le tue modifiche. | Conferma e invia le modifiche al repository che hai creato in precedenza. Salva il nome del repository e la sua GitHub organizzazione, ad esempio. | DevOps ingegnere |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Scarica il contenuto. | Scaricate (clonate) il contenuto dal repository | DevOps ingegnere |
Soddisfa le variabili. | Crea un
Per informazioni sulle opzioni variabili aggiuntive, consultate il file variables.tf | DevOps ingegnere |
Regola la configurazione del backend Terraform. | Nel
Se preferisci, puoi usare la tua configurazione di backend Terraform. | DevOps ingegnere |
Regola la configurazione del provider Terraform. | Nel
| DevOps ingegnere |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Seleziona il Account AWS. | Ti consigliamo di implementare la soluzione nell'account amministratore delegato di IAM Identity Center. Tuttavia, puoi anche distribuirla nell'account di gestione. AWS Organizations Per accedere all'account selezionato nella stessa regione dell'istanza IAM Identity Center, utilizza il AWS CLI. Assicurati che il ruolo IAM che stai utilizzando sia autorizzato ad assumere il ruolo specificato per il | Amministratore AWS |
Esegui Terraform manualmente. | Per inizializzare, pianificare e applicare le configurazioni, esegui i seguenti comandi Terraform nell'ordine mostrato:
| DevOps ingegnere |
Il controllo dei risultati della distribuzione. | Nell'account amministratore delegato di IAM Identity Center, verifica che la | AWS DevOps |
Completa la CodeConnections configurazione. | Per completare la CodeConnections configurazione, procedi nel seguente modo:
La pipeline dovrebbe ora avere accesso all'archivio dei set di autorizzazioni. Per istruzioni dettagliate, consulta Aggiornare una connessione in sospeso nella documentazione della console Developer Tools. | AWS DevOps |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Esegui la pipeline tramite AWS Control Tower gli aggiornamenti AFT. | Dopo la creazione o la modifica di un account utilizzando AWS Control Tower o AFT (a seconda del tipo di eventi del ciclo di vita scelti), viene avviata la pipeline. | Amministratore AWS |
Esegui la pipeline modificando il codice. | Dopo aver modificato il codice e averlo inviato al | AWS DevOps |
Esegui la pipeline manualmente. | Per avviare la pipeline manualmente, utilizzate la funzione Release change in. AWS CodePipeline | AWS DevOps |
Risoluzione dei problemi
| Problema | Soluzione |
|---|---|
Accesso negato | Verifica di disporre delle autorizzazioni necessarie per distribuire la soluzione. |
CodeConnections problemi |
|
Problemi di esecuzione della pipeline |
|
Problemi di distribuzione dei set di autorizzazioni |
|
Risorse correlate
Servizio AWS documentazione
Gestione Account AWS con set di autorizzazioni (documentazione IAM Identity Center)
Altre risorse
AWS Modulo Permission Sets
(Terraform)
Informazioni aggiuntive
File JSON con set di autorizzazioni di esempio
L'esempio seguente mostra come configurare un set di autorizzazioni utilizzando il file JSON nel repository:
{ "Name": "ps-billing", // Permission set identifier "Comment": "Sample permission set for billing access", // Comment to document the purpose of the permission set "Description": "Billing access in AWS", // Detailed description "SessionDuration": "PT4H", // Session duration = 4 hours (ISO 8601 format) "ManagedPolicies": [ // List of AWS IAM managed policies "arn:aws:iam::aws:policy/job-function/Billing", "arn:aws:iam::aws:policy/job-function/SupportUser", "arn:aws:iam::aws:policy/AWSSupportAccess", "arn:aws:iam::aws:policy/job-function/ViewOnlyAccess" ], "CustomerPolicies": [], // References to IAM policies previously created "CustomPolicy": {}, // Inline IAM policy defined directly in the permission set "PermissionBoundary": { // AWS or customer managed IAM policy to be used as boundary "ManagedPolicy": "", "CustomerPolicy": "" }, "Assignments": [ // Define the assignment rules { "all_accounts": true, // Apply to ALL active AWS accounts in organization "principal": "G_BILLING_USERS", // Group/user name in Identity Center "type": "GROUP", // Can be "GROUP" or "USER" "account_id": [], // List of AWS account ID (empty since all_accounts=true) "account_ou": [], // List of AWS Organizational Unit IDs with target AWS accounts "account_tag": [] // List of tags (key:value) to match AWS Organization accounts tags } ] }
Per ulteriori informazioni, consulta lo schema JSON nella documentazione del modulo AWS Permission Sets
Suggerimenti
Puoi utilizzare i blocchi di importazione
Terraform per importare un set di autorizzazioni esistente nella soluzione. È possibile utilizzare AFT per implementare la pipeline del set di AWS autorizzazioni in un account delegato. Per ulteriori informazioni, consulta AFT
Blueprints.