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.
Themen
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.
SDK | Mindestversion |
---|---|
v1.9.3 |
|
v1.11.3 |
|
v1.18.3 |
|
v1.12.0 |
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 |
---|---|---|
|
Ermöglicht einer Komponente, die Identität eines Client-Geräts zu überprüfen. |
|
|
Ermöglicht einer Komponente, die Anmeldeinformationen eines Client-Geräts zu validieren und eine Sitzung für dieses Client-Gerät zu erstellen. |
|
|
Ermöglicht einer Komponente zu überprüfen, ob ein Client-Gerät über die Berechtigung zum Ausführen einer Aktion verfügt. |
|
|
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:connect
Berechtigung 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.