

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

# Attestabile AMIs
<a name="attestable-ami"></a>

Un’AMI attestabile è un’Amazon Machine Image (AMI) con un hash crittografico corrispondente che ne rappresenta tutto il contenuto. L’hash viene generato durante il processo di creazione dell’AMI e viene calcolato in base all’intero contenuto dell’AMI, incluse le applicazioni, il codice e il processo di avvio.

## Mantenere uno stato attestabile
<a name="maintain-attestability"></a>

Le misurazioni di un’istanza si basano sul suo stato di avvio iniziale. Qualsiasi modifica al software o al codice apportata all’istanza dopo l’avvio e che persiste dopo il riavvio modificherà la misurazione dell’istanza dopo il riavvio. Se le misurazioni vengono alterate, si discostano dalle misurazioni di riferimento dell’AMI attestabile e l’istanza non sarà più in grado di AWS KMS attestarla con successo dopo il riavvio dell’istanza. Pertanto, affinché Attestable AMIs sia utile, le istanze devono tornare allo stato di avvio originale dopo il riavvio.

Il ritorno costante allo stato di avvio originale garantisce che un’istanza possa attestarsi correttamente dopo il riavvio. Le seguenti utilità possono essere utilizzate per assicurare che le istanze rimangano attestabili dopo il riavvio:
+ `erofs`: file system di sola lettura avanzato. Questa utilità garantisce che il filesystem root sia di sola lettura. Con questa utilità, le scritture sul filesystem, tra cui, e `/etc`, `/run` e `/var`, vengono archiviate in memoria e perse al riavvio dell’istanza, lasciando il filesystem root nello stato di avvio originale. Per ulteriori informazioni, consulta la [documentazione erofs](https://docs.kernel.org/filesystems/erofs.html).
+ `dm-verity`: fornisce protezione dell’integrità per il filesystem root di sola lettura. L’utilità calcola un hash dei blocchi del filesystem e lo memorizza nella riga di comando del kernel. Ciò permette al kernel di verificare l’integrità del filesystem durante l’avvio. Per ulteriori informazioni, consulta la [documentazione dm-verity](https://docs.kernel.org/admin-guide/device-mapper/verity.html).

## Requisiti per la creazione di Attestable AMIs
<a name="ami-attestable-requirements"></a>

Attestable AMIs ha i seguenti requisiti:
+ **Sistema operativo di base**: Amazon Linux 2023 e [NixOS](https://github.com/aws/nitrotpm-attestation-samples)
+ **Architettura ** – architettura `x86_64` o `arm64`
+ **Supporto TPM**: NitroTPM deve essere abilitato. Per ulteriori informazioni, consulta [Requisiti per l'utilizzo di NitroTPM con istanze Amazon EC2](enable-nitrotpm-prerequisites.md).
+ **Modalità di avvio**: la modalità di avvio UEFI deve essere abilitata.

**Topics**
+ [Mantenere uno stato attestabile](#maintain-attestability)
+ [Requisiti per la creazione di Attestable AMIs](#ami-attestable-requirements)
+ [Creazione di Attestable AMIs](#sample-ami)
+ [Crea la descrizione dell’immagine di esempio](build-sample-ami.md)
+ [Descrizione dell’immagine di esempio di Amazon Linux 2023](al2023-isolated-compute-recipe.md)
+ [Personalizza la descrizione delle immagini di esempio](customize-sample-ami.md)
+ [Calcolo delle misurazioni PCR](create-pcr-compute.md)

## Creazione di Attestable AMIs
<a name="sample-ami"></a>

Per creare un’AMI attestabile, dovrai utilizzare Amazon Linux 2023 con [KIWI Next Generation (KIWI NG](https://osinside.github.io/kiwi/)). Amazon Linux 2023 fornisce tutto il software e le utilità necessari per creare un’AMI attestabile utilizzando KIWI NG. 

KIWI NG è uno strumento open source per la creazione di immagini preconfigurate basate su Linux. KIWI NG utilizza *descrizioni di immagini* XML che definiscono il contenuto di un’immagine. La descrizione dell'immagine specifica il sistema operativo di base, il software, la configurazione del kernel e gli script da eseguire per creare un' ready-to-useAMI per un caso d'uso specifico.

Durante la fase di compilazione dell’AMI, devi utilizzare l’utilità `nitro-tpm-pcr-compute`per generare le misurazioni di riferimento basate sull’Unified Kernel Image (UKI) generata da KIWI NG. Per ulteriori informazioni sull’uso dell’utilità `nitro-tpm-pcr-compute`, consulta [Calcola le misurazioni PCR per un’AMI personalizzata](create-pcr-compute.md).

AWS fornisce un esempio di descrizione dell'immagine Amazon Linux 2023 che include tutte le configurazioni necessarie per configurare un'istanza EC2 in un ambiente di calcolo isolato. Per ulteriori informazioni, consulta [Crea la descrizione dell’immagine di esempio di Amazon Linux 2023](build-sample-ami.md).

# Crea la descrizione dell’immagine di esempio di Amazon Linux 2023
<a name="build-sample-ami"></a>

AWS fornisce un esempio di descrizione dell'immagine Amazon Linux 2023 che puoi usare come punto di partenza per creare il tuo Attestable personalizzato AMIs per i tuoi carichi di lavoro. La descrizione dell’immagine di esempio include Amazon Linux 2023 come sistema operativo di base, configurazioni `dm-verity` ed `erofs` per l’immutabilità del file system e rimuove tutti gli accessi interattivi (come SSH, connessione all’istanza EC2 e console seriale) per creare un ambiente di calcolo isolato. Per ulteriori informazioni sulla descrizione dell’immagine di esempio, consulta il [repository Github](https://github.com/amazonlinux/kiwi-image-descriptions-examples).

La descrizione dell’immagine di esempio installa automaticamente gli strumenti NitroTPM (`nitro-tpm-pcr-compute` e `nitro-tpm-attest`) nell’immagine creata nella directory `/usr/bin/`. Questo garantisce che gli strumenti siano preinstallati sulle istanze avviate dall’AMI.

La descrizione dell’immagine di esempio comprende uno script, `edit_boot_install.sh`, che include i comandi necessari per generare le misurazioni di riferimento. Lo script monta il file immagine disco raw (`.raw`) creato da KIWI NG su un dispositivo loopback, individua l’UKI, che ha l’estensione `.efi`, quindi esegue l’utilità `nitro-tpm-pcr-compute` per generare le misurazioni di riferimento per l’AMI. Lo script viene automaticamente eseguito da KIWI NG durante la compilazione.

Questo tutorial mostra come creare la descrizione dell’immagine di esempio per generare un’AMI attestabile.

Per ulteriori informazioni sulla creazione di descrizioni delle immagini, consulta la seguente documentazione di KIWI NG:
+ [Quick Start](https://osinside.github.io/kiwi/quickstart.html)
+ [Descrizione delle immagini](https://osinside.github.io/kiwi/image_description.html)
+ [Descrizione dell’immagine di esempio di Amazon Linux 2023](https://github.com/amazonlinux/kiwi-image-descriptions-examples)

Prerequisiti

La tua identità IAM deve disporre delle seguenti autorizzazioni per completare questo tutorial:
+ `ebs:CompleteSnapshot``ebs:StartSnapshot`, e così via `ebs:PutSnapshotBlock` `arn:aws:ec2:*::snapshot/*`
+ `ec2:RegisterImage`su tutte le risorse

**Per creare la descrizione dell’immagine di esempio di Amazon Linux 2023 utilizzando KIWI NG**

1. Avvia un'istanza Amazon EC2 utilizzando l'AMI AL2023 più recente. Per assicurarti che l’istanza disponga di spazio di archiviazione sufficiente per creare l’AMI, verifica di fornire almeno 12 GB di spazio di archiviazione.

1. Installare le dipendenze richieste. Il seguente comando installa le seguenti utilità:
   + `kiwi-cli`
   + `veritysetup`
   + `erofs-utils`
   + `aws-nitro-tpm-tools`

   ```
   sudo dnf install -y kiwi-cli python3-kiwi kiwi-systemdeps-core python3-poetry-core qemu-img veritysetup erofs-utils git cargo aws-nitro-tpm-tools
   ```

1. Installa l’utilità `coldsnap`. Questa utilità consente di creare snapshot di Amazon EBS da dati di immagini non elaborati. Userai questa utilità per creare uno snapshot EBS dal file di immagine del disco non elaborato creato da KIWI NG.

   ```
   git clone https://github.com/awslabs/coldsnap.git
   cd coldsnap
   cargo install --locked coldsnap
   cd ..
   ```

1. Ottieni i file di descrizione dell’immagine di esempio.

   ```
   sudo dnf install kiwi-image-descriptions-examples
   ```

   I file di descrizione dell’immagine di esempio vengono scaricati nella seguente directory: `/usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example`

1. Crea la descrizione dell’immagine di esempio utilizzando il comando `system build` KIWI NG. Il seguente comando crea un file di immagine non elaborato del disco nella directory `./image`.

   ```
   sudo kiwi-ng \
   --color-output \
   --loglevel 0 \
   system build \
   --description /usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example \
   --target-dir ./image
   ```

   Per ulteriori informazioni, consulta la documentazione relativa alla [compilazione del sistema kiwi-ng](https://osinside.github.io/kiwi/commands/system_build.html).

1. Ottieni le misure di riferimento per l’AMI. Le misurazioni vengono generate dall’utilità `nitro-tpm-pcr-compute`durante la creazione dell’immagine nel passaggio precedente. Puoi individuare le misurazioni di riferimento nel seguente file: `./image/pcr_measurements.json`.

   Le misurazioni sono fornite nel seguente formato JSON:

   ```
   {
     "Measurements": {
       "HashAlgorithm": "SHA384 { ... }",
       "PCR4": "PCR4_measurement",
       "PCR7": "PCR7_measurement",
       "PCR12": "PCR12_measurement"
     }
   }
   ```

1. Utilizza l’utilità `coldsnap` per caricare l’immagine grezza del disco creata da KIWI NG su uno snapshot EBS. Questo comando restituisce l’ID dello snapshot. Prendi nota dell’ID, ti servirà per il passaggio successivo.

   ```
   SNAPSHOT=$(.cargo/bin/coldsnap upload ./image/al2023*.raw)
   echo "Created snapshot: $SNAPSHOT"
   ```

   Per ulteriori informazioni sull'`coldsnap`utilità, consulta il repository [coldsnap GitHub ](https://github.com/awslabs/coldsnap).

1. Registra un’AMI abilitata per TPM 2.0 con la modalità di avvio UEFI utilizzando lo snapshot del passaggio precedente. Per `--architecture`, specifica `x86_64` per Intel o `arm64` per Graviton.

   ```
   aws ec2 register-image \
   --name "attestable_isolated_al2023_ami" \
   --virtualization-type hvm \
   --boot-mode uefi \
   --architecture x86_64|arm64 \
   --root-device-name /dev/xvda \
   --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=${SNAPSHOT}} \
   --tpm-support v2.0 \
   --ena-support
   ```

# Descrizione dell’immagine di esempio di Amazon Linux 2023
<a name="al2023-isolated-compute-recipe"></a>

La descrizione dell’immagine di esempio di Amazon Linux 2023 presenta le seguenti caratteristiche: 

1. **Avvio con Unified Kernel Image (UKI)**: avvio utilizzando un unico file binario firmato che combina il kernel `initrd` e i parametri di avvio in un’unica immagine immutabile.

1. **Filesystem root di sola lettura**: utilizza Enhanced Read-Only File System (`erofs`) con protezione dm-verity per assicurarti che il filesystem root non possa essere modificato e mantenga la verifica dell’integrità crittografica.

1. **Filesystem overlay temporaneo**: crea un filesystem overlay temporaneo che consenta scritture temporanee su directory come `/etc`, `/run` e `/var`. Dato che questo filesystem overlay esiste solo in memoria, tutte le modifiche vengono automaticamente perse al riavvio dell’istanza, garantendo che il sistema torni allo stato attendibile originale.

1. **Metodi di accesso remoto disabilitati**: rimuovi i meccanismi di accesso remoto seguenti per impedire l’accesso remoto:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/al2023-isolated-compute-recipe.html)

   \$1 Per ulteriori informazioni, consulta [Image Description Elements](https://osinside.github.io/kiwi/image_description/elements.html#packages-ignore).

# Personalizza la descrizione delle immagini di esempio di Amazon Linux 2023 per il tuo carico di lavoro
<a name="customize-sample-ami"></a>

Puoi personalizzare la descrizione dell’immagine di esempio di Amazon Linux 2023 e includere pacchetti software, script e i file necessari per il tuo carico di lavoro specifico. Le personalizzazioni si ottengono aggiungendo o modificando vari elementi nella descrizione delle immagini KIWI NG.

**Topics**
+ [Gestione del repository](#prepare-custom-image-repos)
+ [Gestione dei pacchetti](#customize-sample-ami-packages)
+ [Aggiungi file e directory](#customize-sample-ami-overlay)
+ [Aggiunta di script personalizzati](#customize-sample-ami-script)

## Gestione del repository
<a name="prepare-custom-image-repos"></a>

Per impostazione predefinita, la descrizione dell’immagine di esempio include un singolo elemento `<repository>` che punta a un endpoint mirror per i repository principali di Amazon Linux 2023. Se necessario, puoi aggiungere riferimenti ad altri repository da cui installare il software richiesto.

La descrizione dell’immagine di esempio utilizza il gestore di pacchetti `dnf`, come definito nell’elemento `<packagemanager>`.

Per ulteriori informazioni sull’aggiunta di repository, consulta [Configurazione dei repository](https://osinside.github.io/kiwi/concept_and_workflow/repository_setup.html).

## Gestione dei pacchetti
<a name="customize-sample-ami-packages"></a>

Per impostazione predefinita, la descrizione dell’immagine di esempio comprende tutti i pacchetti necessari per creare un’AMI attestabile di Amazon Linux 2023 per un ambiente di calcolo isolato con un file system `erofs` di sola lettura.

Puoi includere pacchetti software aggiuntivi nella descrizione dell’immagine aggiungendoli all’elemento `<packages>` nella descrizione dell’immagine. L’elemento `<packages>` definisce tutto il software che deve essere installato nell’AMI.

Puoi anche utilizzare l’elemento `<packages>` per disinstallare o eliminare pacchetti software specifici.

Per ulteriori informazioni sull’aggiunta o la rimozione di pacchetti nella descrizione dell’immagine, consulta [Adding and Removing Packages](https://osinside.github.io/kiwi/concept_and_workflow/packages.html#).

## Aggiungi file e directory
<a name="customize-sample-ami-overlay"></a>

La descrizione dell’immagine di esempio include una directory ad albero sovrapposta (`/root/`). La directory ad albero sovrapposta è una directory che contiene file e directory che verranno copiati nell’immagine durante il processo di creazione dell’immagine. Tutti i file e le directory inseriti nella directory ad albero di overlay verranno copiati direttamente nel filesystem root dell’immagine durante il processo di creazione dell’immagine.

La directory ad albero sovrapposta viene copiata nell’immagine dopo che tutti i pacchetti sono stati installati. Vengono aggiunti nuovi file e vengono sovrascritti i file esistenti.

## Aggiunta di script personalizzati
<a name="customize-sample-ami-script"></a>

La descrizione dell’immagine di esempio comprende un singolo script personalizzato, `edit_boot_install.sh`. Questo script include i comandi necessari per eseguire l’utilità `nitro-tpm-pcr-compute`, che genera le misurazioni di riferimento in base al contenuto dell’immagine. Questo script viene chiamato subito dopo l’installazione del bootloader.

Se necessario, puoi includere script personalizzati nella descrizione dell’immagine per eseguire operazioni o configurazioni durante il processo di creazione dell’immagine o al primo avvio dell’immagine. L’uso degli script consente di personalizzare le immagini in modi che non possono essere ottenuti utilizzando la sola descrizione dell’immagine.

Per includere script personalizzati nella descrizione dell’immagine, devi denominarli correttamente in base al tipo di script e aggiungerli alla stessa directory del file `appliance.kiwi`. KIWI NG rileva ed esegue automaticamente gli script se sono denominati correttamente e collocati nella posizione corretta, senza che sia necessario farvi riferimento esplicitamente nel file di descrizione dell’immagine.

Per ulteriori informazioni sugli script supportati da KIWI NG, consulta [User-Defined Scripts](https://osinside.github.io/kiwi/concept_and_workflow/shell_scripts.html).

# Calcola le misurazioni PCR per un’AMI personalizzata
<a name="create-pcr-compute"></a>

L’utilità `nitro-tpm-pcr-compute` consente di generare le misurazioni di riferimento per un’AMI attestabile durante la fase di compilazione in base alla relativa Unified Kernel Image (UKI).

La descrizione dell’immagine di esempio di Amazon Linux 2023 installa automaticamente l’utilità nell’immagine incorporata nella directory `/usr/bin/`. La descrizione dell’immagine di esempio comprende anche uno script con i comandi necessari per eseguire l’utilità e generare le misurazioni di riferimento durante la creazione dell’immagine. Se stai utilizzando la descrizione dell’immagine di esempio, non è necessario installare l’utilità o eseguirla manualmente. Per ulteriori informazioni, consulta [Crea la descrizione dell’immagine di esempio di Amazon Linux 2023](build-sample-ami.md).

## Installa l’utilità `nitro-tpm-pcr-compute`
<a name="nitro-tpm-compute-install"></a>

Se usi Amazon Linux 2023, puoi installare l’utilità `nitro-tpm-pcr-compute` dal repository Amazon Linux come segue.

```
sudo yum install aws-nitro-tpm-tools
```

Gli strumenti vengono installati nella directory `/usr/bin`.

## Utilizza l’utilità `nitro-tpm-pcr-compute`
<a name="nitro-tpm-compute-use"></a>

L’utilità fornisce un solo comando, `nitro-tpm-pcr-compute`, per generare le misurazioni di riferimento.

Quando esegui il comando, devi specificare quanto segue:
+ Unified kernel image (`UKI.efi`): richiesta per l’avvio standard e UEFI.

**Per generare le misurazioni di riferimento per un’AMI attestabile:**  
Utilizza il comando e i parametri seguenti:

```
/usr/bin/nitro-tpm-pcr-compute \
--image UKI.efi
```

L’utilità restituisce le misure di riferimento nel seguente formato JSON:

```
{
  "Measurements": {
    "HashAlgorithm": "SHA384 { ... }",
    "PCR4": "PCR4_measurement",
    "PCR7": "PCR7_measurement",
    "PCR12": "PCR12_measurement"
  }
}
```

Per un esempio pratico di uso dell’utilità `nitro-tpm-pcr-compute`, consulta lo script `edit_boot_install.sh` incluso nella [descrizione dell’immagine di esempio di Amazon Linux 2023](build-sample-ami.md).