

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

# Genera dinamicamente una policy IAM con IAM Access Analyzer utilizzando Step Functions
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions"></a>

*Thomas Scott, Koen van Blijderveen, Adil El Kanabi e Rafal Pawlaszek, Amazon Web Services*

## Riepilogo
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-summary"></a>

*Least-Privilege* è la migliore pratica di sicurezza per concedere le autorizzazioni minime necessarie per eseguire un'attività. Implementare l'accesso con privilegi minimi in un account Amazon Web Services (AWS) già attivo può essere difficile perché non si desidera impedire involontariamente agli utenti di svolgere le proprie mansioni lavorative modificando le loro autorizzazioni. Prima di poter implementare le modifiche alle policy AWS Identity and Access Management (IAM), devi comprendere le azioni e le risorse eseguite dagli utenti dell'account.

Questo modello è progettato per aiutarti ad applicare il principio dell'accesso con privilegi minimi, senza bloccare o rallentare la produttività del team. Descrive come utilizzare IAM Access Analyzer e AWS Step Functions generare dinamicamente una policy up-to-date IAM per il tuo ruolo, in base alle azioni attualmente eseguite nell'account. La nuova policy è progettata per consentire l'attività corrente ma rimuovere eventuali privilegi elevati e non necessari. È possibile personalizzare la policy generata definendo regole di autorizzazione e rifiuto e la soluzione integra le regole personalizzate.

Questo modello include opzioni per implementare la soluzione con AWS Cloud Development Kit (AWS CDK) o HashiCorp CDK for Terraform (CDKTF). È quindi possibile associare la nuova policy al ruolo utilizzando una pipeline di integrazione e distribuzione continue (CI/CD). Se disponi di un'architettura multi-account, puoi implementare questa soluzione in qualsiasi account in cui desideri generare policy IAM aggiornate per i ruoli, aumentando la sicurezza dell'intero ambiente. Cloud AWS 

## Prerequisiti e limitazioni
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS con un AWS CloudTrail trail abilitato.
+ Autorizzazioni IAM per quanto segue:
  + Crea e distribuisci flussi di lavoro Step Functions. Per ulteriori informazioni, consulta [Azioni, risorse e chiavi di condizione per AWS Step Functions](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstepfunctions.html) (documentazione Step Functions).
  + Creare AWS Lambda funzioni. Per ulteriori informazioni, consulta [Ruolo di esecuzione e autorizzazioni utente (documentazione](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-permissions) Lambda).
  + Creare ruoli IAM. Per ulteriori informazioni, consulta [Creazione di un ruolo per delegare le autorizzazioni a un utente IAM (documentazione IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)).
+ npm installato. Per ulteriori informazioni, vedere [Download e installazione di Node.js e npm (documentazione di npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)).
+ Se si distribuisce questa soluzione con AWS CDK (Opzione 1):
  + AWS CDK Toolkit, installato e configurato. Per ulteriori informazioni, consulta [Installare il AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install) (AWS CDK documentazione).
+ Se state distribuendo questa soluzione con CDKTF (opzione 2):
  + CDKTF, installato e configurato. Per ulteriori informazioni, consulta [Install CDK for Terraform](https://learn.hashicorp.com/tutorials/terraform/cdktf-install?in=terraform/cdktf) (documentazione CDKTF).
  + Terraform, installato e configurato. Per ulteriori informazioni, consulta [Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) (documentazione Terraform).
+ AWS Command Line Interface (AWS CLI) installato e configurato localmente per il tuo Account AWS. Per ulteriori informazioni, vedere [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) (AWS CLI documentazione).

**Limitazioni**
+ Questo modello non applica la nuova policy IAM al ruolo. Al termine di questa soluzione, la nuova policy IAM viene archiviata in un AWS CodeCommit repository. Puoi utilizzare una CI/CD pipeline per applicare le policy ai ruoli del tuo account.

## Architecture
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-architecture"></a>

**Architettura Target**

![\[Il flusso di lavoro Step Functions genera una nuova policy e la memorizza in CodeCommit.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/cb9ee0c9-3fe0-43d9-9dd2-1aedb705c78f/images/eb13a5db-f803-40b1-9a8c-4ef13d584cd4.png)


1. Una regola di EventBridge eventi Amazon pianificata regolarmente avvia un flusso di lavoro Step Functions. Questo programma di rigenerazione viene definito come parte della configurazione di questa soluzione.

1. Nel flusso di lavoro Step Functions, una funzione Lambda genera gli intervalli di date da utilizzare per analizzare l'attività dell'account nei registri. CloudTrail 

1. La fase successiva del flusso di lavoro richiama l'API IAM Access Analyzer per iniziare a generare la policy.

1. Utilizzando l'Amazon Resource Name (ARN) del ruolo specificato durante la configurazione, IAM Access Analyzer analizza CloudTrail i log per individuare le attività entro la data specificata. In base all'attività, IAM Access Analyzer genera una policy IAM che consente solo le azioni e i servizi utilizzati dal ruolo durante l'intervallo di date specificato. Una volta completato questo passaggio, questo passaggio genera un ID del lavoro.

1. La fase successiva del flusso di lavoro verifica l'ID del lavoro ogni 30 secondi. Quando viene rilevato l'ID del lavoro, questo passaggio utilizza l'ID del lavoro per chiamare l'API IAM Access Analyzer e recuperare la nuova policy IAM. IAM Access Analyzer restituisce la policy come file JSON.

1. La fase successiva del flusso di lavoro inserisce il file **/policy.json** <IAM role name>in un bucket Amazon Simple Storage Service (Amazon S3). Definisci questo bucket S3 come parte della configurazione di questa soluzione.

1. Una notifica di evento Amazon S3 avvia una funzione Lambda.

1. La funzione Lambda recupera la policy dal bucket S3, integra le regole personalizzate definite nei **file allow.json e **deny.json****, quindi invia la policy aggiornata a. CodeCommit Il CodeCommit repository, il ramo e il percorso della cartella vengono definiti durante la configurazione di questa soluzione.

## Tools (Strumenti)
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-tools"></a>

**Servizi AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)è un framework di sviluppo software che consente di definire e fornire Cloud AWS l'infrastruttura nel codice.
+ [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) è un kit di sviluppo cloud a riga di comando che ti aiuta a interagire con la tua AWS Cloud Development Kit (AWS CDK) app.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)ti aiuta a controllare la governance, la conformità e il rischio operativo del tuo Account AWS.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)è un servizio di controllo delle versioni che consente di archiviare e gestire in modo privato gli archivi Git, senza dover gestire il proprio sistema di controllo del codice sorgente.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) è uno strumento open source che consente di interagire Servizi AWS tramite comandi nella shell della riga di comando.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle. Questo modello utilizza [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html), una funzionalità di IAM, per analizzare CloudTrail i log per identificare le azioni e i servizi che sono stati utilizzati da un'entità IAM (utente o ruolo) e quindi generare una policy IAM basata su tale attività.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è 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.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)è un servizio di orchestrazione senza server che consente di combinare AWS Lambda funzioni e altro Servizi AWS per creare applicazioni aziendali critiche. In questo modello, utilizzi [le integrazioni dei servizi AWS SDK in Step Functions per richiamare le azioni](https://docs.aws.amazon.com/step-functions/latest/dg/supported-services-awssdk.html) dell'API di servizio dal tuo flusso di lavoro.

**Altri strumenti**
+ [CDK for Terraform (CDKTF)](https://learn.hashicorp.com/collections/terraform/cdktf) ti aiuta a definire l'infrastruttura come codice (IaC) utilizzando linguaggi di programmazione comuni, come Python e Typescript.
+ [Lerna](https://lerna.js.org/docs/introduction) è un sistema di compilazione per la gestione e la pubblicazione di più pacchetti o pacchetti dallo stesso repository. JavaScript TypeScript 
+ [Node.js](https://nodejs.org) è un ambiente di JavaScript runtime basato sugli eventi progettato per la creazione di applicazioni di rete scalabili.
+ [npm](https://docs.npmjs.com/about-npm) è un registro software che viene eseguito in un ambiente Node.js e viene utilizzato per condividere o prendere in prestito pacchetti e gestire la distribuzione di pacchetti privati.

**Archivio di codice**

Il codice di questo modello è disponibile nel repository GitHub [Automated IAM Access Analyzer Role Policy Generator](https://github.com/aws-samples/automated-iam-access-analyzer).

## Epiche
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-epics"></a>

### Preparati per l'implementazione
<a name="prepare-for-deployment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clona il repository. | Il comando seguente clona il repository [Automated IAM Access Analyzer Role Policy Generator](https://github.com/aws-samples/automated-iam-access-analyzer) (). GitHub<pre>git clone https://github.com/aws-samples/automated-iam-access-analyzer.git</pre> | Sviluppatore di app | 
| Installa Lerna. | Il comando seguente installa Lerna.<pre>npm i -g lerna</pre> | Sviluppatore di app | 
| Imposta le dipendenze. | Il comando seguente installa le dipendenze per il repository.<pre>cd automated-iam-access-analyzer/<br />npm install && npm run bootstrap</pre> | Sviluppatore di app | 
| Compila il codice. | Il comando seguente verifica, crea e prepara i pacchetti zip delle funzioni Lambda.<pre>npm run test:code<br />npm run build:code<br />npm run pack:code</pre> | Sviluppatore di app | 
| Costruisci i costrutti. | Il comando seguente crea le applicazioni di sintesi dell'infrastruttura, sia per CDKTF che per CDKTF. AWS CDK <pre>npm run build:infra</pre> |  | 
| Configura eventuali autorizzazioni personalizzate. | Nella cartella **repo** del repository clonato, modifica i file **allow.json e **deny.json**** per definire eventuali autorizzazioni personalizzate per il ruolo. **Se i **file allow.json e deny.json** contengono la stessa autorizzazione, viene applicata l'autorizzazione di negazione.** | Amministratore AWS, sviluppatore di app | 

### Opzione 1: distribuisci la soluzione utilizzando AWS CDK
<a name="option-1-deploy-the-solution-using-cdk"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Distribuisci lo AWS CDK stack. | Il comando seguente distribuisce l'infrastruttura tramite. AWS CloudFormation Definire i seguenti parametri:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions.html)<pre>cd infra/cdk<br />cdk deploy —-parameters roleArn=<NAME_OF_ROLE> \<br />—-parameters trailArn=<TRAIL_ARN> \<br />--parameters schedule=<CRON_EXPRESSION_TO_RUN_SOLUTION> \<br />[ --parameters trailLookBack=<TRAIL_LOOKBACK> ]</pre>Le parentesi quadre indicano parametri opzionali. | Sviluppatore di app | 
| (Facoltativo) Attendi la nuova politica. | Se l'itinerario non contiene una quantità ragionevole di attività storiche per il ruolo, attendi di avere la certezza che ci sia abbastanza attività registrata da consentire a IAM Access Analyzer di generare una policy accurata. Se il ruolo è attivo nell'account da un periodo di tempo sufficiente, questo periodo di attesa potrebbe non essere necessario. | Amministratore AWS | 
| Esamina manualmente la policy generata. | Nel tuo CodeCommit repository, esamina il **file.json** <ROLE\$1ARN>generato per confermare che le autorizzazioni di autorizzazione e negazione siano appropriate per il ruolo. | Amministratore AWS | 

### Opzione 2: implementa la soluzione utilizzando CDKTF
<a name="option-2-ndash-deploy-the-solution-using-cdktf"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Sintetizza il modello Terraform. | Il comando seguente sintetizza il modello Terraform.<pre>lerna exec cdktf synth --scope @aiaa/tfm</pre> | Sviluppatore di app | 
| Distribuisci il modello Terraform. | Il comando seguente accede alla directory che contiene l'infrastruttura definita da CDKTF.<pre>cd infra/cdktf</pre>Il comando seguente distribuisce l'infrastruttura nella destinazione. Account AWS Definire i seguenti parametri:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions.html)<pre>TF_VAR_accountId=<account_ID> \<br /> TF_VAR_region=<region> \<br /> TF_VAR_roleArns=<selected_role_ARN> \<br /> TF_VAR_trailArn=<trail_ARN> \<br /> TF_VAR_schedule=<schedule_expression> \<br /> [ TF_VAR_trailLookBack=<trail_look_back> ] \ cdktf deploy</pre>Le parentesi quadre indicano parametri opzionali. | Sviluppatore di app | 
| (Facoltativo) Attendi la nuova politica. | Se l'itinerario non contiene una quantità ragionevole di attività storiche per il ruolo, attendi di avere la certezza che ci sia abbastanza attività registrata da consentire a IAM Access Analyzer di generare una policy accurata. Se il ruolo è attivo nell'account da un periodo di tempo sufficiente, questo periodo di attesa potrebbe non essere necessario. | Amministratore AWS | 
| Esamina manualmente la policy generata. | Nel tuo CodeCommit repository, esamina il **file.json** <ROLE\$1ARN>generato per confermare che le autorizzazioni di autorizzazione e negazione siano appropriate per il ruolo. | Amministratore AWS | 

## Risorse correlate
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-resources"></a>

**AWS resources**
+ [Endpoint e quote IAM Access Analyzer](https://docs.aws.amazon.com/general/latest/gr/access-analyzer.html)
+ [Configurazione di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Iniziare con AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Autorizzazioni con privilegi minimi](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)

**Altre risorse**
+ [CDK](https://www.terraform.io/cdktf) per Terraform (sito web Terraform)