View a markdown version of this page

Crittografia dei dati inattivi in AWS IoT Core - AWS IoT Core

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

Crittografia dei dati inattivi in AWS IoT Core

Per impostazione predefinita, tutti i AWS IoT Core dati inattivi vengono crittografati utilizzando chiavi AWS di proprietà. AWS IoT Core supporta anche chiavi simmetriche gestite dal cliente da AWS Key Management Service ()AWS KMS. Con le chiavi gestite dal cliente, 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 gestione delle relative politiche chiave. Puoi anche configurare le politiche IAM per i ruoli che accedono per AWS KMS controllare le autorizzazioni per queste chiavi.

AWS chiavi possedute

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

Per ulteriori informazioni sulle chiavi AWS possedute, consulta le chiavi AWS possedute nella Guida per AWS Key Management Service gli sviluppatori.

Chiavi gestite dal cliente

Le chiavi gestite dal cliente sono chiavi KMS presenti nel tuo AWS account che crei, possiedi e gestisci. Hai il pieno controllo su queste AWS KMS chiavi, inclusa la creazione e la gestione delle relative politiche chiave. Puoi anche configurare le policy IAM per i ruoli che accedono AWS KMS per controllare le autorizzazioni per queste chiavi. Puoi configurare l'uso 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 nella Guida per gli sviluppatori di AWS Key Management Service .

Per attivare le chiavi gestite dal cliente AWS IoT Core, segui questi passaggi:

Fase 1: creare una chiave gestita dal cliente

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

Nota

AWS IoT Core supporta solo AWS KMS le SYMMETRIC_DEFAULT chiavi con specifiche e l'utilizzo delle ENCRYPT_DECRYPT 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 AWS IoT Core per le chiavi gestite dal cliente.

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, vedere Creazione di una chiave simmetrica gestita dal cliente nella AWS Key Management Service Developer Guide.

Policy della chiave

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 nella Guida per AWS Key Management Service gli sviluppatori.

AWS IoT Core utilizza un ruolo IAM nel tuo account per accedere alla chiave gestita dal cliente. Se stai utilizzando una policy per le chiavi 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 da concedere AWS IoT Core autorizzazioni per utilizzare la chiave KMS

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 l'accesso alla chiave KMS.

Il ruolo deve avere la seguente politica di fiducia per consentire l'assunzione AWS IoT Core 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 politiche IAM associate al ruolo IAM dispongano delle 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 dal cliente.

{ "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. AWS Identity and Access Management

Fase 3: Attiva le chiavi gestite dal cliente AWS IoT Core

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
  2. 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 l'accesso alle 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 AWS IoT Core operazioni sul piano di controllo

Dopo aver optato per 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:Decryptautorizzazione ed effettua una chiamata API che richiede la crittografia o la decrittografia dei dati (ad esempio), GetPolicy riceverà un. UnauthorizedException

Ad esempio, quando chiamiGetPolicy, hai bisogno di entrambe le iot:GetPolicy kms:Decrypt autorizzazioni sulla chiave KMS gestita dal cliente affinché la chiamata API abbia esito positivo.

Nota

Quando aggiorni gli utenti o i 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

La chiamata UpdateEncryptionConfiguration API richiede le seguenti AWS KMS autorizzazioni sulla chiave KMS per poter attivare le chiavi gestite dal cliente o per modificare la configurazione della chiave:

  • kms:DescribeKey

  • kms:Decrypt

  • kms:Encrypt

  • kms:GenerateDataKeyWithoutPlaintext

  • kms:ReEncryptTo

  • kms:ReEncryptFrom

AWS KMS autorizzazioni per tutte le altre API del piano di controllo

La maggior parte delle API del piano di controllo richiede kms:Decrypt autorizzazioni quando le chiavi gestite dal cliente sono abilitate. Tuttavia, alcune API non richiedono queste autorizzazioni aggiuntive:

API che non richiedono autorizzazioni AWS KMS

Le Delete* API List* e non rientrano in questo bucket. 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 le Delete* API non eseguono alcuna decrittografia.

  • API List*: tutte le operazioni di creazione di elenchi (ad esempio,,) ListThings ListPolicies ListCertificates

  • API Delete*: tutte le operazioni di eliminazione (ad esempio,,) DeleteThing DeletePolicy DeleteCertificate

Fase 5: Gestione delle chiavi

AWS IoT Core esegue controlli periodici sulla configurazione delle chiavi gestita dal cliente per garantire che le operazioni di crittografia e decrittografia non siano compromesse. Questi controlli di integrità vengono eseguiti una volta al minuto e verificano la capacità AWS IoT Core dell'utente 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 correttamente alla AWS KMS chiave tramite il ruolo IAM specificato ed eseguire operazioni. encryption/decryption Tutti i componenti funzionano correttamente.

UNHEALTHY

AWS IoT Core non è possibile 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 chiave

Diverse azioni dei clienti possono far sì che lo stato di salute chiave passi da HEALTHY aUNHEALTHY:

Key-related azioni
  • Eliminazione di una AWS KMS chiave: quando si pianifica l'eliminazione di una chiave, questa è in uno Pending deletion stato e non può essere utilizzata

  • Disattivazione di una AWS KMS chiave: quando si disabilita una chiave KMS, questa non può più essere utilizzata per le operazioni di crittografia/decrittografia

  • Chiave di pianificazione per l'eliminazione: la chiave diventa inutilizzabile al termine dell'eliminazione

  • Modifica della politica chiave: 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 ai ruoli IAM
  • Eliminazione del ruolo IAM: impossibile AWS IoT Core assumere il ruolo di accesso alla chiave

  • Modifica delle autorizzazioni del ruolo: rimozione delle AWS KMS autorizzazioni richieste dalla politica del ruolo

  • Modifica della politica di fiducia: impedimento al AWS IoT Core servizio di assumere il ruolo

  • Aggiungere condizioni restrittive: condizioni che AWS IoT Core impediscono l'utilizzo del ruolo

Account-level azioni
  • Cross-account modifiche all'accesso alle chiavi: modifica delle autorizzazioni per le chiavi in diversi account

  • Politiche di controllo dei servizi (SCP): Organization-level politiche che limitano l'accesso AWS KMS

  • Account-level Politiche IAM: politiche che sostituiscono o sono in conflitto con l'accesso con le chiavi

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 eventuali modifiche per assicurarti che AWS IoT Core la funzionalità non venga compromessa.

Aggiornamento della configurazione di crittografia

Aggiorna la configurazione di crittografia AWS IoT Core per passare da una chiave gestita dal cliente a un'altra o tra chiavi AWS possedute 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 indicatiFase 1: creare una chiave gestita dal cliente.

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

  3. 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 dalle chiavi gestite dal cliente alle chiavi AWS possedute:

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 esito positivo.

Scenari e impatti di errore comuni

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

Scenario Impatto immediato Long-term Conseguenze

Chiave disattivata

Tutte le nuove encryption/decryption operazioni falliscono immediatamente

Interruzione del servizio fino alla riattivazione o alla sostituzione della chiave

Chiave programmata per l'eliminazione

Lo stato della chiave diventa 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 le autorizzazioni 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 un ruolo o utilizzare il ruolo per accedere alla chiave

Guasti del servizio finché il ruolo IAM non viene corretto

Prevenzione e best practice

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

Implementa 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 politiche 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'approvazione aggiuntiva per le operazioni di eliminazione delle chiavi.

Abilita la registrazione CloudTrail

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.

Verifica le procedure di sostituzione delle chiavi

Verificate regolarmente le procedure di sostituzione delle chiavi in ambienti non di produzione per assicurarvi di poter recuperare rapidamente i guasti relativi alle chiavi.

Mantieni i backup delle chiavi

Sebbene non sia possibile esportare il materiale AWS KMS chiave, mantieni registri dettagliati dei principali ARN, delle policy 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 configura 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 di salute delle chiavi

Come parte dei controlli periodici, vengono emessi CloudWatch parametri e registri per fornire visibilità sullo stato di salute della configurazione delle chiavi AWS IoT Core gestita dal cliente

AWS IoT Core emette la CMK.Health metrica almeno una volta CloudWatch al minuto. 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 registri AWS IoT V2 quando lo stato di integrità delle chiavi di crittografia cambia. 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.

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 alle principali modifiche 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"
  2. Abilita la registrazione AWS IoT V2 per acquisire eventi dettagliati di modifica dello stato di salute con codici e messaggi di errore.

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

    aws iot describe-encryption-configuration --region us-west-2
  4. Verifica lo stato UNHEALTHY esaminando il campo: errorCode

    • KMS_KEY_VALIDATION_ERROR— Problema con la AWS KMS chiave (disattivata, eliminata o problemi relativi alle policy)

    • ROLE_VALIDATION_ERROR— Problema con il ruolo IAM (eliminato, problemi relativi alle policy o problemi di fiducia)

Da UNHEALTHY a HEALTHY

Quando lo stato delle chiavi di crittografia viene aggiornato da UNHEALTHY aHEALTHY, 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

Quando lo stato delle chiavi di crittografia viene aggiornato da HEALTHY aUNHEALTHY, 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 integraUNHEALTHY, AWS IoT Core le operazioni falliscono immediatamente. In tal caso, rivedi le configurazioni chiave, le autorizzazioni dei ruoli IAM e le policy. Monitora la CMK.Health metrica per le modifiche di stato. Se le operazioni continuano a fallire dopo aver esaminato le configurazioni, contatta il tuo account manager o il Centro AWS assistenza per ulteriore assistenza.

Monitoraggio dello stato della rotazione delle chiavi di fil

AWS IoT Core utilizza una struttura di chiavi gerarchica per crittografare i dati. In cima a questa gerarchia c'è la tua AWS KMS chiave (la chiave gestita dal cliente che configuri). Di seguito, AWS IoT Core mantiene le chiavi di filiale, ovvero le chiavi interne derivate dalla tua AWS KMS chiave. AWS IoT Core utilizza quindi queste chiavi di derivazione per generare chiavi di wrapping uniche, che eseguono la crittografia e la decrittografia effettive dei dati. Questo approccio a più livelli limita l'ambito di ogni singola chiave e segue AWS le migliori pratiche di crittografia. AWS IoT Core gestisce le chiavi di filiale come dettaglio interno di implementazione, separato dalla rotazione delle AWS KMS chiavi, che viene AWS KMS gestita direttamente. Per ulteriori informazioni, consulta Ruotare la chiave di filiale attiva.

AWS IoT Core ruota le chiavi di filiale ogni anno come best practice di sicurezza. La rotazione crea una nuova versione attiva della chiave di filiale preservando le versioni precedenti per la decrittografia dei dati esistenti. Questa rotazione richiede l'kms:Encryptautorizzazione sul ruolo IAM associato alla configurazione della chiave gestita dal cliente. AWS IoT Core emette la CMK.BranchKeyRotationHealth metrica CloudWatch una volta al minuto per indicare se il ruolo di AWS KMS accesso dispone delle autorizzazioni necessarie per la rotazione.

La CMK.BranchKeyRotationHealth metrica può avere i seguenti valori:

  • Il valore è1: il ruolo di AWS KMS accesso dispone dell'kms:Encryptautorizzazione richiesta e la rotazione delle chiavi di ramo può procedere normalmente.

  • Il valore è0: AWS KMS al ruolo di accesso manca l'kms:Encryptautorizzazione e la rotazione delle chiavi di diramazione non può essere eseguita. Le operazioni di decrittografia esistenti continueranno a funzionare normalmente, ma non AWS IoT Core saranno in grado di ruotare le chiavi di filiale fino al ripristino dell'autorizzazione. Aggiungilo kms:Encrypt al tuo ruolo di AWS KMS accesso per riattivare la rotazione. Per l'elenco completo delle autorizzazioni richieste, consulta Criteri chiave.

Nota

Un valore pari a 0 non indica un'interruzione delle operazioni correnti AWS IoT Core . I tuoi dati rimangono crittografati e accessibili. Tuttavia, è necessario aggiornare tempestivamente le autorizzazioni del ruolo di AWS KMS accesso per garantire che le chiavi di filiale possano essere ruotate nei tempi previsti.

Per ricevere una notifica quando la rotazione delle chiavi di filiale non può procedere, imposta un CloudWatch allarme per la metrica: CMK.BranchKeyRotationHealth

aws cloudwatch put-metric-alarm --region us-west-2 \ --alarm-name "IoTCore-CMK-BranchKeyRotationHealth-Alert" \ --alarm-description "Alert when IoT Core branch key rotation health is degraded" \ --metric-name "CMK.BranchKeyRotationHealth" \ --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"

AWS CloudTrail eventi

Puoi anche monitorare l'utilizzo AWS IoT Core della chiave KMS per le operazioni di crittografia e decrittografia. AWS IoT Core eseguirà DescribeKey DecryptReEncrypt, e effettuerà GenerateDataKeyWithoutPlaintext operazioni sulla chiave KMS per crittografare e decrittografare i dati appartenenti al tuo account archiviati come inattivi. AWS

Sono disponibili CloudTrail eventi perDescribeKey,, eDecrypt. ReEncrypt GenerateDataKeyWithoutPlaintext Questi eventi monitorano AWS KMS le operazioni richieste AWS IoT Core per accedere ai dati crittografati dalla chiave gestita dal cliente.

Esempio di decrittografia
{ "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" }