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à.
Panoramica della AWS IoT Greengrass sicurezza
AWS IoT Greengrass utilizza certificati, AWS IoT policy e ruoli IAM X.509 per proteggere le applicazioni eseguite sui dispositivi nell'ambiente Greengrass locale.
Il diagramma seguente mostra i componenti del modello di sicurezza: AWS IoT Greengrass
- A - Ruolo del servizio Greengrass
-
Un ruolo IAM creato dal cliente che si assume AWS IoT Greengrass quando si accede alle AWS risorse da AWS IoT Core e altri servizi. AWS Lambda AWS Per ulteriori informazioni, consulta Ruolo del servizio Greengrass.
- B - Certificato dispositivo core
-
Un certificato X.509 utilizzato per autenticare un core Greengrass con e. AWS IoT Core AWS IoT Greengrass Per ulteriori informazioni, consulta Autenticazione e autorizzazione del dispositivo per AWS IoT Greengrass.
- C - Certificato dispositivo
-
Un certificato X.509 utilizzato per autenticare un dispositivo client, noto anche come dispositivo connesso, con e. AWS IoT Core AWS IoT Greengrass Per ulteriori informazioni, consulta Autenticazione e autorizzazione del dispositivo per AWS IoT Greengrass.
- D - Ruolo gruppo
-
Un ruolo IAM creato dal cliente assunto da AWS IoT Greengrass quando si chiamano AWS servizi da un core Greengrass.
Questo ruolo viene utilizzato per specificare le autorizzazioni di accesso necessarie alle funzioni e ai connettori Lambda definiti dall'utente per accedere ai AWS servizi, come DynamoDB. Lo usi anche per consentire di AWS IoT Greengrass esportare i flussi dello stream manager nei servizi e scriverli AWS nei registri. CloudWatch Per ulteriori informazioni, consulta Ruolo del gruppo Greengrass.
Nota
AWS IoT Greengrass non utilizza il ruolo di esecuzione Lambda specificato AWS Lambda per la versione cloud di una funzione Lambda.
- Certificato server e-MQTT
-
Il certificato utilizzato per l'autenticazione reciproca Transport Layer Security (TLS) tra un dispositivo core Greengrass e i dispositivi client del gruppo Greengrass. Il certificato è firmato dal certificato CA di gruppo, che è memorizzato in. Cloud AWS
Flusso di lavoro di connessione del dispositivo
Questa sezione descrive come i dispositivi client si connettono al AWS IoT Greengrass servizio e ai dispositivi core Greengrass. I dispositivi client sono AWS IoT Core dispositivi registrati che fanno parte dello stesso gruppo Greengrass del dispositivo principale.
-
Un dispositivo core Greengrass utilizza il certificato del dispositivo, la chiave privata e il certificato CA AWS IoT Core principale per connettersi al AWS IoT Greengrass servizio. Sul dispositivo principale, l'oggetto
crypto
nel file di configurazione specifica il percorso del file per questi elementi. -
Il dispositivo core Greengrass scarica le informazioni sull'appartenenza al gruppo dal servizio AWS IoT Greengrass .
-
Quando viene effettuata una distribuzione sul dispositivo core di Greengrass, Device Certificate Manager (DCM) si occupa della gestione dei certificati del server locale per il dispositivo core Greengrass.
-
Un dispositivo client si connette al AWS IoT Greengrass servizio utilizzando il certificato del dispositivo, la chiave privata e il certificato CA AWS IoT Core principale. Dopo aver effettuato la connessione, il dispositivo client utilizza il Greengrass Discovery Service per trovare l'indirizzo IP del suo dispositivo principale Greengrass. Il dispositivo client scarica anche il certificato CA di gruppo, che viene utilizzato per l'autenticazione reciproca TLS con il dispositivo principale Greengrass.
-
Un dispositivo client tenta di connettersi al dispositivo principale Greengrass, trasmettendone il certificato del dispositivo e l'ID client. Se l'ID client corrisponde al nome dell'oggetto del dispositivo client e il certificato è valido (parte del gruppo Greengrass), viene stabilita la connessione. In caso contrario, la connessione viene terminata.
La AWS IoT politica per i dispositivi client deve concedere l'greengrass:Discover
autorizzazione per consentire ai dispositivi client di scoprire le informazioni di connettività relative al core. Per ulteriori informazioni sull’istruzione di policy, consulta Rilevamento.
Configurazione della sicurezza AWS IoT Greengrass
Per configurare la sicurezza dell'applicazione Greengrass:
-
Crea AWS IoT Core qualcosa per il tuo dispositivo principale Greengrass.
-
Generare una coppia di chiavi e un certificato di dispositivo per il dispositivo core Greengrass.
-
Creare e collegare una policy AWS IoT al certificato del dispositivo. Il certificato e la policy consentono al dispositivo principale di Greengrass di accedere ai servizi AWS IoT Core e AWS IoT Greengrass ai servizi. Per ulteriori informazioni, consulta Policy AWS IoT minima per il dispositivo core.
Nota
L'uso di thing policy variables (
iot:Connection.Thing.
) nella AWS IoT policy per un dispositivo principale non è supportato. Il core utilizza lo stesso certificato del dispositivo per effettuare più connessioni AWS IoT Core , ma l'ID client in una connessione potrebbe non corrispondere esattamente al nome dell'oggetto principale.*
-
Creare un ruolo di servizio Greengrass. Questo ruolo IAM AWS IoT Greengrass autorizza l'accesso alle risorse di altri AWS servizi per tuo conto. Ciò consente di AWS IoT Greengrass eseguire attività essenziali, come il recupero delle AWS Lambda funzioni e la gestione delle ombre dei dispositivi.
Puoi utilizzare lo stesso ruolo di servizio su Regione AWS s, ma deve essere associato al tuo Account AWS in ogni Regione AWS luogo in cui lo utilizzi. AWS IoT Greengrass
-
(Facoltativo) Creare un ruolo del gruppo Greengrass. Questo ruolo IAM concede l'autorizzazione alle funzioni e ai connettori Lambda in esecuzione su un core Greengrass per chiamare i servizi. AWS Ad esempio, il connettore Kinesis Firehose richiede l'autorizzazione a scrivere record in un flusso di distribuzione di Amazon Data Firehose.
È possibile associare un solo ruolo a un gruppo Greengrass.
-
Crea AWS IoT Core qualcosa per ogni dispositivo che si connette al tuo core Greengrass.
Nota
Puoi anche usare AWS IoT Core oggetti e certificati esistenti.
-
Crea certificati, coppie di chiavi e AWS IoT policy per ogni dispositivo che si connette al tuo core Greengrass.
AWS IoT Greengrass principi di sicurezza fondamentali
Il core Greengrass utilizza i seguenti principi di sicurezza: AWS IoT client, server MQTT locale e gestore dei segreti locali. La configurazione per questi principal è memorizzata nell'oggetto crypto
nel file di configurazione config.json
. Per ulteriori informazioni, consulta File di configurazione di AWS IoT Greengrass Core.
Questa configurazione include il percorso della chiave privata utilizzata dal componente principal per l'autenticazione e la crittografia. AWS IoT Greengrass supporta due modi di storage della chiave privata: basato su hardware o basato su file system (impostazione predefinita). Per ulteriori informazioni sulla memorizzazione delle chiavi in moduli di sicurezza hardware, consulta Integrazione della sicurezza hardware.
- AWS IoT Cliente
-
Il AWS IoT client (client IoT) gestisce la comunicazione via Internet tra il core Greengrass e. AWS IoT Core AWS IoT Greengrass utilizza certificati X.509 con chiavi pubbliche e private per l'autenticazione reciproca quando stabilisce connessioni TLS per questa comunicazione. Per ulteriori informazioni consulta Certificati X.509 e AWS IoT Core nella Guida per sviluppatori AWS IoT Core .
Il client IoT supporta certificati e chiavi RSA ed EC. Il percorso del certificato e della chiave privata è specificato per il principal
IoTCertificate
inconfig.json
. - Server MQTT
-
Il server MQTT locale gestisce la comunicazione sulla rete locale tra il core Greengrass e i dispositivi client del gruppo. AWS IoT Greengrass utilizza certificati X.509 con chiavi pubbliche e private per l'autenticazione reciproca quando stabilisce connessioni TLS per questa comunicazione.
Per impostazione predefinita, AWS IoT Greengrass genera automaticamente una chiave privata RSA. Per configurare il core per usare un'altra chiave privata, è necessario fornire il percorso della chiave per il principal
MQTTServerCertificate
inconfig.json
. L'utente è responsabile della rotazione di una chiave fornita dal cliente.Supporto per la chiave privata Chiave RSA Chiave CE Tipo di chiavi Supportato Supportato Parametri chiave Lunghezza minima 2048 bit Curva NIST P-256 o NIST P-384 Formato disco PKCS#1, PKCS#8 SECG1, PKCS#8 Versione GGC minima Usa chiave RSA predefinita: 1.0
Specifica una chiave RSA: 1.7
Specifica una chiave EC: 1.9
La configurazione della chiave privata determina processi correlati. Per l'elenco delle suite di cifratura supportate dal core Greengrass supporta come server, consulta Supporto TLS per le suite di cifratura.
- Se nessuna chiave privata è specificata (impostazione predefinita)
-
AWS IoT Greengrass ruota la chiave in base alle impostazioni di rotazione.
Il core genera una chiave RSA che viene utilizzata per generare il certificato.
Il certificato del server MQTT ha una chiave pubblica RSA e una firma RSA SHA-256.
- Se viene specificata una chiave privata RSA (richiede GGC v1.7 o successivo)
-
Sei responsabile della rotazione della chiave.
Il core utilizza la chiave specificata per generare il certificato.
La chiave RSA deve avere una lunghezza minima di 2048 bit.
Il certificato del server MQTT ha una chiave pubblica RSA e una firma RSA SHA-256.
- Se viene specificata una chiave privata EC (richiede GGC v1.9 o successivo)
-
Sei responsabile della rotazione della chiave.
Il core utilizza la chiave specificata per generare il certificato.
La chiave privata EC deve utilizzare una curva NIST P-256 o NIST P-384.
Il certificato del server MQTT ha una chiave pubblica EC e una firma RSA SHA-256.
Il certificato del server MQTT presentato dal core ha una firma RSA SHA-256, indipendentemente dal tipo di chiave. Per questo motivo, i client devono supportare la convalida del certificato RSA SHA-256 per stabilire una connessione sicura con il core.
- Secrets Manager
-
Il gestore dei segreti locali gestisce in modo sicuro le copie locali dei segreti creati dall'utente. AWS Secrets Manager Utilizza una chiave privata per proteggere la chiave dati utilizzata per crittografare i segreti. Per ulteriori informazioni, consulta Distribuzione dei segreti nel core AWS IoT Greengrass.
Per impostazione predefinita, viene utilizzata la chiave privata del client IoT, ma è possibile specificare una chiave privata diversa per il principal
SecretsManager
inconfig.json
. Solo il tipo di chiave RSA è supportato. Per ulteriori informazioni, consulta Specificare la chiave privata per la crittografia dei segreti.Nota
Attualmente, AWS IoT Greengrass supporta solo il meccanismo di riempimento PKCS #1 v1.5
per la crittografia e la decrittografia dei segreti locali quando si utilizzano chiavi private basate su hardware. Se stai seguendo le istruzioni fornite dal fornitore per generare manualmente chiavi private basate su hardware, assicurati di scegliere PKCS #1 v1.5. AWS IoT Greengrass non supporta Optimal Asymmetric Encryption Padding (OAEP). Supporto per la chiave privata Chiave RSA Chiave CE Tipo di chiavi Supportato Non supportato Parametri chiave Lunghezza minima 2048 bit Non applicabile Formato disco PKCS#1, PKCS#8 Non applicabile Versione GGC minima 1,7 Non applicabile
Sottoscrizioni gestite nel flusso di lavoro di messaggistica MQTT
AWS IoT Greengrass utilizza una tabella di sottoscrizione per definire come i messaggi MQTT possono essere scambiati tra dispositivi client, funzioni e connettori in un gruppo Greengrass e con AWS IoT Core o il servizio shadow locale. Ogni sottoscrizione specifica un'origine, una destinazione e un argomento (o oggetto) MQTT su cui inviare o ricevere i messaggi. AWS IoT Greengrass consente l'invio di messaggi da un'origine a una destinazione solo se è definita una sottoscrizione corrispondente.
Una sottoscrizione definisce il flusso dei messaggi solo in una direzione, dall'origine alla destinazione. Per supportare lo scambio di messaggi bidirezionale, è necessario creare due sottoscrizioni, una per ogni direzione.
Supporto TLS per le suite di cifratura
AWS IoT Greengrass utilizza il modello di sicurezza del AWS IoT Core trasporto per crittografare le comunicazioni con il cloud utilizzando suite di crittografia
Suite di cifratura supportate per le comunicazioni sulla rete locale
Al contrario AWS IoT Core, il AWS IoT Greengrass core supporta le seguenti suite di crittografia TLS di rete locale per gli algoritmi di firma dei certificati. Tutte queste suite sono supportate quando le chiavi private sono memorizzate nel file system. Un sottoinsieme è supportato quando il core è configurato per l'utilizzo di moduli di sicurezza hardware (HSM). Per ulteriori informazioni, consulta AWS IoT Greengrass principi di sicurezza fondamentali e Integrazione della sicurezza hardware. La tabella include anche la versione minima del software Core richiesta per il supporto. AWS IoT Greengrass
Crittografia | Supporto HSM | Versione GGC minima | |
---|---|---|---|
TLSv1.2 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | Supportato | 1 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | Supportato | 1 | |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | Supportato | 1 | |
TLS_RSA_WITH_AES_128_CBC_SHA | Non supportato | 1 | |
TLS_RSA_WITH_AES_128_GCM_SHA256 | Non supportato | 1 | |
TLS_RSA_WITH_AES_256_CBC_SHA | Non supportato | 1 | |
TLS_RSA_WITH_AES_256_GCM_SHA384 | Non supportato | 1 | |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | Supportato | 1.9 | |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | Supportato | 1.9 | |
TLSv1.1 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | Supportato | 1 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | Supportato | 1 | |
TLS_RSA_WITH_AES_128_CBC_SHA | Non supportato | 1 | |
TLS_RSA_WITH_AES_256_CBC_SHA | Non supportato | 1 | |
TLSv1.0 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | Supportato | 1 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | Supportato | 1 | |
TLS_RSA_WITH_AES_128_CBC_SHA | Non supportato | 1 | |
TLS_RSA_WITH_AES_256_CBC_SHA | Non supportato | 1 |