

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

# Implementa e gestisci AWS Control Tower i controlli utilizzando AWS CDK e CloudFormation
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation"></a>

*Iker Reina Fuente e Ivan Girardi, Amazon Web Services*

## Riepilogo
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation-summary"></a>

Questo modello descrive come utilizzare, implementare AWS CloudFormation e AWS Cloud Development Kit (AWS CDK) amministrare AWS Control Tower controlli preventivi, investigativi e proattivi sotto forma di infrastruttura come codice (IaC). Un [controllo](https://docs.aws.amazon.com/controltower/latest/controlreference/controls.html) (noto anche come *guardrail*) è una regola di alto livello che fornisce una governance continua per l'intero ambiente. AWS Control Tower Ad esempio, è possibile utilizzare i controlli per richiedere la registrazione Account AWS e quindi configurare notifiche automatiche se si verificano eventi specifici relativi alla sicurezza.

AWS Control Tower ti aiuta a implementare controlli preventivi, investigativi e proattivi che regolano le tue AWS risorse e monitorano la conformità su più livelli. Account AWS Ogni controllo applica una singola regola. In questo modello, si utilizza un modello IaC fornito per specificare quali controlli si desidera implementare nel proprio ambiente.

AWS Control Tower i controlli si applicano a un'intera [unità organizzativa (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) e il controllo influisce su tutte le unità organizzative Account AWS all'interno dell'unità organizzativa. Pertanto, quando gli utenti eseguono un'azione in qualsiasi account nella tua landing zone, l'azione è soggetta ai controlli che regolano l'unità organizzativa.

L'implementazione AWS Control Tower dei controlli aiuta a stabilire una solida base di sicurezza per la tua AWS landing zone. Utilizzando questo schema per distribuire i controlli come IAc tramite CloudFormation e AWS CDK, è possibile standardizzare i controlli nella landing zone e distribuirli e gestirli in modo più efficiente. Questa soluzione utilizza [cdk\$1nag](https://github.com/cdklabs/cdk-nag#readme) per scansionare l'applicazione durante la distribuzione. AWS CDK Questo strumento verifica la conformità dell'applicazione alle migliori pratiche. AWS 

Per implementare AWS Control Tower i controlli come IAc, puoi anche usare HashiCorp Terraform anziché. AWS CDK Per ulteriori informazioni, consulta [Distribuire e gestire i AWS Control Tower controlli](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-terraform.html) utilizzando Terraform.

**Destinatari**

Questo modello è consigliato agli utenti che hanno esperienza con AWS Control Tower CloudFormation, AWS CDK, e AWS Organizations.

## Prerequisiti e limitazioni
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation-prereqs"></a>

**Prerequisiti**
+ Active Account AWS è gestita come organizzazione all'interno AWS Organizations e come AWS Control Tower landing zone. Per istruzioni, consulta la sezione [Guida introduttiva](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html) nella AWS Control Tower documentazione.
+ AWS Command Line Interface (AWS CLI), [installato](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurato](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).
+ Node package manager (npm), [installato e configurato](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) per. AWS CDK
+ [Prerequisiti per.](https://docs.aws.amazon.com/cdk/v2/guide/work-with.html#work-with-prerequisites) AWS CDK
+ Autorizzazioni per assumere un ruolo esistente AWS Identity and Access Management (IAM) in un account di distribuzione.
+ Autorizzazioni per assumere un ruolo IAM nell'account di gestione dell'organizzazione che può essere utilizzato per il bootstrap. AWS CDK Il ruolo deve disporre delle autorizzazioni per modificare e distribuire le risorse. CloudFormation Per ulteriori informazioni, consulta [Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html#bootstrapping-howto) nella documentazione. AWS CDK 
+ Autorizzazioni per creare ruoli e politiche IAM nell'account di gestione dell'organizzazione. Per ulteriori informazioni, consulta [Autorizzazioni necessarie per accedere alle risorse IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions-required.html) nella documentazione IAM.

**Limitazioni**
+ Questo modello fornisce istruzioni per l'implementazione di questa soluzione Account AWS, da un account di distribuzione all'account di gestione dell'organizzazione. A scopo di test, è possibile distribuire questa soluzione direttamente nell'account di gestione, ma le istruzioni per questa configurazione non vengono fornite in modo esplicito.
+ Per AWS Control Tower i controlli, questo modello richiede l'uso di [identificatori globali](https://docs.aws.amazon.com/controltower/latest/controlreference/all-global-identifiers.html) nel seguente formato:

  ```
  arn:<PARTITION>:controlcatalog:::control/<CONTROL_CATALOG_OPAQUE_ID>
  ```

  Le versioni precedenti di questo modello utilizzavano [identificatori regionali](https://docs.aws.amazon.com/controltower/latest/controlreference/control-metadata-tables.html) che non sono più supportati. Ti consigliamo di migrare dagli identificatori regionali agli identificatori globali. Gli identificatori globali consentono di gestire i controlli e ampliare il numero di controlli utilizzabili.
**Nota**  
Nella maggior parte dei casi, il valore per `<PARTITION>` è`aws`.

**Versioni del prodotto**
+ AWS Control Tower versione 3.2 o successiva
+ Python versione 3.9 o successiva
+ npm versione 8.9.0 o successiva

## Architecture
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation-architecture"></a>

Questa sezione fornisce una panoramica di alto livello di questa soluzione e dell'architettura stabilita dal codice di esempio. Il diagramma seguente mostra i controlli distribuiti tra i vari account dell'unità organizzativa.

![\[Diagramma dell'architettura dei controlli distribuiti su tutti gli account AWS nell'unità organizzativa.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/7d0d5e37-58ac-4621-b6b0-cb8c1c767ab0/images/47264166-3294-4a53-b0a4-5911086d636f.png)


AWS Control Tower *i controlli sono classificati in base al loro *comportamento e alle loro linee guida*.*

Esistono tre tipi principali di comportamenti di controllo:

1. *I controlli preventivi* sono progettati per impedire il verificarsi di azioni. Questi vengono implementati con [politiche di controllo dei servizi (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) o [politiche di controllo delle risorse (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) in AWS Organizations. Lo stato di un controllo preventivo è **applicato** o **non abilitato**. I controlli preventivi sono supportati in tutti Regioni AWS.

1. I *controlli Detective* sono progettati per rilevare eventi specifici quando si verificano e registrare l'azione AWS CloudTrail. Questi sono implementati con [AWS Config regole](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html). Lo status di un controllo investigativo è **chiaro**, **in violazione** o **non abilitato**. I controlli Detective si applicano solo a quelli Regioni AWS supportati da AWS Control Tower.

1. *I controlli proattivi* analizzano le risorse da cui verrebbero fornite AWS CloudFormation e verificano se sono conformi alle politiche e agli obiettivi aziendali. Le risorse non conformi non verranno fornite. [Questi sono implementati con ganci.AWS CloudFormation](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/hooks.html) **Lo stato di un controllo proattivo è **PASS**, **FAIL** o SKIP.**

Le *linee guida* al controllo si riferiscono alla pratica consigliata su come applicare ciascun controllo al proprio. OUs AWS Control Tower fornisce tre categorie di linee guida: *obbligatorie*, *fortemente raccomandate* e *facoltative*. La guida di un controllo è indipendente dal suo comportamento. Per ulteriori informazioni, consulta [Comportamento e guida al controllo](https://docs.aws.amazon.com/controltower/latest/userguide/controls.html#control-behavior).

## Tools (Strumenti)
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation-tools"></a>

**Servizi AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)è un framework di sviluppo software che consente di definire e fornire Cloud AWS l'infrastruttura nel codice. Il [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) è lo strumento principale per interagire con la tua AWS CDK app.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita tra e. Account AWS Regioni AWS
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)fornisce una visione dettagliata delle risorse presenti Account AWS e di come sono configurate. Ti aiuta a identificare in che modo le risorse sono correlate tra loro e in che modo le loro configurazioni sono cambiate nel tempo.
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)ti aiuta a configurare e gestire un ambiente con AWS più account, seguendo le migliori pratiche prescrittive.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)è un servizio di gestione degli account che consente di consolidare più account Account AWS in un'organizzazione da creare e gestire centralmente.

**Altri strumenti**
+ [cdk\$1nag](https://github.com/cdklabs/cdk-nag#readme) è uno strumento open source che utilizza una combinazione di pacchetti di regole per verificare la conformità delle AWS CDK applicazioni alle migliori pratiche.
+ [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.
+ [Python](https://www.python.org/) è un linguaggio di programmazione per computer generico.

**Archivio di codice**

Il codice per questo modello è disponibile nel GitHub [repository Deploy AWS Control Tower controls using AWS CDK](https://github.com/aws-samples/aws-control-tower-controls-cdk). Si utilizza il file **cdk.json** per interagire con l' AWS CDK app e si utilizza il file **package.json per installare i pacchetti npm.**

## Best practice
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation-best-practices"></a>
+ [Segui il principio del privilegio minimo (documentazione IAM).](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) La policy IAM e la policy di fiducia di esempio fornite in questo modello includono le autorizzazioni minime richieste e gli AWS CDK stack creati nell'account di gestione sono limitati da queste autorizzazioni.
+ Segui le [migliori pratiche per AWS Control Tower gli amministratori](https://docs.aws.amazon.com/controltower/latest/userguide/best-practices.html) (documentazione).AWS Control Tower 
+ Segui le [migliori pratiche per lo sviluppo e l'implementazione dell'infrastruttura cloud con AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) (AWS CDK documentazione).
+ Quando avvii il AWS CDK, personalizza il modello di bootstrap per definire le politiche e gli account affidabili che dovrebbero avere la capacità di leggere e scrivere su qualsiasi risorsa dell'account di gestione. [Per ulteriori informazioni, vedere Personalizzazione del bootstrap.](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html#bootstrapping-customizing)
+ Utilizzate strumenti di analisi del codice, come [cfn\$1nag](https://github.com/stelligent/cfn_nag), per scansionare i modelli generati. CloudFormation Lo strumento cfn-nag cerca modelli nei CloudFormation modelli che potrebbero indicare che l'infrastruttura non è sicura. [Puoi anche usare cdk-nag per controllare i tuoi CloudFormation modelli usando il modulo cloudformation-include.](https://docs.aws.amazon.com/cdk/v2/guide/use_cfn_template.html)

## Epiche
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation-epics"></a>

### Preparati ad attivare i controlli
<a name="prepare-to-enable-the-controls"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea il ruolo IAM nell'account di gestione. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.html) | DevOps ingegnere, General AWS | 
| Bootstrap. AWS CDK | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.html) | DevOps ingegnere, AWS generale, Python | 
| Clonare il repository. | In una shell bash, inserisci il seguente comando. Questo clona i [AWS Control Tower controlli Deploy utilizzando AWS CDK](https://github.com/aws-samples/aws-control-tower-controls-cdk) il repository from. GitHub<pre>git clone https://github.com/aws-samples/aws-control-tower-controls-cdk.git</pre> | DevOps ingegnere, General AWS | 
| Modifica il file AWS CDK di configurazione. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.html) | DevOps ingegnere, General AWS | 

### Abilita i controlli nell'account di gestione
<a name="enable-controls-in-the-management-account"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Assumi il ruolo IAM nell'account di distribuzione. | Nell'account di distribuzione, assumi il ruolo IAM che dispone delle autorizzazioni per distribuire gli AWS CDK stack nell'account di gestione. Per ulteriori informazioni sull'assunzione di un ruolo IAM in AWS CLI, consulta [Utilizzare un ruolo IAM](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) in. AWS CLI | DevOps ingegnere, General AWS | 
| Attivare l'ambiente. | Se usi Linux o macOS:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.html)Se utilizzi Windows:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.html) | DevOps ingegnere, General AWS | 
| Installa le dipendenze. | Dopo aver attivato l'ambiente virtuale, immettete il seguente comando per eseguire lo script **install\$1deps.sh**. Questo script installa le dipendenze richieste.<pre>$ ./scripts/install_deps.sh</pre> | DevOps ingegnere, AWS generale, Python | 
| Implementa lo stack. | Inserisci i seguenti comandi per sintetizzare e distribuire lo stack. CloudFormation <pre>$ npx cdk synth<br />$ npx cdk deploy</pre> | DevOps ingegnere, AWS generale, Python | 

## Risorse correlate
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation-resources"></a>

**AWS documentazione**
+ [Informazioni sui controlli](https://docs.aws.amazon.com/controltower/latest/controlreference/controls.html) (AWS Control Tower documentazione)
+ [Libreria di controlli](https://docs.aws.amazon.com/controltower/latest/controlreference/controls-reference.html) (AWS Control Tower documentazione)
+ [AWS CDK Comandi Toolkit](https://docs.aws.amazon.com/cdk/v2/guide/cli.html#cli-commands) (AWS CDK documentazione)
+ [Implementa e gestisci i AWS Control Tower controlli utilizzando Terraform (Prescriptive Guidance](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-terraform.html))AWS 

**Altre risorse**
+ [Python](https://www.python.org/)

## Informazioni aggiuntive
<a name="deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation-additional"></a>

**Esempio di file constants.py**

Di seguito è riportato un esempio di file **constants.py** aggiornato. **Questo esempio abilita il controllo **AWS-GR\$1DISALLOW\$1CROSS\$1REGION\$1NETWORKING (ID globale:) e il controllo AWS-GR\$1SUBNET\$1AUTO\$1ASSIGN\$1PUBLIC\$1IP\$1DISABLED** (ID globale:). `dvuaav61i5cnfazfelmvn9m6k`** `50z1ot237wl8u1lv5ufau6qqo` Per un elenco di identificatori [globali, IDs consulta Tutti AWS Control Tower gli identificatori](https://docs.aws.amazon.com/controltower/latest/controlreference/all-global-identifiers.html) globali nella documentazione.

```
ACCOUNT_ID = 111122223333
AWS_CONTROL_TOWER_REGION = us-east-2
ROLE_ARN = "arn:aws:iam::111122223333:role/CT-Controls-Role"
GUARDRAILS_CONFIGURATION = [
    {
        "Enable-Control": {
            "dvuaav61i5cnfazfelmvn9m6k": {  # AWS-GR_DISALLOW_CROSS_REGION_NETWORKING
                "Parameters": {
                    "ExemptedPrincipalArns": ["arn:aws:iam::111122223333:role/RoleName"]
                },
                "Tags": [{"key": "Environment", "value": "Production"}]
            },
            ...
        },
        "OrganizationalUnitIds": ["ou-1111-11111111", "ou-2222-22222222"...],
    },
    {
        "Enable-Control": {
            "50z1ot237wl8u1lv5ufau6qqo",  # AWS-GR_SUBNET_AUTO_ASSIGN_PUBLIC_IP_DISABLED
            ...
        },
        "OrganizationalUnitIds": ["ou-2222-22222222"...],
    },
]
```

**Policy IAM**

La seguente policy di esempio consente le azioni minime richieste per abilitare o disabilitare AWS Control Tower i controlli durante la distribuzione AWS CDK degli stack da un account di distribuzione all'account di gestione.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "controltower:EnableControl",
                "controltower:DisableControl",
                "controltower:GetControlOperation",
                "controltower:ListEnabledControls",
                "organizations:AttachPolicy",
                "organizations:CreatePolicy",
                "organizations:DeletePolicy",
                "organizations:DescribeOrganization",
                "organizations:DescribeOrganizationalUnit",
                "organizations:DetachPolicy",
                "organizations:ListAccounts",
                "organizations:ListAWSServiceAccessForOrganization",
                "organizations:ListChildren",
                "organizations:ListOrganizationalUnitsForParent",
                "organizations:ListParents",
                "organizations:ListPoliciesForTarget",
                "organizations:ListRoots",
                "organizations:UpdatePolicy",
                "ssm:GetParameters"
            ],
            "Resource": "*"
        }
    ]
}
```

**Policy di trust**

La seguente policy di fiducia personalizzata consente a un ruolo IAM specifico nell'account di distribuzione di assumere il ruolo IAM nell'account di gestione. Sostituisci quanto segue:
+ `<DEPLOYMENT-ACCOUNT-ID>`è l'ID dell'account di distribuzione
+ `<DEPLOYMENT-ROLE-NAME>`è il nome del ruolo nell'account di distribuzione a cui è consentito assumere il ruolo nell'account di gestione

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<DEPLOYMENT-ACCOUNT-ID>:role/<DEPLOYMENT-ROLE-NAME>"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}
```