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à.
Autenticazione e autorizzazione del dispositivo per AWS IoT Greengrass
I dispositivi negli ambienti AWS IoT Greengrass utilizzano i certificati X.509 per l'autenticazione e le policy AWS IoT per l'autorizzazione. I certificati e le policy consentono ai dispositivi di connettersi in modo sicuro tra loro, AWS IoT Core e AWS IoT Greengrass.
I certificati X.509 sono certificati digitali che usano lo standard di infrastruttura a chiave pubblica X.509 per associare una chiave pubblica all'identità contenuta in un certificato. I certificati X.509 vengono rilasciati da un'entità attendibile denominata autorità di certificazione (CA). L'autorità di certificazione mantiene uno o più certificati speciali chiamati certificati CA, che usa per rilasciare certificati X.509. Solo l'autorità di certificazione ha accesso a certificati CA.
Le policy AWS IoT definiscono l'insieme di operazioni consentite per i dispositivi AWS IoT. In particolare, consentono e negano l'accesso alle operazioni del piano dei dati AWS IoT Core e AWS IoT Greengrass, ad esempio la pubblicazione di messaggi MQTT e il recupero delle copie shadow dei dispositivi.
Tutti i dispositivi richiedono una voce nel Registro di sistema AWS IoT Core e un certificato X.509 attivato con una policy AWS IoT allegata. I dispositivi rientrano in due categorie:
ICore Greengrass. I dispositivi core Greengrass utilizzano certificati e policy AWS IoT per connettersi in modo sicuro a AWS IoT Core. I certificati e le policy consentono inoltre di AWS IoT Greengrass distribuire informazioni di configurazione, funzioni Lambda, connettori e abbonamenti gestiti ai dispositivi principali.
-
Dispositivi client. I dispositivi client (chiamati anche dispositivi connessi, dispositivi Greengrass o dispositivi) sono dispositivi che si connettono a un core Greengrass tramite MQTT. Utilizzano certificati e policy per connettersi AWS IoT Core e utilizzare il servizio. AWS IoT Greengrass Ciò consente ai dispositivi client di utilizzare il servizio AWS IoT Greengrass Discovery per trovare e connettersi a un dispositivo principale. Un dispositivo client utilizza lo stesso certificato per connettersi al gateway del AWS IoT Core dispositivo e al dispositivo principale. I dispositivi client utilizzano anche le informazioni di rilevamento per l'autenticazione reciproca con il dispositivo principale. Per ulteriori informazioni, consultare Flusso di lavoro di connessione del dispositivo e Gestione dell'autenticazione dei dispositivi con il core Greengrass.
Certificati X.509
La comunicazione tra i dispositivi core e client e tra i dispositivi AWS IoT Core e/o AWS IoT Greengrass deve essere autenticata. Questa autenticazione si basa su certificati di dispositivo X.509 registrati e chiavi crittografiche.
In un ambiente AWS IoT Greengrass, i dispositivi utilizzano certificati con chiavi pubbliche e private per le seguenti connessioni TLS (Transport Layer Security):
Il componente client AWS IoT sul core di Greengrass che si connette a AWS IoT Core e AWS IoT Greengrass via Internet.
Dispositivi client che si connettono AWS IoT Greengrass per ottenere informazioni di Discovery di base su Internet.
Il componente server MQTT sul core Greengrass si collega ai dispositivi client del gruppo tramite la rete locale.
Il dispositivo AWS IoT Greengrass principale archivia i certificati in due posizioni:
-
Certificato dispositivo core in
/
In genere, il certificato del dispositivo core è denominatogreengrass-root
/certs
(ad esempiohash
.cert.pem86c84488a5.cert.pem
). Questo certificato viene utilizzato dal client AWS IoT per l'autenticazione reciproca quando il core si connette ai servizi AWS IoT Core e AWS IoT Greengrass. -
Certificato server MQTT in
/
. Il certificato del server MQTT è denominatogreengrass-root
/ggc/var/state/serverserver.crt
. Questo certificato viene utilizzato per l'autenticazione reciproca tra il server MQTT locale (nel core Greengrass) e i dispositivi Greengrass.Nota
greengrass-root
rappresenta il percorso dove è installato il software AWS IoT Greengrass Core sul dispositivo. In genere, questa è la directory/greengrass
.
Per ulteriori informazioni, consulta AWS IoT Greengrass principi di sicurezza fondamentali.
Certificati dell'autorità di certificazione (CA)
I dispositivi principali e i dispositivi client scaricano un certificato CA principale utilizzato per l'autenticazione con AWS IoT Greengrass i servizi AWS IoT Core and. Ti consigliamo di utilizzare un certificato di CA root di Amazon Trust Services (ATS), ad esempio Amazon Root CA 1
Nota
Il tipo di certificato di root CA deve corrispondere all'endpoint. Utilizza un certificato CA radice ATS con un endpoint ATS (preferito) o un certificato CA VeriSign radice con un endpoint legacy. Solo alcune regioni di Amazon Web Services supportano gli endpoint legacy. Per ulteriori informazioni, consulta Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale.
I dispositivi client scaricano anche il certificato CA del gruppo Greengrass. Questo viene utilizzato per convalidare il certificato server MQTT sul core Greengrass durante l'autenticazione reciproca. Per ulteriori informazioni, consulta Flusso di lavoro di connessione del dispositivo. La scadenza predefinita del certificato server MQTT è sette giorni.
Rotazione dei certificati sul server MQTT locale
I dispositivi client utilizzano il certificato del server MQTT locale per l'autenticazione reciproca con il dispositivo principale Greengrass. Per impostazione predefinita, questo certificato scade entro sette giorni. Questo periodo limitato si basa sulle best practice in materia di sicurezza. Il certificato del server MQTT è firmato dal certificato CA del gruppo, archiviato nel cloud.
Affinché avvenga la rotazione dei certificati, il dispositivo principale Greengrass deve essere online e in grado di accedere direttamente al AWS IoT Greengrass servizio su base regolare. Quando il certificato scade, il dispositivo principale tenta di connettersi al AWS IoT Greengrass servizio per ottenere un nuovo certificato. Se viene stabilita la connessione, il dispositivo core scarica un nuovo certificato del server MQTT e riavvia il servizio MQTT locale. A questo punto, tutti i dispositivi client collegati al core vengono disconnessi. Se il dispositivo principale è offline al momento della scadenza, non riceve il certificato sostitutivo. Eventuali nuovi tentativi di connessione al dispositivo core vengono rifiutati. Le connessioni esistenti non sono interessate. I dispositivi client non possono connettersi al dispositivo principale finché non viene ripristinata la connessione al AWS IoT Greengrass servizio e non è possibile scaricare un nuovo certificato del server MQTT.
Puoi impostare il periodo di scadenza su qualsiasi valore compreso tra 7 e 30 giorni, in base alle esigenze. Una rotazione più frequente richiede una connessione cloud più frequente. Una rotazione meno frequente può causare problemi di sicurezza. Se desideri impostare la scadenza del certificato su un valore superiore a 30 giorni, contattaAWS Support.
Nella AWS IoT console, puoi gestire il certificato nella pagina Impostazioni del gruppo. Nell'AWS IoT GreengrassAPI, puoi utilizzare l'UpdateGroupCertificateConfigurationazione.
Quando il certificato del server MQTT scade, ogni tentativo di convalidare il certificato ha esito negativo. I dispositivi client devono essere in grado di rilevare l'errore e interrompere la connessione.
Policy AWS IoT per operazioni del piano dei dati
Utilizzare le policy AWS IoT per autorizzare l'accesso al piano dei dati AWS IoT Core e AWS IoT Greengrass. Il piano dei dati AWS IoT Core è costituito da operazioni per dispositivi, utenti e applicazioni, come la connessione a AWS IoT Core e la sottoscrizione ad argomenti. Il piano dei dati AWS IoT Greengrass è costituito da operazioni per i dispositivi Greengrass, come il recupero delle distribuzioni e l'aggiornamento delle informazioni sulla connettività.
Una AWS IoT policy è un documento JSON simile a una policy IAM. Contiene una o più istruzioni delle policy che specificano le proprietà seguenti:
-
Effect
. La modalità di accesso, che può essereAllow
oDeny
. -
Action
. L'elenco delle azioni consentite o negate dalla politica. -
Resource
. L'elenco delle risorse su cui l'azione è consentita o negata.
AWS IoTi criteri supportano i caratteri jolly *
come caratteri jolly e trattano i caratteri jolly MQTT (+
and#
) come stringhe letterali. Per ulteriori informazioni sui caratteri jolly, vedete Uso dei *
caratteri jolly negli ARN delle risorse nella Guida per l'utente. AWS Identity and Access Management
Per ulteriori informazioni, consulta Policy AWS IoT e Operazioni di policy AWS IoT nella Guida per gli sviluppatori AWS IoT Core.
Nota
AWS IoT Coreconsente di allegare AWS IoT policy a gruppi di oggetti per definire le autorizzazioni per gruppi di dispositivi. Le policy relative ai gruppi di oggetti non consentono l'accesso alle operazioni del piano dati AWS IoT Greengrass. Per consentire a un oggetto di accedere a un'operazione del piano dati AWS IoT Greengrass, aggiungi l'autorizzazione a una policy AWS IoT collegata al certificato dell'oggetto.
Operazioni di policy AWS IoT Greengrass
Operazioni fondamentali di Greengrass
AWS IoT Greengrass definisce le seguenti operazioni policy che i dispositivi core Greengrass possono utilizzare nelle policy AWS IoT:
greengrass:AssumeRoleForGroup
-
Autorizzazione per un dispositivo core Greengrass a recuperare le credenziali utilizzando la funzione Lambda del sistema Token Exchange Service (TES). Le autorizzazioni associate alle credenziali recuperate si basano sulla policy associata al ruolo del gruppo configurato.
Questa autorizzazione viene controllata quando un dispositivo core di Greengrass tenta di recuperare le credenziali (supponendo che le credenziali non siano memorizzate nella cache localmente).
greengrass:CreateCertificate
-
Autorizzazione per un dispositivo core Greengrass per creare il proprio certificato server.
Questa autorizzazione viene controllata quando un dispositivo core di Greengrass crea un certificato. I dispositivi core Greengrass tentano di creare un certificato server al primo avvio, quando le informazioni di connettività del core cambiano e nei periodi di rotazione designati.
greengrass:GetConnectivityInfo
-
Autorizzazione per un dispositivo core Greengrass per recuperare le proprie informazioni di connettività.
Questa autorizzazione viene controllata quando un dispositivo core Greengrass tenta di recuperare le informazioni sulla connettività da AWS IoT Core.
greengrass:GetDeployment
-
Autorizzazione per un dispositivo core Greengrass per recuperare le distribuzioni.
Questa autorizzazione viene controllata quando un dispositivo core di Greengrass tenta di recuperare le distribuzioni e gli stati di distribuzione dal cloud.
greengrass:GetDeploymentArtifacts
-
Autorizzazione per un dispositivo principale Greengrass a recuperare elementi di distribuzione come informazioni di gruppo o funzioni Lambda.
Questa autorizzazione viene controllata quando un dispositivo core Greengrass riceve una distribuzione e quindi tenta di recuperare gli artefatti della distribuzione.
greengrass:UpdateConnectivityInfo
-
Autorizzazione per un dispositivo core Greengrass per aggiornare le proprie informazioni di connettività con informazioni IP o hostname.
Questa autorizzazione viene controllata quando un dispositivo core Greengrass tenta di aggiornare le informazioni di connettività nel cloud.
greengrass:UpdateCoreDeploymentStatus
-
Autorizzazione per un dispositivo core Greengrass per aggiornare lo stato di una distribuzione.
Questa autorizzazione viene controllata quando un dispositivo core Greengrass riceve una distribuzione e tenta di aggiornare lo stato della distribuzione.
Operazioni dispositivo Greengrass
AWS IoT Greengrassdefinisce le seguenti azioni politiche che i dispositivi client possono utilizzare nelle politiche: AWS IoT
greengrass:Discover
-
Autorizzazione per un dispositivo client a utilizzare l'API Discovery per recuperare le informazioni di connettività principali del gruppo e l'autorità di certificazione del gruppo.
Questa autorizzazione viene verificata quando un dispositivo client chiama l'API Discovery con autenticazione reciproca TLS.
Policy AWS IoT minima per il dispositivo core AWS IoT Greengrass
L'esempio di policy seguente include il set di operazioni minime necessarie per supportare le funzionalità di base di Greengrass per il dispositivo core.
-
La policy elenca gli argomenti MQTT e i filtri di argomento su cui il dispositivo core può pubblicare messaggi, sottoscrivere e ricevere messaggi, inclusi gli argomenti utilizzati per lo stato shadow. Per supportare lo scambio di messaggi tra AWS IoT Core funzioni Lambda, connettori e dispositivi client nel gruppo Greengrass, specifica gli argomenti e i filtri degli argomenti che desideri consentire. Per ulteriori informazioni, consulta Esempi di pubblicazione/sottoscrizione a policy nella Guida per gli sviluppatori AWS IoT Core.
-
La policy include una sezione che consente a AWS IoT Core di acquisire, aggiornare ed eliminare la copia shadow del dispositivo core. Per consentire la sincronizzazione shadow per i dispositivi client del gruppo Greengrass, specifica l'Amazon Resource Names (ARN) di destinazione nell'
Resource
elenco (ad esempio,).arn:aws:iot:
region
:account-id
:thing/device-name
-
L'uso delle variabili delle policy di oggetto (
iot:Connection.Thing.
) nella policy AWS IoT per un dispositivo core non è supportato. Il core utilizza lo stesso certificato del dispositivo per effettuare più connessioni a AWS IoT Core, ma l'ID client in una connessione potrebbe non corrispondere esattamente al nome dell’oggetto principale.*
-
Per l'autorizzazione
greengrass:UpdateCoreDeploymentStatus
, il segmento finale nell'ARNResource
è l'ARN codificato in formato URL del dispositivo core.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:
region
:account-id
:client/core-name
-*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account-id
:topic/$aws/things/core-name
-*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/core-name
-*" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region
:account-id
:thing/core-name
-*" ] }, { "Effect": "Allow", "Action": [ "greengrass:AssumeRoleForGroup", "greengrass:CreateCertificate" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeployment" ], "Resource": [ "arn:aws:greengrass:region
:account-id
:/greengrass/groups/group-id
/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeploymentArtifacts" ], "Resource": [ "arn:aws:greengrass:region
:account-id
:/greengrass/groups/group-id
/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:UpdateCoreDeploymentStatus" ], "Resource": [ "arn:aws:greengrass:region
:account-id
:/greengrass/groups/group-id
/deployments/*/cores/arn%3Aaws%3Aiot%3Aregion
%3Aaccount-id
%3Athing%2Fcore-name
" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region
:account-id
:thing/core-name
-*" ] } ] }
Nota
AWS IoTle politiche per i dispositivi client richiedono in genere autorizzazioni simili per iot:Connect
iot:Publish
iot:Receive
, e azioni. iot:Subscribe
Per consentire a un dispositivo client di rilevare automaticamente le informazioni di connettività per i core dei gruppi Greengrass a cui appartiene il dispositivo, AWS IoT la politica per un dispositivo client deve includere greengrass:Discover
l'azione. Nella Resource
sezione, specificare l'ARN del dispositivo client, non l'ARN del dispositivo principale Greengrass. Per esempio:
{ "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:
region
:account-id
:thing/device-name
" ] }
La AWS IoT politica per i dispositivi client in genere non richiede autorizzazioni o iot:DeleteThingShadow
azioni iot:GetThingShadow
iot:UpdateThingShadow
, poiché il core Greengrass gestisce le operazioni di sincronizzazione degli shadow per i dispositivi client. In questo caso, assicurati che la Resource
sezione relativa alle azioni ombra nella AWS IoT policy di base includa gli ARN dei dispositivi client.
Nella AWS IoT console, puoi visualizzare e modificare la policy allegata al certificato del tuo core.
-
Nel riquadro di navigazione, in Gestisci, espandi Tutti i dispositivi, quindi scegli Cose.
-
Scegli il tuo core.
-
Nella pagina di configurazione del core, scegli la scheda Certificati.
-
Nella scheda Certificati, scegli il tuo certificato.
-
Nella pagina di configurazione del certificato, scegli Policies (Policy) e quindi scegli la policy.
Se desideri modificare la politica, scegli Modifica versione attiva.
-
Rivedi la politica e aggiungi, rimuovi o modifica le autorizzazioni secondo necessità.
-
Per impostare una nuova versione della politica come versione attiva, in Stato della versione della politica, seleziona Imposta la versione modificata come versione attiva per questa politica.
-
Scegli Salva come nuova versione.