

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

# Protezione dei dati in AWS IoT Core
<a name="data-protection"></a>

Il modello di [responsabilità AWS condivisa modello](https://aws.amazon.com/compliance/shared-responsibility-model/) di di si applica alla protezione dei dati in AWS IoT Core. Come descritto in questo modello, AWS è responsabile della protezione dell'infrastruttura globale che gestisce tutti i Cloud AWS. L’utente è responsabile del controllo dei contenuti ospitati su questa infrastruttura. L’utente è inoltre responsabile della configurazione della protezione e delle attività di gestione per i Servizi AWS utilizzati. Per maggiori informazioni sulla privacy dei dati, consulta le [Domande frequenti sulla privacy dei dati](https://aws.amazon.com/compliance/data-privacy-faq/). Per informazioni sulla protezione dei dati in Europa, consulta il post del blog relativo al [AWS Modello di responsabilità condivisa e GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) nel *AWS Blog sulla sicurezza*.

Ai fini della protezione dei dati, consigliamo di proteggere Account AWS le credenziali e configurare i singoli utenti con AWS IAM Identity Center or AWS Identity and Access Management (IAM). In tal modo, a ogni utente verranno assegnate solo le autorizzazioni necessarie per svolgere i suoi compiti. Suggeriamo, inoltre, di proteggere i dati nei seguenti modi:
+ Utilizza l’autenticazione a più fattori (MFA) con ogni account.
+  SSL/TLS Da utilizzare per comunicare con AWS le risorse. È richiesto TLS 1.2 ed è consigliato TLS 1.3.
+ Configura l'API e la registrazione delle attività degli utenti con AWS CloudTrail. Per informazioni sull'utilizzo dei CloudTrail percorsi per acquisire AWS le attività, consulta [Lavorare con i CloudTrail percorsi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) nella *Guida per l'AWS CloudTrail utente*.
+ Utilizza soluzioni di AWS crittografia, insieme a tutti i controlli di sicurezza predefiniti all'interno Servizi AWS.
+ Utilizza i servizi di sicurezza gestiti avanzati, come Amazon Macie, che aiutano a individuare e proteggere i dati sensibili archiviati in Amazon S3.
+ Se hai bisogno di moduli crittografici convalidati FIPS 140-3 per accedere AWS tramite un'interfaccia a riga di comando o un'API, usa un endpoint FIPS. Per ulteriori informazioni sugli endpoint FIPS disponibili, consulta il [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Ti consigliamo di non inserire mai informazioni riservate o sensibili, ad esempio gli indirizzi e-mail dei clienti, nei tag o nei campi di testo in formato libero, ad esempio nel campo **Nome**. Ciò include quando lavori AWS IoT o Servizi AWS utilizzi la console, l'API o. AWS CLI AWS SDKs I dati inseriti nei tag o nei campi di testo in formato libero utilizzati per i nomi possono essere utilizzati per i la fatturazione o i log di diagnostica. Quando si fornisce un URL a un server esterno, suggeriamo vivamente di non includere informazioni sulle credenziali nell’URL per convalidare la richiesta al server.

Per ulteriori informazioni sulla protezione dei dati, consulta il post del blog [AWS Modello di responsabilità condivisa e GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) su *AWS Security Blog*.

AWS IoT i dispositivi raccolgono dati, eseguono alcune manipolazioni su tali dati e quindi li inviano a un altro servizio Web. Potresti scegliere di archiviare alcuni dati sul tuo dispositivo per un breve periodo di tempo. L'utente è responsabile di fornire qualsiasi protezione dei dati su tali dati a riposo. Quando il dispositivo invia dati a AWS IoT, lo fa tramite una connessione TLS, come illustrato più avanti in questa sezione. AWS IoT i dispositivi possono inviare dati a qualsiasi AWS servizio. Per ulteriori informazioni sulla sicurezza dei dati di ciascun servizio, consulta la documentazione relativa al servizio. AWS IoT può essere configurato per scrivere log su CloudWatch Logs e registrare chiamate AWS IoT API su. AWS CloudTrail Per ulteriori informazioni sulla sicurezza dei dati per questi servizi, consulta [Authentication and Access Control for Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) e [Encrypting CloudTrail Log Files with AWS KMS managed keys](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/encrypting-cloudtrail-log-files-with-aws-kms.html).

## Crittografia dei dati in AWS IoT
<a name="data-protection-encrypt"></a>

Per impostazione predefinita, tutti i AWS IoT dati in transito e a riposo sono crittografati. [I dati in transito vengono crittografati tramite TLS](transport-security.md) e i dati inattivi vengono crittografati utilizzando chiavi AWS proprietarie. AWS IoT supporta la gestione dei clienti AWS KMS keys (chiavi KMS) da AWS Key Management Service (AWS KMS). Tuttavia, Device Advisor e AWS IoT Wireless utilizzano solo un Chiave di proprietà di AWS per crittografare i dati dei clienti.

 

# Sicurezza dei trasporti in AWS IoT Core
<a name="transport-security"></a>

TLS (Transport Layer Security) è un protocollo di crittografia progettato per comunicazioni sicure su una rete di computer. Il AWS IoT Core Device Gateway richiede ai clienti di crittografare tutte le comunicazioni in transito utilizzando TLS per le connessioni dai dispositivi al Gateway. TLS viene utilizzato per garantire la riservatezza dei protocolli applicativi (MQTT, HTTP e) supportati da. WebSocket AWS IoT Core Il supporto TLS è disponibile in diversi linguaggi di programmazione e sistemi operativi. I dati all'interno AWS sono crittografati dal servizio specifico AWS . Per ulteriori informazioni sulla crittografia dei dati su altri AWS servizi, consulta la documentazione sulla sicurezza relativa a tale servizio.

**Topics**
+ [Protocolli TLS](#tls-ssl-policy)
+ [Policy di sicurezza](#tls-policy-table)
+ [Note importanti per la sicurezza dei trasporti in AWS IoT Core](#tls-ssl-core)
+ [Sicurezza del trasporto per dispositivi wireless LoRa WAN](#tls-lorawan)

## Protocolli TLS
<a name="tls-ssl-policy"></a>

AWS IoT Core supporta le seguenti versioni del protocollo TLS:
+ TLS 1.3 
+ TLS 1.2

Con AWS IoT Core, puoi configurare le impostazioni TLS (per TLS [1.2 e TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) [1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3)) nelle configurazioni di dominio. Per ulteriori informazioni, consulta [Configurazione delle impostazioni TLS nelle configurazioni di dominio](iot-endpoints-tls-config.md).

## Policy di sicurezza
<a name="tls-policy-table"></a>

Una policy di sicurezza è una combinazione di protocolli TLS e delle relative crittografie che determinano quali protocolli e crittografie sono supportati durante le negoziazioni TLS tra un client e un server. È possibile configurare i dispositivi per utilizzare policy di sicurezza predefinite in base alle esigenze. Tieni presente che AWS IoT Core non supporta politiche di sicurezza personalizzate.

Puoi scegliere una delle politiche di sicurezza predefinite per i tuoi dispositivi al momento della connessione a AWS IoT Core. I nomi delle politiche di sicurezza predefinite più recenti AWS IoT Core includono informazioni sulla versione basate sull'anno e sul mese in cui sono state rilasciate. La policy di sicurezza predefinita di default è `IoTSecurityPolicy_TLS13_1_2_2022_10`. Per specificare una politica di sicurezza, è possibile utilizzare la AWS IoT console o il AWS CLI. Per ulteriori informazioni, consulta [Configurazione delle impostazioni TLS nelle configurazioni di dominio](iot-endpoints-tls-config.md).

Nella seguente tabella vengono descritte le policy di sicurezza predefinite più recenti supportate da AWS IoT Core . `IotSecurityPolicy_` è stato rimosso dai nomi di policy nella riga dell'intestazione ai fini dell'adattamento.


| **Policy di sicurezza** | TLS13\$11\$13\$12022\$110 | TLS13\$11\$12\$12022\$110 | TLS12\$11\$12\$12022\$110 | TLS12\$11\$10\$12016\$101\$1 | TLS12\$11\$10\$12015\$101\$1 | 
| --- | --- | --- | --- | --- | --- | 
| Porta TCP |  443/8443/8883  |  443/8443/8883  |  443/8443/8883  | 443 | 8443/8883 | 443 | 8443/8883 | 
| Protocolli TLS | 
| TLS 1.2 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| TLS 1.3 | ✓ | ✓ |  |  |  |  |  | 
| Crittografie TLS | 
| TLS\$1AES\$1128\$1GCM\$1 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1AES\$1256\$1GCM\$1 SHA384 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1 \$1 CHACHA20 POLY1305 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| ECDHE-RSA- -GCM- AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDH-RSA- AES128 - SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES128 -SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 -GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDH-RSA- AES256 - SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 -SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-SHA256 |  | ✓ | ✓ | ✓ |  | ✓ | ✓ | 
| AES128-SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| SHE-RSA- -SHA AES256 |  |  |  |  |  | ✓ | ✓ | 
| ECDHE-ECDSA- AES128 -GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECSA- - AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES128 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -GCM- AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECSA- - AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 

**Nota**  
`TLS12_1_0_2016_01`è disponibile solo nelle seguenti versioni Regioni AWS: ap-east-1, ap-northeast-2, ap-south-1, ap-southeast-2, ca-central-1, cn-north-1, cn-northwest-1, eu-north-1, eu-west-2, eu-west-3, me-3 -sud-1, sa-est-1, us-est-2, -1, -2, us-west-1. us-gov-west us-gov-west  
`TLS12_1_0_2015_01`è disponibile solo nelle seguenti versioni Regioni AWS: ap-northeast-1, ap-southeast-1, eu-central-1, eu-west-1, us-east-1, us-west-2.

## Note importanti per la sicurezza dei trasporti in AWS IoT Core
<a name="tls-ssl-core"></a>

Per i dispositivi che si connettono AWS IoT Core tramite [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html), TLS crittografa la connessione tra i dispositivi e il broker e AWS IoT Core utilizza l'autenticazione del client TLS per identificare i dispositivi. Per ulteriori informazioni, consultare [Autenticazione client](https://docs.aws.amazon.com//iot/latest/developerguide/client-authentication.html). Per i dispositivi che si connettono AWS IoT Core tramite [HTTP](https://docs.aws.amazon.com//iot/latest/developerguide/http.html), TLS crittografa la connessione tra i dispositivi e il broker e l'autenticazione è delegata alla versione 4 di Signature. AWS Per ulteriori informazioni, consultare [Firma delle richieste con Signature Version 4](https://docs.aws.amazon.com//general/latest/gr/create-signed-request.html) nella *documentazione generale di riferimento di AWS *.

Quando si connettono dispositivi a AWS IoT Core, l'invio dell'[estensione Server Name Indication (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1) non è necessario, ma è altamente consigliato. Per utilizzare funzionalità come la [registrazione di più account](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert), i [domini personalizzati](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html), gli [endpoint VPC](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html) e [le politiche TLS configurate](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html), è necessario utilizzare l'estensione SNI e fornire l'indirizzo completo dell'endpoint sul campo. `host_name` Il campo `host_name` deve contenere l'endpoint che si sta chiamando. Tale endpoint deve essere uno dei seguenti:
+ Il valore `endpointAddress` restituito da `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:Data-ATS`
+ Il valore `domainName` restituito da `aws iot [describe-domain-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-domain-configuration.html) –-domain-configuration-name "domain_configuration_name"`

I tentativi di connessione effettuati da dispositivi con un valore errato o non valido falliranno. `host_name` AWS IoT Core [registrerà gli errori utilizzando il tipo CloudWatch di autenticazione Custom Authentication.](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html)

AWS IoT Core non supporta l'estensione [SessionTicket TLS.](https://www.ietf.org/rfc/rfc5077.txt)

## Sicurezza del trasporto per dispositivi wireless LoRa WAN
<a name="tls-lorawan"></a>

LoRaI dispositivi WAN seguono le pratiche di sicurezza descritte in [LoRaWAN™ SECURITY: A White Paper Prepared for the LoRa Alliance™ di Gemalto, Actility e Semtech](https://lora-alliance.org/sites/default/files/2019-05/lorawan_security_whitepaper.pdf). 

Per ulteriori informazioni sulla sicurezza del trasporto con i dispositivi LoRa WAN, consulta Sicurezza [dei dati e del trasporto LoRa WAN](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-security.html).

# Crittografia dei dati in AWS IoT
<a name="data-encryption"></a>

La protezione dei dati si riferisce alla protezione dei dati durante il transito (mentre viaggiano da e verso AWS IoT Core) e quando sono inattivi (mentre sono archiviati su dispositivi o da altri AWS servizi). Tutti i dati inviati AWS IoT Core vengono inviati tramite una connessione TLS utilizzando MQTT, HTTPS e WebSocket protocolli, rendendoli sicuri per impostazione predefinita durante il transito. AWS IoT Core raccoglie i dati dai dispositivi e li invia ad altri AWS servizi per un'ulteriore elaborazione. Per ulteriori informazioni sulla crittografia dei dati su altri servizi AWS , consultare la documentazione di sicurezza per tale servizio. Per ulteriori informazioni, consulta [Data encryption at rest](encryption-at-rest.md).

FreeRTOS fornisce una libreria PKCS \$111 che riassume l'archiviazione delle chiavi, accedendo agli oggetti crittografici e gestendo le sessioni. È responsabilità dell'utente utilizzare questa libreria per crittografare i dati inattivi sui dispositivi. Per ulteriori informazioni, consulta [ FreeRTOS Libreria Public Key Cryptography Standard (PKCS) \$111](https://docs.aws.amazon.com/freertos/latest/userguide/security-pkcs.html).

# Crittografia dei dati a riposo in AWS IoT Core
<a name="encryption-at-rest"></a>

Per impostazione predefinita, tutti i AWS IoT Core dati inattivi vengono crittografati utilizzando chiavi AWS proprietarie. AWS IoT Core supporta anche chiavi simmetriche gestite dai clienti di AWS Key Management Service ()AWS KMS. Con le chiavi gestite dai clienti, puoi creare, possedere e gestire le AWS KMS chiavi del tuo AWS account. AWS IoT Core utilizzerà le tue chiavi KMS per crittografare i tuoi dati inattivi. Hai il pieno controllo su queste chiavi KMS, inclusa la creazione e la manutenzione delle relative politiche chiave. Puoi anche configurare le politiche IAM per i ruoli che accedono per AWS KMS controllare le autorizzazioni relative a queste chiavi.

## AWS chiavi possedute
<a name="aws-owned-keys"></a>

AWS le chiavi di proprietà sono una raccolta di chiavi KMS possedute e gestite da un AWS servizio per l'utilizzo in più AWS account. AWS i servizi possono utilizzare chiavi AWS di proprietà per proteggere i dati. Per impostazione predefinita, AWS IoT Core crittografa i dati inattivi utilizzando chiavi AWS proprietarie. Queste chiavi sono gestite dal servizio. Non è possibile visualizzare, gestire o utilizzare chiavi AWS di proprietà. Tuttavia, non è necessario intraprendere alcuna azione per proteggere queste chiavi.

Per ulteriori informazioni sulle chiavi AWS possedute, consulta [le chiavi AWS possedute](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key) nella *Guida per gli AWS Key Management Service sviluppatori*.

## Chiavi gestite dal cliente
<a name="customer-managed-keys"></a>

Le chiavi gestite dal cliente sono chiavi KMS del tuo AWS account che crei, possiedi e gestisci. Hai il pieno controllo su queste AWS KMS chiavi, inclusa la creazione e la manutenzione delle relative politiche chiave. Puoi anche configurare le policy IAM per i ruoli che accedono per AWS KMS controllare le autorizzazioni relative a queste chiavi. Puoi configurare l'utilizzo AWS IoT Core di chiavi KMS gestite dal cliente per crittografare i tuoi dati.

Per ulteriori informazioni sulle chiavi gestite dal cliente, consulta [Chiavi gestite dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.

Per attivare le chiavi gestite dal cliente AWS IoT Core, procedi nel seguente modo:

**Topics**
+ [Fase 1: creare una chiave gestita dal cliente](#encryption-at-rest-cmk-create)
+ [Passaggio 2: crea un ruolo IAM per concedere AWS IoT Core le autorizzazioni all'uso della chiave KMS](#create-an-iam-role)
+ [Passaggio 3: Attiva le chiavi gestite dal cliente AWS IoT Core](#opt-in-customer-managed-keys)
+ [Fase 4: Sono necessarie autorizzazioni aggiuntive per le operazioni AWS IoT Core del piano di controllo](#cmk-control-plane-permissions)
+ [Fase 5: Gestione delle chiavi](#understanding-key-health)
+ [Fase 6: Monitoraggio dello stato delle chiavi](#health-status-monitoring)

### Fase 1: creare una chiave gestita dal cliente
<a name="encryption-at-rest-cmk-create"></a>

È possibile creare una chiave simmetrica gestita dal cliente utilizzando la AWS KMS console o i comandi CLI AWS KMS . Il `keySpec` deve essere `SYMMETRIC_DEFAULT` e il `keyUsage` deve essere. `ENCRYPT_DECRYPT`

**Nota**  
AWS IoT Core supporta solo AWS KMS chiavi con specifiche `SYMMETRIC_DEFAULT` chiave e `ENCRYPT_DECRYPT` utilizzo delle chiavi per le chiavi gestite dal cliente.

Di seguito è riportato un AWS CLI comando di esempio per creare una chiave KMS che può essere utilizzata con AWS IoT Core le chiavi gestite dai clienti.

```
aws kms create-key --key-spec SYMMETRIC_DEFAULT --key-usage ENCRYPT_DECRYPT --region us-west-2
```

Di seguito è riportato un esempio di output del comando.

```
{
    "KeyMetadata": {
        "AWSAccountId": "111122223333",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "CreationDate": "2024-09-19T11:45:23.982000-07:00",
        "Enabled": true,
        "Description": "",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion": false
    }
}
```

Per ulteriori informazioni, consulta [Creazione di una chiave simmetrica gestita dal cliente nella Guida per](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) gli *AWS Key Management Service sviluppatori*.

#### Policy della chiave
<a name="key-policy"></a>

Quando si crea una chiave gestita dal cliente, è possibile specificare una politica chiave. Le policy della chiave controllano l’accesso alla chiave gestita dal cliente. Ogni chiave gestita dal cliente deve avere esattamente una policy della chiave, che contiene istruzioni che determinano chi può usare la chiave e come la possono usare. Per ulteriori informazioni, consulta [le politiche chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) nella *Guida per gli AWS Key Management Service sviluppatori*.

AWS IoT Core utilizza un ruolo IAM nel tuo account per accedere alla tua chiave gestita dal cliente. Se utilizzi una policy di chiave personalizzata, assicurati che il ruolo IAM creato su questa chiave disponga delle seguenti autorizzazioni:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

### Passaggio 2: crea un ruolo IAM per concedere AWS IoT Core le autorizzazioni all'uso della chiave KMS
<a name="create-an-iam-role"></a>

 AWS IoT Core Per utilizzare la chiave KMS che hai creato per crittografare i tuoi dati inattivi, devi anche creare un ruolo IAM nel tuo account, che AWS IoT Core può presupporre di accedere alla chiave KMS.

Il ruolo deve avere la seguente politica di fiducia per consentire AWS IoT Core l'assunzione del ruolo.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "iot.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "111122223333"
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iot:us-west-2:111122223333:*"
            }
        }
    }
}
```

Assicurati che le policy IAM allegate al ruolo IAM abbiano le seguenti autorizzazioni sulla chiave KMS:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

Di seguito è riportato un esempio di policy IAM con le autorizzazioni richieste per le chiavi gestite dai clienti.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIoTToAccessKMSResource",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": [
                "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws-crypto-ec:vendor": "iot.amazonaws.com"
                }
            }
        }
    ]
}
```

*Per ulteriori informazioni, consulta [Creare un ruolo per delegare le autorizzazioni a un utente IAM nella Guida per l'utente](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).AWS Identity and Access Management *

### Passaggio 3: Attiva le chiavi gestite dal cliente AWS IoT Core
<a name="opt-in-customer-managed-keys"></a>

Dopo aver completato tutti i passaggi precedenti, esegui il comando `update-encryption-configuration` CLI per attivare l'utilizzo delle chiavi gestite dal cliente. AWS IoT Core Quando attivi le chiavi gestite dal cliente, tutte le AWS IoT Core risorse del tuo AWS account verranno crittografate utilizzando la AWS KMS chiave specificata.

1. Per attivare l' AWS IoT Core utilizzo delle chiavi gestite dal cliente AWS CLI, esegui il comando `update-encryption-configuration` CLI.

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" --region us-west-2
   ```

1. Per verificare l' AWS IoT Core utilizzo delle chiavi gestite dal cliente AWS CLI, esegui il comando `describe-encryption-configuration` CLI:

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

   Se hai abilitato le chiavi gestite dal cliente AWS IoT Core, l'output può essere simile al seguente:

   ```
   {
       "encryptionType": "CUSTOMER_MANAGED_KMS_KEY",
       "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
       "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
       "configurationDetails": {
           "configurationStatus": "HEALTHY"
       },
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

   Il `lastModifiedDate` campo indica la data dell'ultimo aggiornamento della configurazione di crittografia.

   Se non hai abilitato le chiavi gestite dal cliente, l'output può essere simile al seguente:

   ```
   {
       "encryptionType": "AWS_OWNED_KMS_KEY",
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

### Fase 4: Sono necessarie autorizzazioni aggiuntive per le operazioni AWS IoT Core del piano di controllo
<a name="cmk-control-plane-permissions"></a>

Dopo aver attivato le chiavi gestite dal cliente, tutte le AWS IoT Core risorse appartenenti al tuo AWS account vengono crittografate con la chiave KMS fornita. Tutte le operazioni del piano di controllo ora richiedono che il chiamante `kms:Decrypt` disponga delle autorizzazioni sulla chiave KMS oltre alle autorizzazioni richieste per l'operazione specifica sulla risorsa. AWS IoT Core Se il chiamante non dispone dell'`kms:Decrypt`autorizzazione ed effettua una chiamata API che richiede la crittografia o la decrittografia dei dati (ad esempio,), `GetPolicy` riceverà un. `UnauthorizedException`

Ad esempio, quando si chiama`GetPolicy`, sono necessari entrambi `iot:GetPolicy` e le `kms:Decrypt` autorizzazioni sulla chiave KMS gestita dal cliente affinché la chiamata API abbia esito positivo.

**Nota**  
Quando aggiorni utenti o ruoli IAM per concedere AWS KMS le autorizzazioni sulla chiave utilizzata per la configurazione di crittografia, assicurati che la policy delle chiavi KMS conceda anche le autorizzazioni richieste ai rispettivi utenti o ruoli IAM.

#### AWS KMS autorizzazioni per `UpdateEncryptionConfiguration`
<a name="kms-permissions-update-encryption-configuration"></a>

La chiamata `UpdateEncryptionConfiguration` API richiede le seguenti AWS KMS autorizzazioni sulla chiave KMS per poter attivare le chiavi gestite dal cliente o modificare la configurazione delle chiavi:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

#### AWS KMS autorizzazioni per tutti gli altri piani di controllo APIs
<a name="kms-permissions-control-plane-apis"></a>

La maggior parte dei piani di controllo APIs richiede `kms:Decrypt` le autorizzazioni quando le chiavi gestite dal cliente sono abilitate. Tuttavia, alcuni APIs non richiedono queste autorizzazioni aggiuntive:

APIs che non richiedono AWS KMS autorizzazioni  
Le `List*` mani `Delete*` APIs non cadono in questo secchio. I clienti possono sempre richiamare qualsiasi API `List*` o `Delete*` Control Plane e tali chiamate API avrebbero esito positivo anche se il chiamante non dispone dell'autorizzazione. `kms:Decrypt` Queste chiamate API avranno esito positivo anche se la chiave gestita dal cliente non è integra `List*` e `Delete*` APIs non esegue alcuna decrittografia.  
+ **Lista\$1 APIs**: tutte le operazioni di inserzione (ad esempio,,) `ListThings` `ListPolicies` `ListCertificates`
+ **Elimina\$1 APIs**: tutte le operazioni di eliminazione (ad esempio,,`DeleteThing`) `DeletePolicy` `DeleteCertificate`

### Fase 5: Gestione delle chiavi
<a name="understanding-key-health"></a>

AWS IoT Core esegue controlli periodici sulla configurazione delle chiavi gestite dal cliente per garantire che le operazioni di crittografia e decrittografia non siano influenzate. Questi controlli di integrità vengono eseguiti una volta al minuto e verificano la capacità AWS IoT Core di accedere e utilizzare sia la AWS KMS chiave che il ruolo IAM associato per le operazioni di crittografia e decrittografia.

HEALTHY  
AWS IoT Core può accedere con successo alla AWS KMS chiave tramite il ruolo IAM specificato ed eseguire operazioni. encryption/decryption Tutti i componenti funzionano correttamente.

UNHEALTHY  
AWS IoT Core non può accedere o utilizzare la AWS KMS chiave. Ciò impedisce nuove operazioni di crittografia e può influire sulla funzionalità del servizio. Il `errorCode` campo indica se il problema riguarda la chiave o il ruolo IAM.

#### Azioni dei clienti che possono influire sulla salute dei clienti
<a name="customer-actions-affecting-health"></a>

Diverse azioni dei clienti possono far sì che lo stato di salute chiave cambi `HEALTHY` da`UNHEALTHY`:

Azioni relative alle chiavi  
+ **Eliminazione di una AWS KMS chiave**: quando pianifichi l'eliminazione di una chiave, questa è in uno `Pending deletion` stato e non può essere utilizzata
+ **Disabilitazione di una AWS KMS chiave**: quando disabiliti una chiave KMS, questa non può più essere utilizzata per operazioni di crittografia/decrittografia
+ **Chiave di pianificazione per l'eliminazione: la chiave diventa inutilizzabile al termine dell'eliminazione**
+ **Modifica della politica delle chiavi**: rimozione delle autorizzazioni necessarie per l'accesso AWS IoT Core 
+ **Modifica delle autorizzazioni di utilizzo delle chiavi: limitazione delle azioni richieste** AWS KMS 

Azioni relative al ruolo IAM  
+ **Eliminazione del ruolo IAM**: non è AWS IoT Core possibile assumere il ruolo di accesso alla chiave
+ **Modifica delle autorizzazioni dei ruoli: rimozione delle autorizzazioni** richieste dalla AWS KMS politica del ruolo
+ **Modifica della politica di fiducia**: impedire al AWS IoT Core servizio di assumere il ruolo
+ **Aggiungere condizioni restrittive: condizioni** che AWS IoT Core impediscono l'utilizzo del ruolo

Azioni a livello di account  
+ Modifiche di **accesso alle chiavi tra account: modifica** delle autorizzazioni per le chiavi in diversi account
+ **Policy di controllo dei servizi (SCPs): politiche** a livello di organizzazione che limitano l'accesso AWS KMS 
+ Policy **IAM a livello di account: politiche** che hanno la precedenza o sono in conflitto con l'accesso chiave

**Importante**  
Qualsiasi modifica alle AWS KMS chiavi, ai ruoli IAM o alle policy utilizzate da AWS IoT Core deve essere prima testata negli ambienti di sviluppo. Monitora attentamente lo stato di integrità delle chiavi dopo aver apportato modifiche per garantire che AWS IoT Core le funzionalità non ne risentano.

#### Aggiornamento della configurazione di crittografia
<a name="key-transition"></a>

Aggiorna la configurazione di crittografia AWS IoT Core per passare da una chiave gestita dal cliente a un'altra o tra chiavi AWS di proprietà e chiavi gestite dal cliente.

Per modificare la configurazione con una chiave gestita dal cliente diversa:

1. Crea una nuova chiave gestita dal cliente seguendo i passaggi seguenti[Fase 1: creare una chiave gestita dal cliente](#encryption-at-rest-cmk-create).

1. Aggiorna la tua policy sui ruoli IAM per includere le autorizzazioni sia per la vecchia che per la nuova chiave durante il periodo di aggiornamento.

1. Aggiorna la configurazione di crittografia per utilizzare la nuova chiave:

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/new-key-id"
   ```

Per modificare la configurazione da chiavi gestite dal cliente a chiavi AWS di proprietà:

```
aws iot update-encryption-configuration --encryption-type "AWS_OWNED_KMS_KEY"
```

**Nota**  
Quando aggiorni la configurazione di crittografia per le nuove chiavi gestite dal cliente, assicurati che sia la vecchia che la nuova chiave rimangano accessibili affinché l'operazione abbia successo.

##### Scenari di errore e impatti comuni
<a name="failure-scenarios"></a>

La tabella seguente descrive gli scenari di errore più comuni quando le chiavi vengono eliminate o disattivate:


| Scenario | Impatto immediato | Le conseguenze a lungo termine | 
| --- | --- | --- | 
|  Chiave disattivata  |  Tutte le nuove encryption/decryption operazioni falliscono immediatamente  |  Interruzione del servizio fino alla riattivazione o alla sostituzione della chiave  | 
|  Chiave pianificata per l'eliminazione  |  Lo stato della chiave viene modificato in In attesa di eliminazione e tutte le encryption/decryption operazioni avranno esito negativo  |  Errore automatico del servizio al termine dell'eliminazione  | 
|  Chiave eliminata definitivamente  |  Fallimento immediato e permanente di tutte le operazioni  |  Perdita permanente dei dati e impossibilità di recuperare i dati crittografati  | 
|  Politica chiave modificata in modo errato  |  AWS IoT Core perde i permessi di accesso alla chiave  |  Guasti del servizio fino alla correzione della politica  | 
|  Ruolo IAM eliminato  |  AWS IoT Core non può assumere il ruolo di chiave di accesso  |  Errore completo del servizio di crittografia  | 
|  Il ruolo IAM è stato modificato in modo errato  |  AWS IoT Core non può assumere il ruolo o utilizzare il ruolo per accedere alla chiave  |   Guasti del servizio fino alla correzione del ruolo IAM  | 

##### Prevenzione e best practice
<a name="prevention-best-practices"></a>

Per prevenire l'eliminazione o la disattivazione accidentale delle chiavi e ridurre al minimo il rischio di guasti del servizio:

Implementa le politiche chiave relative al ciclo di vita  
Stabilisci procedure chiare per la creazione, la rotazione e il ritiro delle chiavi. Documenta quali chiavi vengono utilizzate da quali AWS IoT Core risorse e mantieni un inventario delle chiavi attive.

Utilizza le policy IAM per limitare l'eliminazione delle chiavi  
Crea policy IAM che impediscano agli utenti non autorizzati di eliminare o disabilitare le chiavi di crittografia critiche. Utilizza le condizioni per richiedere un'ulteriore approvazione per le operazioni di eliminazione delle chiavi.

Abilita la CloudTrail registrazione  
Monitora tutte le operazioni AWS KMS chiave CloudTrail per rilevare attività di gestione delle chiavi non autorizzate o accidentali. Imposta avvisi per l'eliminazione, la disabilitazione o la modifica delle politiche delle chiavi.

Prova le procedure di sostituzione delle chiavi  
Verifica regolarmente le tue procedure di sostituzione delle chiavi in ambienti non di produzione per assicurarti di poter ripristinare rapidamente i guasti relativi alle chiavi.

Mantenete i backup chiave  
Sebbene non sia possibile esportare il materiale AWS KMS chiave, conservate registrazioni dettagliate delle chiavi ARNs, delle politiche e delle AWS IoT Core configurazioni associate per facilitare la sostituzione rapida delle chiavi, se necessario.

Monitora lo stato delle chiavi  
Monitora continuamente la `CMK.Health` metrica e imposta avvisi automatici per le principali modifiche dello stato di salute. Implementa risposte automatiche per risolvere rapidamente i problemi principali.

**Importante**  
Verifica sempre le procedure di aggiornamento chiave negli ambienti di sviluppo prima di implementarle in produzione. Predisponi di un piano di rollback documentato e assicurati che le procedure di sostituzione delle chiavi possano essere eseguite rapidamente in caso di emergenza.

### Fase 6: Monitoraggio dello stato delle chiavi
<a name="health-status-monitoring"></a>

Nell'ambito dei controlli periodici, AWS IoT Core vengono emessi CloudWatch parametri e registri per fornire visibilità sullo stato di integrità della configurazione chiave gestita dal cliente

AWS IoT Core emette la `CMK.Health` metrica almeno una volta al minuto. CloudWatch La metrica fornisce informazioni sullo stato di integrità delle chiavi gestite dal cliente utilizzate AWS IoT Core per crittografare e decrittografare i dati.

La `CMK.Health` metrica può avere i seguenti valori:
+ Il valore è`1`: AWS IoT Core è in grado di utilizzare correttamente le chiavi di crittografia per crittografare e decrittografare i dati.
+ Il valore è`0`: non AWS IoT Core è in grado di utilizzare le chiavi di crittografia per crittografare e decrittografare i dati.

AWS IoT Core emette anche i log AWS IoT V2 quando cambia lo stato di integrità delle chiavi di crittografia. Questi registri forniscono ulteriori dettagli sull'aggiornamento dello stato di salute. Per visualizzare questi registri, è necessario abilitare i registri AWS IoT V2. I `HEALTHY` log vengono emessi a `INFO` livello e i `UNHEALTHY` log vengono emessi a livello. `ERROR` [Per ulteriori informazioni sui livelli di registro, vedere Livelli di registro.](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level)

Gli esempi seguenti sono voci di CloudWatch registro emesse da AWS IoT Core per indicare l'aggiornamento dello stato di integrità delle chiavi gestite dal cliente.

Per monitorare e rispondere efficacemente ai principali cambiamenti dello stato di salute:

1. **Imposta gli CloudWatch allarmi** per la `CMK.Health` metrica:

   ```
   aws cloudwatch put-metric-alarm --region us-west-2 \
     --alarm-name "IoTCore-CMK-Health-Alert" \
     --alarm-description "Alert when IoT Core CMK health is unhealthy" \
     --metric-name "CMK.Health" \
     --namespace "AWS/IoT" \
     --statistic "Minimum" \
     --period 300 \
     --evaluation-periods 1 \
     --threshold 1 \
     --comparison-operator "LessThanThreshold" \
     --alarm-actions "arn:aws:sns:us-west-2:111122223333:iot-alerts"
   ```

1. **Abilita la registrazione AWS IoT V2 per acquisire** eventi dettagliati di modifica dello stato di salute con codici e messaggi di errore.

1. **Controlla lo stato della configurazione** per la risoluzione dei problemi:

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

1. **Analizza lo stato NON SANO** esaminando il `errorCode` campo:
   + `KMS_KEY_VALIDATION_ERROR`— Problema con la AWS KMS chiave (disattivata, eliminata o problemi relativi alle policy)
   + `ROLE_VALIDATION_ERROR`— Problema relativo al ruolo IAM (eliminazione, problemi relativi alle policy o problemi di fiducia)

#### Da MALSANO a SANO
<a name="unhealthy-to-healthy"></a>

Quando lo stato delle chiavi di crittografia viene aggiornato da `UNHEALTHY` a`HEALTHY`, AWS IoT Core emetterà un messaggio di registro AWS IoT V2 nel seguente formato.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "SUCCESS",
    "cmkStatus": "HEALTHY",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

#### Da HEALTHY a UNHEALTHY
<a name="healthy-to-unhealthy"></a>

Quando lo stato delle chiavi di crittografia viene aggiornato da `HEALTHY` a`UNHEALTHY`, AWS IoT Core emetterà un messaggio di registro AWS IoT V2 nel seguente formato.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "ERROR",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "FAILURE",
    "cmkStatus": "UNHEALTHY",
    "errorCode": "KMS_KEY_VALIDATION_ERROR / ROLE_VALIDATION_ERROR",
    "errorMessage": "Error message on why there was a failure",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

**avvertimento**  
Quando la chiave diventa integra`UNHEALTHY`, AWS IoT Core le operazioni falliscono immediatamente. In tal caso, esamina le configurazioni chiave, le autorizzazioni dei ruoli IAM e le policy. Monitora la `CMK.Health` metrica per le modifiche allo stato. Se le operazioni continuano a fallire dopo aver esaminato le configurazioni, contatta il tuo account manager o il [AWS Support Center](https://console.aws.amazon.com/support/home#/) per ulteriore assistenza.

#### AWS CloudTrail eventi
<a name="aws-cloudtrail-events"></a>

È inoltre possibile monitorare l'utilizzo AWS IoT Core della chiave KMS per le operazioni di crittografia e decrittografia. AWS IoT Core `DescribeKey`effettuerà e eseguirà `GenerateDataKeyWithoutPlaintext` operazioni sulla tua chiave KMS per crittografare/decrittografare i dati che appartengono al tuo account archiviati in archivio. `Decrypt` `ReEncrypt` AWS 

Ci sono CloudTrail eventi per`DescribeKey`,, e`Decrypt`. `ReEncrypt` `GenerateDataKeyWithoutPlaintext` Questi eventi monitorano AWS KMS le operazioni chiamate AWS IoT Core ad accedere ai dati crittografati dalla chiave gestita dal cliente.

##### `Decrypt` Esempio
<a name="decrypt"></a>

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "*********************",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "*****"
            },
            "attributes": {
                "creationDate": "2024-09-16T20:23:39Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "iot.amazonaws.com"
    },
    "eventTime": "2024-09-16T20:32:48Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "iot.amazonaws.com",
    "userAgent": "iot.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "aws-crypto-ec:vendor": "iot.amazonaws.com",
            "branch-key-id": "111122223333",
            "type": "branch:ACTIVE"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    },
    "responseElements": null,
    "requestID": "1afb6d98-8388-455d-8b48-e62c9e0cf7f4",
    "eventID": "b59a5f16-0d98-46d8-a590-0e040a48b39b",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```