

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

# AMD SEV-SNP per istanze Amazon EC2
<a name="sev-snp"></a>

AMD Secure Encrypted Virtualization-Secure Nested Paging (AMD SEV-SNP) è una funzionalità della CPU che fornisce le seguenti proprietà:
+ **Attestazione**: AMD SEV-SNP consente di recuperare un rapporto di attestazione firmato che contiene una misura crittografica che può essere utilizzata per convalidare lo stato e l'identità dell'istanza e che è in esecuzione su hardware AMD originale. Per ulteriori informazioni, consulta [Attesta un' EC2 istanza Amazon con AMD SEV-SNP](snp-attestation.md).
+ **Crittografia della memoria**: a partire dai processori AMD EPYC (Milano), AWS Graviton2 e Intel Xeon Scalable (Ice Lake), la memoria delle istanze è sempre crittografata. Le istanze abilitate per AMD SEV-SNP utilizzano una chiave specifica dell'istanza per la crittografia della memoria.

**Topics**
+ [Concetti e terminologia](#snp-concepts)
+ [Requisiti](#snp-requirements)
+ [Considerazioni](#snp-considerations)
+ [Prezzi](#snp-pricing)
+ [Individuazione dei tipi di istanza supportati](snp-find-instance-types.md)
+ [Abilitare AMD SEV-SNP](snp-work-launch.md)
+ [Attestazione con AMD SEV-SNP](snp-attestation.md)

## Concetti e terminologia
<a name="snp-concepts"></a>

Prima di iniziare a utilizzare AMD SEV-SNP, assicurati di conoscere i concetti e la terminologia seguenti.

**Rapporto di attestazione AMD SEV-SNP**  
Il rapporto di attestazione AMD SEV-SNP è un documento che un'istanza può richiedere alla CPU. Il rapporto di attestazione AMD SEV-SNP può essere utilizzato per convalidare lo stato e l'identità di un'istanza e per verificare che sia in esecuzione in un ambiente AMD autorizzato. Il rapporto include una misurazione di avvio, ovvero un hash crittografico dello stato di avvio iniziale di un'istanza, inclusi il contenuto della memoria dell'istanza iniziale e lo stato iniziale della v. CPUs Il rapporto di attestazione AMD SEV-SNP è firmato con una firma VLEK che si ricollega a un root of trust di AMD.

**VLEK**  
La Versioned Loaded Endorsement Key (VLEK) è una chiave di firma con versioni certificata da AMD e utilizzata dalla CPU AMD per firmare i rapporti di attestazione AMD SEV-SNP. Le firme VLEK possono essere convalidate utilizzando i certificati forniti da AMD.

**Binario OVMF**  
L'Open Virtual Machine Firmware (OVMF) è il codice di avvio anticipato utilizzato per fornire un ambiente UEFI per l'istanza. Il codice di avvio anticipato viene eseguito prima dell'avvio del codice nell'AMI. L'OVMF trova ed esegue anche il boot loader fornito nell'AMI. Per ulteriori informazioni, consulta il [repository OVMF](https://github.com/tianocore/tianocore.github.io/wiki/OVMF).

## Requisiti
<a name="snp-requirements"></a>

Per utilizzare AMD SEV-SNP, assicurati di:
+ Utilizzare uno dei seguenti tipi di istanza supportati:
  + **Uso generico**: `m6a.large` \$1 `m6a.xlarge` \$1 `m6a.2xlarge` \$1 `m6a.4xlarge` \$1 `m6a.8xlarge`
  + **Ottimizzate per il calcolo**: `c6a.large` \$1 `c6a.xlarge` \$1 `c6a.2xlarge` \$1 `c6a.4xlarge` \$1 `c6a.8xlarge` \$1 `c6a.12xlarge` \$1 `c6a.16xlarge`
  + **Ottimizzate per la memoria**: `r6a.large` \$1 `r6a.xlarge` \$1 `r6a.2xlarge` \$1 `r6a.4xlarge`
+ Avvia la tua istanza in un formato supportato. Regione AWS Attualmente sono supportate solo le Regioni Stati Uniti orientali (Ohio) ed Europa (Irlanda).
+ Utilizzare un'AMI con modalità di avvio `uefi` oppure `uefi-preferred` e un sistema operativo che supporti AMD SEV-SNP. Per ulteriori informazioni sul supporto AMD SEV-SNP sul tuo sistema operativo, consulta la documentazione del rispettivo sistema operativo. Infatti AWS, AMD SEV-SNP è supportato su AL2 023, RHEL 9.3, SLES 15 SP4 e Ubuntu 23.04 e versioni successive.

## Considerazioni
<a name="snp-considerations"></a>

Puoi solo attivare AMD SEV-SNP solo all'avvio di un'istanza. Quando AMD SEV-SNP è abilitato per il lancio dell'istanza, si applicano le seguenti regole.
+ Una volta abilitato, AMD SEV-SNP non può essere disabilitato. Rimane abilitato per tutto il ciclo di vita dell'istanza.
+ È possibile [modificare il tipo di istanza](ec2-instance-resize.md) con un altro tipo di istanza che supporti AMD SEV-SNP.
+ Hibernation e Nitro Enclaves non sono supportati.
+ Gli host dedicati non sono supportati.
+ Se è prevista la manutenzione dell'host sottostante dell'istanza, riceverai una notifica dell'evento programmato 14 giorni prima dell'evento. È necessario interrompere o riavviare manualmente l'istanza per spostarla su un nuovo host.

## Prezzi
<a name="snp-pricing"></a>

Quando avvii un' EC2 istanza Amazon con AMD SEV-SNP abilitato, ti viene addebitata una tariffa di utilizzo oraria aggiuntiva equivalente al 10% della tariffa [oraria On-Demand del tipo di istanza](https://aws.amazon.com/ec2/pricing/on-demand/) selezionato.

Questa tariffa di utilizzo AMD SEV-SNP è un addebito separato per l'utilizzo dell'istanza Amazon EC2 . Le istanze riservate, Savings Plans e l'utilizzo del sistema operativo non influiscono su questa tariffa. 

Se si configura un'istanza spot per l'avvio con [AMD SEV-SNP](#sev-snp) attivato, viene addebitata una tariffa di utilizzo oraria aggiuntiva equivalente al 10% della [tariffa oraria on demand](https://aws.amazon.com/ec2/pricing/on-demand/) del tipo di istanza selezionato. Se la strategia di allocazione utilizza il prezzo come input, il parco istanze spot non include questa tariffa aggiuntiva; viene utilizzato solo il prezzo spot.

# Trova tipi di EC2 istanze che supportano AMD SEV-SNP
<a name="snp-find-instance-types"></a>

Puoi individuare i tipi di istanza che supportano AMD SEV-SNP. La EC2 console Amazon non visualizza queste informazioni per un tipo di istanza.

------
#### [ AWS CLI ]

**Per individuare i tipi di istanza che supportano AMD SEV-SNP**  
Utilizza il seguente comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html).

```
aws ec2 describe-instance-types \
    --filters Name=processor-info.supported-features,Values=amd-sev-snp \
    --query 'InstanceTypes[*].[InstanceType]' \
    --output text | sort
```

Di seguito è riportato un output di esempio.

```
c6a.12xlarge
c6a.16xlarge
c6a.2xlarge
c6a.4xlarge
c6a.8xlarge
c6a.large
c6a.xlarge
m6a.2xlarge
m6a.4xlarge
m6a.8xlarge
m6a.large
m6a.xlarge
r6a.2xlarge
r6a.4xlarge
r6a.large
r6a.xlarge
```

------
#### [ PowerShell ]

**Per individuare i tipi di istanza che supportano AMD SEV-SNP**  
Utilizza il cmdlet [Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html).

```
(Get-EC2InstanceType `
    -Filter @{Name="processor-info.supported-features"; Values="amd-sev-snp"}).InstanceType.Value | Sort-Object
```

Di seguito è riportato un output di esempio.

```
c6a.12xlarge
c6a.16xlarge
c6a.2xlarge
c6a.4xlarge
c6a.8xlarge
c6a.large
c6a.xlarge
m6a.2xlarge
m6a.4xlarge
m6a.8xlarge
m6a.large
m6a.xlarge
r6a.2xlarge
r6a.4xlarge
r6a.large
r6a.xlarge
```

------

# Abilita AMD SEV-SNP per un'istanza EC2
<a name="snp-work-launch"></a>

Puoi avviare un’istanza con AMD SEV-SNP abilitato. Non puoi abilitare AMD SEV-SNP dopo il lancio.

## Avviare un’istanza con AMD SEV-SNP abilitato
<a name="snp-launch-instance"></a>

Non puoi abilitare AMD SEV-SNP utilizzando la console Amazon. EC2 

------
#### [ AWS CLI ]

**Per avviare un’istanza con AMD SEV-SNP abilitato**  
Usa il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) con l’opzione `--cpu-options`. Per conoscere i requisiti aggiuntivi, consulta [AMD SEV-SNP requirements](sev-snp.md#snp-requirements).

```
--cpu-options AmdSevSnp=enabled
```

------
#### [ PowerShell ]

**Per avviare un’istanza con AMD SEV-SNP abilitato**  
Utilizza il [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html)cmdlet con il parametro. `-CpuOption`

```
-CpuOption @{AmdSevSnp="enabled"}
```

------

## Verifica se un' EC2 istanza è abilitata per AMD SEV-SNP
<a name="snp-work-check"></a>

Puoi individuare le istanze abilitate per AMD SEV-SNP. La EC2 console Amazon non visualizza queste informazioni.

------
#### [ AWS CLI ]

**Per verificare se AMD SEV-SNP è abilitato per un’istanza**  
Utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query Reservations[].Instances[].CpuOptions
```

Di seguito è riportato un output di esempio. Se `AmdSevSnp` non è presente in `CpuOptions`, AMD SEV-SNP è disabilitato.

```
[
    {
        "AmdSevSnp": "enabled",
        "CoreCount": 1,
        "ThreadsPerCore": 2
    }
]
```

------
#### [ PowerShell ]

**Per verificare se AMD SEV-SNP è abilitato per un’istanza**  
Utilizza il cmdlet [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.CpuOptions
```

Di seguito è riportato un output di esempio. Se il valore di `AmdSevSnp` non è presente, AMD SEV-SNP è disabilitato.

```
AmdSevSnp CoreCount ThreadsPerCore
--------- --------- --------------
enabled   1         2
```

------
#### [ AWS CloudTrail ]

Nel AWS CloudTrail caso della richiesta di avvio dell'istanza, la seguente proprietà indica che AMD SEV-SNP è abilitato per l'istanza.

```
"cpuOptions": {"AmdSevSnp": "enabled"}
```

------

# Attesta un' EC2 istanza Amazon con AMD SEV-SNP
<a name="snp-attestation"></a>

L'attestazione è un processo che consente all'istanza di dimostrare il suo stato e la sua identità. Una volta abilitato AMD SEV-SNP per un’istanza, puoi richiedere un report di attestazione AMD SEV-SNP al processore sottostante. Il rapporto di attestazione AMD SEV-SNP contiene un hash crittografico, chiamato misurazione dell'avvio, del contenuto iniziale della memoria guest e dello stato iniziale della vCPU. Il rapporto di attestazione è firmato con una firma VLEK che si ricollega a una root di fiducia AMD. È possibile utilizzare la misurazione di avvio inclusa nel rapporto di attestazione per verificare che l'istanza sia in esecuzione in un ambiente AMD originale e per convalidare il codice di avvio iniziale utilizzato per avviare l'istanza.

**Prerequisito**  
Avvia un’istanza abilitata per AMD SEV-SNP. Per ulteriori informazioni, consulta [Abilita AMD SEV-SNP per un'istanza EC2](snp-work-launch.md).

**Topics**
+ [Fase 1: ottenimento del rapporto di attestazione](#snp-att-get-report)
+ [Fase 2: convalida la firma del rapporto di attestazione](#snp-att-validate-signature)

## Fase 1: ottenimento del rapporto di attestazione
<a name="snp-att-get-report"></a>

In questo passaggio, si installa e si crea l'utilità `snpguest`, quindi la si utilizza per richiedere il rapporto di attestazione AMD SEV-SNP e i certificati.

1. Connettiti alla tua istanza.

1. Per installare l'utilità `snpguest` da [https://github.com/virtee/snpguest](https://github.com/virtee/snpguest), esegui i seguenti comandi.

   ```
   $ git clone https://github.com/virtee/snpguest.git
   $ cd snpguest
   $ cargo build -r
   $ cd target/release
   ```

1. Genera una richiesta per il rapporto di attestazione. L'utilità richiede il rapporto di attestazione dall'host e lo scrive in un file binario con i dati di richiesta forniti.

   L'esempio seguente crea una stringa di richiesta casuale e la utilizza come file di richiesta (`request-file.txt`). Quando il comando restituisce il rapporto di attestazione, viene memorizzato nel percorso del file specificato (`report.bin`). In questo caso, l'utilità memorizza il rapporto nella directory corrente.

   ```
   $ ./snpguest report report.bin request-file.txt --random
   ```

1. Richiedi i certificati dalla memoria host e archiviali come file PEM. L'esempio seguente memorizza i file nella stessa directory dell'utilità `snpguest`. Se i certificati esistono già nella directory specificata, tali certificati vengono sovrascritti.

   ```
   $ ./snpguest certificates PEM ./
   ```

## Fase 2: convalida la firma del rapporto di attestazione
<a name="snp-att-validate-signature"></a>

Il rapporto di attestazione è firmato con un certificato, denominato Versioned Loaded Endorsement Key (VLEK), rilasciato da AMD per. AWS In questo passaggio, convalidi che il certificato VLEK sia emesso da AMD e che il rapporto di attestazione sia firmato da quel certificato VLEK.

1. Scarica i certificati root di fiducia VLEK dal sito Web ufficiale di AMD nella directory attuale.

   ```
   $ sudo curl --proto '=https' --tlsv1.2 -sSf https://kdsintf.amd.com/vlek/v1/Milan/cert_chain -o ./cert_chain.pem
   ```

1. Utilizza `openssl` per convalidare che il certificato VLEK sia firmato dai certificati root di fiducia di AMD.

   ```
   $ sudo openssl verify --CAfile ./cert_chain.pem vlek.pem
   ```

   Di seguito è riportato un output di esempio.

   ```
   vlek.pem: OK
   ```

1. Utilizza l'utilità `snpguest` per convalidare che il rapporto di attestazione sia firmato dal certificato VLEK.

   ```
   $ ./snpguest verify attestation ./ report.bin
   ```

   Di seguito è riportato un output di esempio.

   ```
   Reported TCB Boot Loader from certificate matches the attestation report.
   Reported TCB TEE from certificate matches the attestation report.
   Reported TCB SNP from certificate matches the attestation report.
   Reported TCB Microcode from certificate matches the attestation report.
   VEK signed the Attestation Report!
   ```