Distribuzione dei segreti nel core AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.

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

Distribuzione dei segreti nel core AWS IoT Greengrass

Questa caratteristica è disponibile perAWS IoT GreengrassCore v1.7 e successive.

AWS IoT Greengrass ti consente di eseguire l'autenticazione con i servizi e le applicazioni dai dispositivi Greengrass senza impostare come hard-coded le password, i token o altri segreti.

AWS Secrets Managerè un servizio utilizzabile per archiviare e gestire in modo sicuro i tuoi segreti nel cloud.AWS IoT Greengrassestende Secrets Manager ai dispositivi core Greengrass, in modo che il tuoconnettorie le funzioni Lambda possono utilizzare i segreti locali per interagire con i servizi e le applicazioni. Ad esempio, il connettore notifiche Twilio utilizza un token di autenticazione memorizzato localmente.

Per integrare un segreto in un gruppo Greengrass, è necessario creare una risorsa di gruppo che faccia riferimento al segreto Secrets Manager. Questa risorsa segreta fa riferimento al segreto del cloud tramite ARN. Per ulteriori informazioni su come creare, gestire e utilizzare le risorse segrete, consulta Utilizzo delle risorse segrete.

AWS IoT Greengrass crittografa i tuoi segreti mentre sono in transito e quando sono inattivi. Durante l'installazione di gruppo,AWS IoT Greengrassrecupera il segreto da Secrets Manager e crea un copia cifrata locale nel dispositivo core Greengrass. Dopo avere ruotato i segreti del cloud in Secrets Manager, ridistribuisci il gruppo per propagare i valori aggiornati al core.

Lo schema seguente mostra il processo di alto livello di distribuzione di un segreto al core. I segreti vengono crittografati mentre sono in transito e quando sono inattivi.

AWS IoT Greengrassrecupera un segreto daAWS Secrets Managere lo distribuisce come risorsa segreta al dispositivo core, dove è disponibile per i connettori e per le funzioni Lambda.

L'utilizzo di AWS IoT Greengrass per l'archiviazione locale dei segreti offre i seguenti vantaggi:

  • Disassociazione dal codice (non hardcoded). Supporta le credenziali gestite a livello centralizzato e consente di proteggere i dati sensibili dal rischio di compromissione.

  • Disponibile per gli scenari offline. I connettori e le funzioni sono in grado di accedere in modo sicuro al software e ai servizi locali anche quando non sono connessi a Internet.

  • Accesso controllato ai segreti Solo le funzioni e i connettori autorizzati del gruppo possono accedere ai tuoi segreti. AWS IoT Greengrass utilizza la crittografia con chiave privata per proteggere i segreti. I segreti vengono crittografati mentre sono in transito e quando sono inattivi. Per ulteriori informazioni, consulta la pagina Crittografia dei segreti .

  • Rotazione controllata. Dopo avere ruotato i segreti in Secrets Manager, ridistribuisci il gruppo Greengrass per aggiornare le copie locali dei segreti. Per ulteriori informazioni, consulta la pagina Creazione e gestione di segreti .

    Importante

    AWS IoT Greengrass non aggiorna automaticamente i valori dei segreti locali dopo la rotazione delle versioni cloud. Per aggiornare i valori locali, è necessario distribuire di nuovo il gruppo.

Crittografia dei segreti

AWS IoT Greengrass crittografa i segreti mentre sono in transito e quando sono inattivi.

Importante

Assicurati che le funzioni Lambda definite dall'utente gestiscano i segreti in modo sicuro e non registrino alcun dato sensibile memorizzato nel segreto. Per ulteriori informazioni, consultaRiduzione dei rischi di logging e debug nella funzione LambdanellaAWS Secrets ManagerGuida per l’utente di. Sebbene questa documentazione si riferisca specificamente alle funzioni di rotazione, la raccomandazione si applica anche alle funzioni Greengrass Lambda.

Crittografia in transito

AWS IoT Greengrass utilizza Transport Layer Security (TLS) per crittografare tutte le comunicazioni su Internet e sulla rete locale. Ciò protegge segreti mentre sono in transito, ovvero quando vengono recuperati da Secrets Manager e distribuiti al core. Per informazioni sulle suite di cifratura TLS supportate, consulta Supporto TLS per le suite di cifratura.

Funzione Encryption at Rest

AWS IoT Greengrass utilizza la chiave privata specificata in config.json per la crittografia dei segreti archiviati nel core. Pertanto, per la protezione dei segreti locali è fondamentale l'archiviazione sicura della chiave privata. NellaAWS modello di responsabilità condivisaè responsabilità del cliente garantire l'archiviazione sicura della chiave privata sul dispositivo core.

AWS IoT Greengrass supporta due modalità di archiviazione delle chiavi private:

  • Utilizzo dei moduli di sicurezza hardware Per ulteriori informazioni, consulta la pagina Integrazione della sicurezza hardware .

    Nota

    Attualmente,AWS IoT Greengrasssupporta solo ilPKCS #1 v1.5meccanismo di riempimento per la crittografia e la decrittografia dei segreti locali quando si utilizzano chiavi private basate su hardware. Se segui le istruzioni fornite dal fornitore per generare manualmente chiavi private basate su hardware, assicurati di scegliere PKCS #1 v1.5.AWS IoT Greengrassnon supporta Optimal Asymmetric Encryption Padding (OAEP).

  • Utilizzo delle autorizzazioni del file system (impostazione predefinita).

La chiave privata viene utilizzata per proteggere la chiave di dati, utilizzate per crittografare i segreti locali. La chiave di dati viene ruotata con ciascuna distribuzione del gruppo.

LaAWS IoT Greengrasscore è l'unica entità che dispone dell'accesso alla chiave privata. I connettori Greengrass o le funzioni Lambda affiliati a una risorsa segreta recuperano il valore del segreto dal core.

Requisiti

Di seguito sono indicati i requisiti per il supporto dei segreti locali:

  • È necessario utilizzareAWS IoT GreengrassCore v1.7 o successive.

  • Per ottenere i valori dei segreti locali, è necessario utilizzare le funzioni Lambda definite dall'utenteAWS IoT GreengrassCore SDK v1.3.0 o versioni successive.

  • La chiave privata utilizzata per la crittografia dei segreti locali deve essere specificata nel file di configurazione di Greengrass. Per impostazione predefinita, AWS IoT Greengrass utilizza la chiave privata del core memorizzata nel file system. Per fornire una chiave privata personalizzata, consulta Specificare la chiave privata per la crittografia dei segreti. Solo il tipo di chiave RSA è supportato.

    Nota

    Attualmente,AWS IoT Greengrasssupporta solo ilPKCS #1 v1.5meccanismo di riempimento per la crittografia e la decrittografia dei segreti locali quando si utilizzano chiavi private basate su hardware. Se segui le istruzioni fornite dal fornitore per generare manualmente chiavi private basate su hardware, assicurati di scegliere PKCS #1 v1.5.AWS IoT Greengrassnon supporta Optimal Asymmetric Encryption Padding (OAEP).

  • A AWS IoT Greengrass deve essere concessa l'autorizzazione all'ottenimento dei valori segreti. In questo modo, AWS IoT Greengrass potrà recuperare i valori durante la distribuzione del gruppo. Se stai utilizzando il ruolo del servizio Greengrass predefinito, AWS IoT Greengrass avrà già accesso ai segreti con nomi che iniziano con greengrass-. Per personalizzare l'accesso, consulta Consentire a AWS IoT Greengrass di ottenere i valori segreti.

    Nota

    Ti consigliamo di utilizzare questa convenzione di denominazione per identificare i segreti a cui può accedere AWS IoT Greengrass, anche nel caso di personalizzazione delle autorizzazioni. La console utilizza varie autorizzazioni per leggere i segreti, pertanto è possibile che tu possa selezionare i segreti nella console per cui AWS IoT Greengrass non dispone dell'autorizzazione al recupero. L'utilizzo di una convenzione di denominazione può aiutarti a evitare un conflitto di autorizzazioni, che potrebbe causare un errore di distribuzione.

Specificare la chiave privata per la crittografia dei segreti

In questa procedura, specifichi il percorso di una chiave privata utilizzata per la crittografia segreta locale. Deve essere una chiave RSA con una lunghezza minima di 2048 bit. Per ulteriori informazioni sulle chiavi private utilizzate nellaAWS IoT Greengrasscore, vediAWS IoT Greengrass principi di sicurezza fondamentali.

AWS IoT Greengrass supporta due modi di storage di chiave privata: basato su hardware o basato su file system (impostazione predefinita). Per ulteriori informazioni, consulta la pagina Crittografia dei segreti .

Segui questa procedura solo se desideri modificare la configurazione predefinita, che utilizza la chiave privata del core nel file system. Queste fasi presuppongono che il gruppo e il core siano stati creati come descritto nel Modulo 2 del tutorial Nozioni di base.

  1. Apri il file config.json disponibile nella directory /greengrass-root/config.

    Nota

    greengrass-root rappresenta il percorso dove è installato il software AWS IoT Greengrass Core sul dispositivo. In genere, questa è la directory /greengrass.

  2. Nell'oggetto crypto.principals.SecretsManager, per la proprietà privateKeyPath, immettere il percorso della chiave privata:

    • Se la chiave privata viene archiviata nel file system, specifica il percorso assoluto della chiave. Ad esempio:

      "SecretsManager" : { "privateKeyPath" : "file:///somepath/hash.private.key" }
    • Se la chiave privata è archiviata in un modulo di sicurezza hardware (HSM), specifica il percorso utilizzando lo schema URI RFC 7512 PKCS#11. Ad esempio:

      "SecretsManager" : { "privateKeyPath" : "pkcs11:object=private-key-label;type=private" }

      Per ulteriori informazioni, consulta la pagina Configurazione di sicurezza hardware per un AWS IoT Greengrass core .

      Nota

      Attualmente,AWS IoT Greengrasssupporta solo ilPKCS #1 v1.5meccanismo di riempimento per la crittografia e la decrittografia dei segreti locali quando si utilizzano chiavi private basate su hardware. Se segui le istruzioni fornite dal fornitore per generare manualmente chiavi private basate su hardware, assicurati di scegliere PKCS #1 v1.5.AWS IoT Greengrassnon supporta Optimal Asymmetric Encryption Padding (OAEP).

Consentire a AWS IoT Greengrass di ottenere i valori segreti

In questa procedura, aggiungerai una policy inline per il ruolo del servizio Greengrass che consente a AWS IoT Greengrass di ottenere i valori dei segreti.

Segui questa procedura solo se desideri concedere a AWS IoT Greengrass autorizzazioni personalizzate per i segreti o se il ruolo del servizio Greengrass non include la policy gestita AWSGreengrassResourceAccessRolePolicy. AWSGreengrassResourceAccessRolePolicyconcede l'accesso ai segreti con nomi che iniziano con greengrass-.

  1. Eseguire i seguenti comandi della CLI per ottenere l'ARN del ruolo del servizio Greengrass:

    aws greengrass get-service-role-for-account --region region

    L'ARN restituito include il nome del ruolo.

    { "AssociatedAt": "time-stamp", "RoleArn": "arn:aws:iam::account-id:role/service-role/role-name" }

    Puoi utilizzare l'ARN o il nome nella fase seguente.

  2. Aggiungere una policy inline che autorizza l'azione secretsmanager:GetSecretValue. Per istruzioni, consultaAggiunta e rimozione di policy IAMnellaIAM User Guide.

    È possibile concedere l'accesso granulare elencando esplicitamente i segreti oppure utilizzando uno schema di denominazione con il carattere jolly *. In alternativa, è possibile concedere l'accesso condizionale ai segreti con versioni o tag. Ad esempio, la policy seguente consente a AWS IoT Greengrass di leggere solo i segreti specificati.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:account-id:secret:greengrass-SecretA-abc", "arn:aws:secretsmanager:region:account-id:secret:greengrass-SecretB-xyz" ] } ] }
    Nota

    Se utilizzi una chiave AWS KMS gestita dal cliente per crittografare i segreti, il ruolo del servizio Greengrass deve consentire anche l'operazione kms:Decrypt.

Per ulteriori informazioni sulle policy IAM per Secrets Manager, consultaAutenticazione e controllo degli accessi perAWS Secrets ManagereOperazioni, risorse e chiavi del contesto utilizzabili in una policy IAM o in una policy dei segreti perAWS Secrets ManagernellaAWS Secrets ManagerGuida per l’utente di.

Consultare anche