Gestisci i set di autorizzazioni di AWS IAM Identity Center come codice utilizzando AWS CodePipeline - 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 di AWS IAM Identity Center come codice utilizzando AWS CodePipeline

Creato da Andre Cavalcante (AWS) e Claison Amorim (AWS)

Archivio aws-iam-identity-centerdi codice: -pipeline

Ambiente: produzione

Tecnologie: sicurezza, identità, conformità; DevOps

Servizi AWS: AWS CodeBuild; AWS CodeCommit; AWS CodePipeline; AWS IAM Identity Center

Riepilogo

AWS IAM Identity Center (successore di AWS Single Sign-On) ti aiuta a gestire centralmente l'accesso Single Sign-On (SSO) a tutti i tuoi account e applicazioni AWS. Puoi creare e gestire le identità degli utenti in IAM Identity Center oppure puoi connettere una fonte di identità esistente, come un dominio Microsoft Active Directory o un provider di identità esterno (IdP). IAM Identity Center offre un'esperienza di amministrazione unificata per definire, personalizzare e assegnare un accesso granulare al tuo ambiente AWS utilizzando set di autorizzazioni. I set di autorizzazioni si applicano agli utenti e ai gruppi federati del tuo archivio di identità AWS IAM Identity Center o del tuo IdP esterno.

Questo modello ti aiuta a gestire i set di autorizzazioni IAM Identity Center come codice nel tuo ambiente multi-account gestito come organizzazione in AWS Organizations. Con questo modello, puoi ottenere quanto segue:

  • Creare, eliminare e aggiornare i set di autorizzazioni

  • Crea, aggiorna o elimina assegnazioni di set di autorizzazioni destinate ad account AWS, unità organizzative (OU) o alla radice dell'organizzazione.

Per gestire le autorizzazioni e le assegnazioni di IAM Identity Center come codice, questa soluzione implementa una pipeline di integrazione e distribuzione continua (CI/CD) che utilizza AWS, AWS e CodeCommit AWS. CodeBuild CodePipeline Gestisci i set di autorizzazioni e le assegnazioni nei modelli JSON archiviati nel repository. CodeCommit Quando EventBridge le regole di Amazon rilevano una modifica al repository o rilevano modifiche agli account nell'unità organizzativa di destinazione, avvia una funzione AWS Lambda. La funzione Lambda avvia la pipeline CI/CD che aggiorna i set di autorizzazioni e le assegnazioni in IAM Identity Center.

Prerequisiti e limitazioni

Prerequisiti

  • Un ambiente multi-account gestito come organizzazione in AWS Organizations. Per ulteriori informazioni, consulta Creazione di un'organizzazione.

  • IAM Identity Center, abilitato e configurato con una fonte di identità. Per ulteriori informazioni, consulta Getting Started nella documentazione di IAM Identity Center.

  • Un account membro registrato come amministratore delegato per IAM Identity Center. Per istruzioni, consulta Registrare un account membro nella documentazione di IAM Identity Center.

  • Autorizzazioni per distribuire gli CloudFormation stack AWS nell'account amministratore delegato di IAM Identity Center e nell'account di gestione dell'organizzazione. Per ulteriori informazioni, consulta Controllare l'accesso nella documentazione. CloudFormation

  • Un bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) nell'Identity Center ha delegato l'amministratore a caricare il codice dell'artefatto. Per istruzioni, consulta Creazione di un bucket.

  • L'ID dell'account di gestione dell'organizzazione. Per istruzioni, consulta Finding your AWS account ID.

Limitazioni

  • Questo modello non può essere utilizzato per gestire o assegnare set di autorizzazioni per ambienti con account singolo o per account che non sono gestiti come organizzazione in AWS Organizations.

  • I nomi dei set di autorizzazioni, gli ID di assegnazione e i tipi e gli ID principali di IAM Identity Center non possono essere modificati dopo la distribuzione.

  • Questo modello consente di creare e gestire autorizzazioni personalizzate. Non è possibile utilizzare questo modello per gestire o assegnare autorizzazioni predefinite.

  • Questo modello non può essere utilizzato per gestire un set di autorizzazioni per l'account di gestione dell'organizzazione.

Architettura

Stack tecnologico

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • Amazon EventBridge

  • AWS Identity Center

  • AWS Lambda

  • AWS Organizations

Architettura Target

Utilizzo della pipeline CI/CD e del CodeCommit repository AWS per gestire i set di autorizzazioni in AWS IAM Identity Center.

Il diagramma mostra il flusso di lavoro seguente:

  1. Un utente apporta una delle seguenti modifiche:

    1. Apporta una o più modifiche al repository CodeCommit

    2. Modifica gli account nell'unità organizzativa (OU) in AWS Organizations

  2. Se l'utente ha apportato una modifica all' CodeCommit archivio, la CodeChange EventBridge regola rileva la modifica e avvia una funzione Lambda nell'account amministratore delegato di IAM Identity Center. La regola non reagisce alle modifiche di determinati file del repository, ad esempio il file. README.md

    Se l'utente ha modificato gli account nell'unità organizzativa, la MoveAccount EventBridge regola rileva la modifica e avvia una funzione Lambda nell'account di gestione dell'organizzazione.

  3. La funzione Lambda avviata avvia la pipeline CI/CD in. CodePipeline

  4. CodePipeline CodebuildTemplateValidation CodeBuild avvia il progetto.

  5. Il CodebuildTemplateValidation CodeBuild progetto utilizza uno script Python nel CodeCommit repository per convalidare i modelli di set di autorizzazioni. CodeBuild convalida quanto segue:

    • I nomi dei set di autorizzazioni sono univoci.

    • Gli ID dell'istruzione di assegnazione (Sid) sono unici.

    • Definizioni delle politiche nel CustomPolicy parametro e valide. (Questa convalida utilizza AWS Identity and Access Management Access Analyzer).

    • Gli Amazon Resource Names (ARN) delle policy gestite sono validi.

  6. Il CodebuildPermissionSet CodeBuild progetto utilizza AWS SDK for Python (Boto3) per eliminare, creare o aggiornare i set di autorizzazioni in IAM Identity Center. Sono interessati solo i set di autorizzazioni con il tag. SSOPipeline:true Tutti i set di autorizzazioni gestiti tramite questa pipeline hanno questo tag.

  7. Il CodebuildAssignments CodeBuild progetto utilizza Terraform per eliminare, creare o aggiornare le assegnazioni in IAM Identity Center. I file di stato del backend Terraform sono archiviati in un bucket S3 nello stesso account.

  8. CodeBuild assume un ruolo lookup IAM nell'account di gestione dell'organizzazione. Richiama le organizzazioni e le API identitystore per elencare le risorse necessarie per concedere o revocare le autorizzazioni.

  9. CodeBuild aggiorna i set di autorizzazioni e le assegnazioni in IAM Identity Center.

Automazione e scalabilità

Poiché tutti i nuovi account in un ambiente multi-account vengono spostati in un'unità organizzativa specifica in AWS Organizations, questa soluzione viene eseguita automaticamente e concede i set di autorizzazioni richiesti a tutti gli account specificati nei modelli di assegnazione. Non sono necessarie automazioni o azioni di scalabilità aggiuntive.

In ambienti di grandi dimensioni, il numero di richieste API a IAM Identity Center potrebbe rallentare l'esecuzione di questa soluzione. Terraform e Boto3 gestiscono automaticamente il throttling per ridurre al minimo qualsiasi peggioramento delle prestazioni.

Strumenti

Servizi AWS

  • AWS ti CloudFormation aiuta a configurare le risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su account e regioni AWS.

  • AWS CodeBuild è un servizio di build completamente gestito che ti aiuta a compilare codice sorgente, eseguire test unitari e produrre artefatti pronti per la distribuzione. 

  • AWS CodeCommit è un servizio di controllo delle versioni che consente di archiviare e gestire archivi Git in modo privato, senza dover gestire il proprio sistema di controllo del codice sorgente.

  • AWS ti CodePipeline aiuta a modellare e configurare rapidamente le diverse fasi di un rilascio di software e ad automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.

  • 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, funzioni AWS Lambda, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altri account AWS.

  • AWS IAM Identity Center ti aiuta a gestire centralmente l'accesso Single Sign-On (SSO) a tutti i tuoi account AWS e applicazioni cloud.

  • AWS Organizations è un servizio di gestione degli account che ti aiuta a consolidare più account AWS in un'organizzazione da creare e gestire centralmente.

  • AWS SDK for Python (Boto3) è un kit di sviluppo software che ti aiuta a integrare l'applicazione, la libreria o lo script Python con i servizi AWS.

  • 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.

Repository di codice

Il codice per questo pattern è disponibile nel repository aws-iam-identity-center-pipeline. La cartella templates nel repository include modelli di esempio sia per i set di autorizzazioni che per le assegnazioni. Include anche CloudFormation modelli AWS per la distribuzione della pipeline CI/CD e delle risorse AWS negli account di destinazione.

Best practice

  • Prima di iniziare a modificare il set di autorizzazioni e i modelli di assegnazione, ti consigliamo di pianificare i set di autorizzazioni per la tua organizzazione. Considerate quali devono essere le autorizzazioni, a quali account o unità organizzative deve applicarsi il set di autorizzazioni e quali principali di IAM Identity Center (utenti o gruppi) devono essere interessati dal set di autorizzazioni. I nomi dei set di autorizzazioni, gli ID delle associazioni e i tipi e gli ID principali di IAM Identity Center non possono essere modificati dopo la distribuzione.

  • Rispetta 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àDescrizioneCompetenze richieste

Clonare il repository.

In una shell bash, inserisci il seguente comando. Questo clona il repository aws-iam-identity-center-pipeline da. GitHub

git clone https://github.com/aws-samples/aws-iam-identity-center-pipeline.git
DevOps ingegnere

Definire i set di autorizzazioni.

  1. Nel repository clonato, accedete alla templates/permissionsets cartella e aprite uno dei modelli disponibili.

  2. Nel Name parametro, inserisci un nome per il set di autorizzazioni. Questo valore deve essere univoco e non può essere modificato dopo la distribuzione.

  3. Nel Description parametro, descrivete brevemente il set di autorizzazioni, ad esempio il relativo caso d'uso.

  4. Nel SessionDuration parametro, specifica per quanto tempo un utente può accedere a un account AWS. Utilizza il formato di durata ISO-8601 (Wikipedia), ad esempio PT4H per 4 ore. Se non viene definito alcun valore, l'impostazione predefinita in IAM Identity Center è 1 ora.

  5. Personalizza le politiche nel set di autorizzazioni. Tutti i seguenti parametri sono opzionali e possono essere modificati dopo la distribuzione. È necessario utilizzare almeno uno dei parametri per definire le politiche nel set di autorizzazioni:

    • Nel ManagedPolicies parametro, inserisci gli ARN di tutte le policy gestite da AWS che desideri assegnare.

    • Nel CustomerManagedPolicies parametro, inserisci i nomi di tutte le politiche gestite dai clienti che desideri assegnare. Non utilizzare l'ARN.

    • Nel PermissionBoundary parametro, effettuate le seguenti operazioni per assegnare un limite di autorizzazione:

      • Se utilizzi una policy gestita da AWS come limite di autorizzazione, in PolicyTypeAWS, enter e inPolicy, inserisci l'ARN della policy.

      • Se utilizzi una policy gestita dai clienti come limite di autorizzazione, inPolicyType, enter e in CustomerPolicy, inserisci il nome della policy. Non utilizzare l'ARN.

    • Nel CustomPolicy parametro, definite tutte le politiche personalizzate in formato JSON che desiderate assegnare. Per ulteriori informazioni sulla struttura delle politiche JSON, vedere Panoramica delle politiche JSON.

  6. Salva e chiudi il modello di set di autorizzazioni. Si consiglia di salvare il file con un nome che corrisponda al nome del set di autorizzazioni.

  7. Ripeti questo processo per creare tutti i set di autorizzazioni necessari per l'organizzazione ed eliminare tutti i modelli di esempio che non sono necessari.

DevOps ingegnere

Definisci gli incarichi.

  1. Nel repository clonato, accedete alla templates/assignments cartella, quindi apritela. iam-identitycenter-assigments.json Questo file descrive come assegnare i set di autorizzazioni agli account AWS o alle unità organizzative.

  2. Nel SID parametro, inserisci un identificatore per l'assegnazione. Questo valore deve essere univoco e non può essere modificato dopo la distribuzione.

  3. Nel Target parametro, definisci gli account o le organizzazioni a cui desideri applicare il set di autorizzazioni. I valori validi sono ID account, ID OU, nomi OU oroot. rootassegna il set di autorizzazioni a tutti gli account dei membri dell'organizzazione, escluso l'account di gestione. Inserisci i valori tra virgolette doppie e separa più valori con virgole. Per istruzioni su come trovare gli ID, vedere Visualizzazione dei dettagli di un account o Visualizzazione dei dettagli di un'unità organizzativa.

  4. Nel PrincipalType parametro, inserisci il tipo di principale IAM Identity Center che sarà interessato dal set di autorizzazioni. I valori validi sono USER e GROUP. Questo valore non può essere modificato dopo la distribuzione.

  5. Nel PrincipalID parametro, inserisci il nome dell'utente o del gruppo nell'archivio di identità di IAM Identity Center che sarà interessato dal set di autorizzazioni. Questo valore non può essere modificato dopo la distribuzione.

  6. Nel PermissionSetName parametro, inserisci il nome del set di autorizzazioni che desideri assegnare.

  7. Ripeti i passaggi da 2 a 6 per creare tutte le assegnazioni necessarie in questo file. In genere, esiste un'assegnazione per ogni set di autorizzazioni. Eliminare eventuali assegnazioni di esempio che non sono obbligatorie.

  8. Salvare e chiudere il file iam-identitycenter-assigments.json.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Carica i file in un bucket S3.

  1. Comprimi il repository clonato in un file.zip.

  2. Accedi all'account amministratore delegato di IAM Identity Center.

  3. Apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  4. Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).

  5. Scegli il bucket che desideri utilizzare per implementare questa soluzione.

  6. Carica il file.zip nel bucket S3 di destinazione. Per istruzioni, consulta la pagina Uploading objects.

DevOps ingegnere

Implementa le risorse nell'account amministratore delegato di IAM Identity Center.

  1. Nell'account amministratore delegato IAM Identity Center, apri la CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/.

  2. Implementa il modello. iam-identitycenter-pipeline.yaml Assegna allo stack un nome chiaro e descrittivo e aggiorna i parametri come indicato. Per istruzioni, consultate Creazione di uno stack nella documentazione. CloudFormation

DevOps ingegnere

Distribuisci risorse nell'account di gestione di AWS Organization.

  1. Accedi all'account di gestione dell'organizzazione.

  2. Apri la CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/.

  3. Nella barra di navigazione, scegli il nome della regione AWS attualmente visualizzata. Quindi scegli la us-east-1 regione. Questa regione è necessaria affinché la MoveAccount EventBridge regola possa rilevare CloudTrail gli eventi AWS associati ai cambiamenti dell'organizzazione.

  4. Implementa il iam-identitycenter-organization modello. Assegna allo stack un nome chiaro e descrittivo e aggiorna i parametri come indicato. Per istruzioni, consultate Creazione di uno stack nella documentazione. CloudFormation

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Aggiorna i set di autorizzazioni e le assegnazioni.

Quando la EventBridge regola MoveAccount Amazon rileva modifiche agli account dell'organizzazione, la pipeline CI/CD si avvia automaticamente e aggiorna i set di autorizzazioni. Ad esempio, se aggiungi un account a un'unità organizzativa specificata nel file JSON delle assegnazioni, la pipeline CI/CD applicherà l'autorizzazione impostata al nuovo account.

Se desideri modificare i set di autorizzazioni e le assegnazioni distribuiti, aggiorna i file JSON e poi esegui il commit nell' CodeCommit archivio nell'account amministratore delegato di IAM Identity Center. Per istruzioni, consulta Creare un commit nella documentazione. CodeCommit

Tenete presente quanto segue quando utilizzate la pipeline CI/CD per gestire i set di autorizzazioni e le associazioni precedentemente distribuiti:

  • Se si modifica il nome di un set di autorizzazioni, la pipeline CI/CD elimina il set di autorizzazioni originale e ne crea uno nuovo.

  • Questa pipeline gestisce solo i set di autorizzazioni che hanno il tag. SSOPipeline:true

  • È possibile avere più set di autorizzazioni e modelli di assegnazione nella stessa cartella del repository.

  • Se si elimina un modello, la pipeline elimina l'assegnazione o il set di autorizzazioni.

  • Se elimini un intero blocco JSON di assegnazione, la pipeline elimina l'assegnazione da IAM Identity Center.

  • Non puoi eliminare un set di autorizzazioni assegnato a un account AWS. Innanzitutto, è necessario annullare l'assegnazione del set di autorizzazioni.

DevOps ingegnere

Risoluzione dei problemi

ProblemaSoluzione

Errori di accesso negato

Conferma di disporre delle autorizzazioni necessarie per distribuire i CloudFormation modelli e le risorse definite al loro interno. Per ulteriori informazioni, consulta Controllo dell'accesso nella CloudFormation documentazione.

Errori della pipeline nella fase di convalida

Questo errore viene visualizzato se sono presenti errori nel set di autorizzazioni o nei modelli di assegnazione.

  1. In CodeBuild, visualizza i dettagli della build.

  2. Nel registro di compilazione, trova l'errore di convalida che fornisce ulteriori informazioni sulla causa del fallimento della compilazione.

  3. Aggiorna il set di autorizzazioni o i modelli di assegnazione, quindi esegui il commit nel repository.

  4. La pipeline CI/CD riavvia il progetto. CodeBuild Monitora lo stato per confermare che l'errore di convalida è stato risolto.

Risorse correlate