Autentica e autorizza i dispositivi client - AWS IoT Greengrass

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

Autentica e autorizza i dispositivi client

Utilizza il servizio IPC di autenticazione dei dispositivi client per sviluppare un componente broker locale personalizzato a cui possano connettersi i dispositivi IoT locali, come i dispositivi client.

Per utilizzare queste operazioni IPC, includi la versione 2.2.0 o successiva del componente di autenticazione del dispositivo client come dipendenza nel componente personalizzato. È quindi possibile utilizzare le operazioni IPC nei componenti personalizzati per effettuare le seguenti operazioni:

  • Verifica l'identità dei dispositivi client che si connettono al dispositivo principale.

  • Crea una sessione per consentire a un dispositivo client di connettersi al dispositivo principale.

  • Verifica se un dispositivo client è autorizzato a eseguire un'azione.

  • Ricevi una notifica quando il certificato del server del dispositivo principale cambia.

Versioni SDK minime

La tabella seguente elenca le versioni minime da utilizzare per interagire con il servizio IPC di autenticazione del dispositivo client. SDK per dispositivi AWS IoT

Autorizzazione

Per utilizzare il servizio IPC di autenticazione del dispositivo client in un componente personalizzato, è necessario definire politiche di autorizzazione che consentano al componente di eseguire queste operazioni. Per informazioni sulla definizione delle politiche di autorizzazione, vedere. Autorizza i componenti a eseguire operazioni IPC

Le politiche di autorizzazione per l'autenticazione e l'autorizzazione dei dispositivi client hanno le seguenti proprietà.

Identificatore del servizio IPC: aws.greengrass.clientdevices.Auth

Operazione Descrizione Risorse

aws.greengrass#VerifyClientDeviceIdentity

Consente a un componente di verificare l'identità di un dispositivo client.

*

aws.greengrass#GetClientDeviceAuthToken

Consente a un componente di convalidare le credenziali di un dispositivo client e di creare una sessione per quel dispositivo client.

*

aws.greengrass#AuthorizeClientDeviceAction

Consente a un componente di verificare se un dispositivo client è autorizzato a eseguire un'azione.

*

aws.greengrass#SubscribeToCertificateUpdates

Consente a un componente di ricevere notifiche quando il certificato del server del dispositivo principale ruota.

*

*

Consente a un componente di eseguire tutte le operazioni del servizio IPC di autenticazione del dispositivo client.

*

Esempi di politiche di autorizzazione

È possibile fare riferimento al seguente esempio di politica di autorizzazione per configurare le politiche di autorizzazione per i componenti.

Esempio di politica di autorizzazione

Il seguente esempio di politica di autorizzazione consente a un componente di eseguire tutte le operazioni IPC di autenticazione dei dispositivi client.

{ "accessControl": { "aws.greengrass.clientdevices.Auth": { "com.example.MyLocalBrokerComponent:clientdevices:1": { "policyDescription": "Allows access to authenticate and authorize client devices.", "operations": [ "aws.greengrass#VerifyClientDeviceIdentity", "aws.greengrass#GetClientDeviceAuthToken", "aws.greengrass#AuthorizeClientDeviceAction", "aws.greengrass#SubscribeToCertificateUpdates" ], "resources": [ "*" ] } } } }

VerifyClientDeviceIdentity

Verifica l'identità di un dispositivo client. Questa operazione verifica se il dispositivo client è validoAWS IoT.

Richiesta

La richiesta di questa operazione ha i seguenti parametri:

credential

Le credenziali del dispositivo client. Questo oggetto contiene ClientDeviceCredential le seguenti informazioni:

clientDeviceCertificate(Python:) client_device_certificate

Il certificato del dispositivo X.509 del dispositivo client.

Risposta

La risposta di questa operazione contiene le seguenti informazioni:

isValidClientDevice(Python:) is_valid_client_device

Se l'identità del dispositivo client è valida.

GetClientDeviceAuthToken

Convalida le credenziali di un dispositivo client e crea una sessione per il dispositivo client. Questa operazione restituisce un token di sessione che è possibile utilizzare nelle richieste successive per autorizzare le azioni del dispositivo client.

Per connettere correttamente un dispositivo client, il componente di autenticazione del dispositivo client deve concedere l'mqtt:connectautorizzazione per l'ID client utilizzato dal dispositivo client.

Richiesta

La richiesta di questa operazione ha i seguenti parametri:

credential

Le credenziali del dispositivo client. Questo oggetto contiene CredentialDocument le seguenti informazioni:

mqttCredential(Python:) mqtt_credential

Le credenziali MQTT del dispositivo client. Specificare l'ID client e il certificato utilizzati dal dispositivo client per la connessione. Questo oggetto contiene MQTTCredential le seguenti informazioni:

clientId(Python:) client_id

L'ID client da utilizzare per la connessione.

certificatePem(Python:) certificate_pem

Il certificato del dispositivo X.509 da utilizzare per la connessione.

username
Nota

Questa proprietà non è attualmente utilizzata.

password
Nota

Questa proprietà non è attualmente utilizzata.

Risposta

La risposta di questa operazione contiene le seguenti informazioni:

clientDeviceAuthToken(Python:) client_device_auth_token

Il token di sessione per il dispositivo client. È possibile utilizzare questo token di sessione nelle richieste successive per autorizzare le azioni di questo dispositivo client.

AuthorizeClientDeviceAction

Verifica se un dispositivo client è autorizzato a eseguire un'azione su una risorsa. Le politiche di autorizzazione dei dispositivi client specificano le autorizzazioni che i dispositivi client possono eseguire mentre sono connessi a un dispositivo principale. Le politiche di autorizzazione dei dispositivi client vengono definite quando si configura il componente di autenticazione del dispositivo client.

Richiesta

La richiesta di questa operazione ha i seguenti parametri:

clientDeviceAuthToken(Python:) client_device_auth_token

Il token di sessione per il dispositivo client.

operation

L'operazione da autorizzare.

resource

La risorsa in cui il dispositivo client esegue l'operazione.

Risposta

La risposta di questa operazione contiene le seguenti informazioni:

isAuthorized(Python:) is_authorized

Se il dispositivo client è autorizzato a eseguire l'operazione sulla risorsa.

SubscribeToCertificateUpdates

Abbonati per ricevere il nuovo certificato server del dispositivo principale ogni volta che ruota. Quando il certificato del server cambia, i broker devono ricaricarlo utilizzando il nuovo certificato del server.

Per impostazione predefinita, il componente di autenticazione del dispositivo client ruota i certificati del server ogni 7 giorni. È possibile configurare l'intervallo di rotazione tra 2 e 10 giorni.

Questa operazione è un'operazione di sottoscrizione in cui ci si iscrive a un flusso di messaggi di eventi. Per utilizzare questa operazione, definite un gestore di risposte di flusso con funzioni che gestiscono i messaggi di evento, gli errori e la chiusura dei flussi. Per ulteriori informazioni, consulta Sottoscrivi agli stream di IPC eventi.

Tipo di messaggio di evento: CertificateUpdateEvent

Richiesta

La richiesta di questa operazione ha i seguenti parametri:

certificateOptions(Python:) certificate_options

I tipi di aggiornamenti dei certificati a cui sottoscrivere. Questo oggetto contiene CertificateOptions le seguenti informazioni:

certificateType(Python:) certificate_type

Il tipo di aggiornamenti dei certificati a cui sottoscrivere. Scegli la seguente opzione:

  • SERVER

Risposta

La risposta di questa operazione contiene le seguenti informazioni:

messages

Il flusso di messaggi. Questo oggetto contiene CertificateUpdateEvent le seguenti informazioni:

certificateUpdate(Python:) certificate_update

Le informazioni sul nuovo certificato. Questo oggetto contiene CertificateUpdate le seguenti informazioni:

certificate

Il certificato.

privateKey(Python:) private_key

La chiave privata del certificato.

publicKey(Python:) public_key

La chiave pubblica del certificato.

caCertificates(Python:) ca_certificates

L'elenco dei certificati di autorità di certificazione (CA) nella catena di certificati CA del certificato.