Authentifizieren und Autorisieren von Client-Geräten - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizieren und Autorisieren von Client-Geräten

Anmerkung

Diese Funktion ist für v2.6.0 und höher der Greengrass-Kernkomponente verfügbar.

Verwenden Sie den Client-Geräte-Auth-IPK-Service, um eine benutzerdefinierte lokale Broker-Komponente zu entwickeln, mit der lokale IoT-Geräte, wie Client-Geräte, eine Verbindung herstellen können.

Um diese IPC-Operationen zu verwenden, fügen Sie Version 2.2.0 oder höher der Client-Geräteauthentifizierungskomponente als Abhängigkeit in Ihre benutzerdefinierte Komponente ein. Anschließend können Sie IPC-Operationen in Ihren benutzerdefinierten Komponenten verwenden, um Folgendes zu tun:

  • Überprüfen Sie die Identität der Client-Geräte, die eine Verbindung zum Core-Gerät herstellen.

  • Erstellen Sie eine Sitzung, damit ein Client-Gerät eine Verbindung zum Core-Gerät herstellen kann.

  • Überprüfen Sie, ob ein Client-Gerät über die Berechtigung zum Ausführen einer Aktion verfügt.

  • Erhalten Sie eine Benachrichtigung, wenn das Serverzertifikat des Core-Geräts rotiert.

SDK-Mindestversionen

In der folgenden Tabelle sind die Mindestversionen der aufgeführtAWS IoT Device SDK, die Sie für die Interaktion mit dem IPC-Service für die Authentifizierung des Client-Geräts verwenden müssen.

Autorisierung

Um den Client-Geräte-Authentifizierungs-IPK-Service in einer benutzerdefinierten Komponente zu verwenden, müssen Sie Autorisierungsrichtlinien definieren, die es Ihrer Komponente ermöglichen, diese Vorgänge auszuführen. Informationen zum Definieren von Autorisierungsrichtlinien finden Sie unter Autorisieren Sie Komponenten zur Ausführung von Vorgängen IPC.

Autorisierungsrichtlinien für die Authentifizierung und Autorisierung von Client-Geräten haben die folgenden Eigenschaften.

IPC-Service-ID: aws.greengrass.clientdevices.Auth

Operation Beschreibung Ressourcen

aws.greengrass#VerifyClientDeviceIdentity

Ermöglicht einer Komponente, die Identität eines Client-Geräts zu überprüfen.

*

aws.greengrass#GetClientDeviceAuthToken

Ermöglicht einer Komponente, die Anmeldeinformationen eines Client-Geräts zu validieren und eine Sitzung für dieses Client-Gerät zu erstellen.

*

aws.greengrass#AuthorizeClientDeviceAction

Ermöglicht einer Komponente zu überprüfen, ob ein Client-Gerät über die Berechtigung zum Ausführen einer Aktion verfügt.

*

aws.greengrass#SubscribeToCertificateUpdates

Ermöglicht einer Komponente, Benachrichtigungen zu erhalten, wenn das Serverzertifikat des Core-Geräts rotiert.

*

*

Ermöglicht einer Komponente, alle IPC-Service-Operationen zur Authentifizierung des Client-Geräts durchzuführen.

*

Beispiele für Autorisierungsrichtlinien

Sie können auf das folgende Beispiel für eine Autorisierungsrichtlinie verweisen, um Ihnen bei der Konfiguration von Autorisierungsrichtlinien für Ihre Komponenten zu helfen.

Beispiel für eine Autorisierungsrichtlinie

Die folgende Beispielautorisierungsrichtlinie ermöglicht es einer Komponente, alle IPC-Operationen zur Authentifizierung von Client-Geräten durchzuführen.

{ "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

Überprüfen Sie die Identität eines Client-Geräts. Diese Operation überprüft, ob das Client-Gerät ein gültiges AWS IoT Objekt ist.

Anforderung

Die Anforderung dieser Operation hat die folgenden Parameter:

credential

Die Anmeldeinformationen des Client-Geräts. Dieses Objekt, ClientDeviceCredential, enthält die folgenden Informationen:

clientDeviceCertificate (Python: client_device_certificate)

Das X.509-Gerätezertifikat des Client-Geräts.

Antwort

Die Antwort dieser Operation enthält die folgenden Informationen:

isValidClientDevice (Python: is_valid_client_device)

Gibt an, ob die Identität des Client-Geräts gültig ist.

GetClientDeviceAuthToken

Validiert die Anmeldeinformationen eines Client-Geräts und erstellt eine Sitzung für das Client-Gerät. Dieser Vorgang gibt ein Sitzungstoken zurück, das Sie in nachfolgenden Anforderungen verwenden können, um Client-Geräteaktionen zu autorisieren.

Um ein Client-Gerät erfolgreich zu verbinden, muss die Authentifizierungskomponente des Client-Geräts die -mqtt:connectBerechtigung für die Client-ID erteilen, die das Client-Gerät verwendet.

Anforderung

Die Anforderung dieser Operation hat die folgenden Parameter:

credential

Die Anmeldeinformationen des Client-Geräts. Dieses Objekt, CredentialDocument, enthält die folgenden Informationen:

mqttCredential (Python: mqtt_credential)

Die MQTT-Anmeldeinformationen des Client-Geräts. Geben Sie die Client-ID und das Zertifikat an, die das Client-Gerät für die Verbindung verwendet. Dieses Objekt, MQTTCredential, enthält die folgenden Informationen:

clientId (Python: client_id)

Die Client-ID, die für die Verbindung verwendet werden soll.

certificatePem (Python: certificate_pem)

Das X.509-Gerätezertifikat, das für die Verbindung verwendet werden soll.

username
Anmerkung

Diese Eigenschaft wird derzeit nicht verwendet.

password
Anmerkung

Diese Eigenschaft wird derzeit nicht verwendet.

Antwort

Die Antwort dieser Operation enthält die folgenden Informationen:

clientDeviceAuthToken (Python: client_device_auth_token)

Das Sitzungstoken für das Client-Gerät. Sie können dieses Sitzungstoken in nachfolgenden Anforderungen verwenden, um die Aktionen dieses Client-Geräts zu autorisieren.

AuthorizeClientDeviceAction

Überprüfen Sie, ob ein Client-Gerät berechtigt ist, eine Aktion für eine Ressource auszuführen. Autorisierungsrichtlinien für Client-Geräte geben die Berechtigungen an, die Client-Geräte ausführen können, während sie mit einem Core-Gerät verbunden sind. Sie definieren Autorisierungsrichtlinien für Client-Geräte, wenn Sie die Authentifizierungskomponente des Client-Geräts konfigurieren.

Anforderung

Die Anforderung dieser Operation hat die folgenden Parameter:

clientDeviceAuthToken (Python: client_device_auth_token)

Das Sitzungstoken für das Client-Gerät.

operation

Der zu autorisierende Vorgang.

resource

Die Ressource, mit der das Client-Gerät den Vorgang ausführt.

Antwort

Die Antwort dieser Operation enthält die folgenden Informationen:

isAuthorized (Python: is_authorized)

Gibt an, ob das Client-Gerät berechtigt ist, den Vorgang für die Ressource auszuführen.

SubscribeToCertificateUpdates

Abonnieren Sie bei jeder Rotation, um das neue Serverzertifikat des Core-Geräts zu erhalten. Wenn das Serverzertifikat rotiert, müssen Broker mit dem neuen Serverzertifikat neu laden.

Die Authentifizierungskomponente des Client-Geräts rotiert Serverzertifikate standardmäßig alle 7 Tage. Sie können das Drehungsintervall zwischen 2 und 10 Tagen konfigurieren.

Bei diesem Vorgang handelt es sich um einen Abonnementvorgang, bei dem Sie einen Stream von Ereignisnachrichten abonnieren. Um diesen Vorgang zu verwenden, definieren Sie einen Stream-Antwort-Handler mit Funktionen, die Ereignismeldungen, Fehler und Stream-Schließung verarbeiten. Weitere Informationen finden Sie unter Abonnieren Sie IPC Event-Streams.

Typ der Ereignisnachricht: CertificateUpdateEvent

Anforderung

Die Anforderung dieser Operation hat die folgenden Parameter:

certificateOptions (Python: certificate_options)

Die Arten von Zertifikatsaktualisierungen, die abonniert werden sollen. Dieses Objekt, CertificateOptions, enthält die folgenden Informationen:

certificateType (Python: certificate_type)

Der Typ der Zertifikatsaktualisierungen, die abonniert werden sollen. Wählen Sie die folgende Option aus:

  • SERVER

Antwort

Die Antwort dieser Operation enthält die folgenden Informationen:

messages

Der Stream von Nachrichten. Dieses Objekt, CertificateUpdateEvent, enthält die folgenden Informationen:

certificateUpdate (Python: certificate_update)

Die Informationen über das neue Zertifikat. Dieses Objekt, CertificateUpdate, enthält die folgenden Informationen:

certificate

Das Zertifikat.

privateKey (Python: private_key)

Der private Schlüssel des Zertifikats.

publicKey (Python: public_key)

Der öffentliche Schlüssel des Zertifikats.

caCertificates (Python: ca_certificates)

Die Liste der Zertifizierungsstellenzertifikate (CA) in der CA-Zertifikatkette des Zertifikats.