Geräteauthentifizierung und -autorisierung für AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.

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.

Geräteauthentifizierung und -autorisierung für AWS IoT Greengrass

Geräte in AWS IoT Greengrass-Umgebungen verwenden X.509-Zertifikate für die Authentifizierung und AWS IoT-Richtlinien für die Autorisierung. Zertifikate und Richtlinien ermöglichen es Geräten, sich sicher miteinander oder mit AWS IoT Core und AWS IoT Greengrass zu verbinden.

X.509-Zertifikate sind digitale Zertifikate, die den X.509-Standard für eine Public-Key-Infrastruktur nutzen, um einen öffentlichen Schlüssel mit der Identität in einem Zertifikat zu verknüpfen. X.509-Zertifikate werden von vertrauenswürdigen Zertifizierungsstellen (Certificate Authority, CA) herausgegeben. Die CA nutzen ein oder mehrere spezielle Zertifikate, die als CA-Zertifikate bezeichnet werden, zum Herausgeben der X.509-Zertifikate. Nur die Zertifizierungsstelle hat Zugriff auf CA-Zertifikate.

AWS IoT-Richtlinien definieren den Satz von Operationen, die für AWS IoT-Geräte zulässig sind. Insbesondere erlauben und verweigern sie den Zugriff auf AWS IoT Core- und AWS IoT Greengrass-Operationen auf Datenebene, z. B. das Veröffentlichen von MQTT-Nachrichten und das Abrufen von Geräteschatten.

Alle Geräte benötigen einen Eintrag in der AWS IoT Core-Registrierung und ein aktiviertes X.509-Zertifikat mit einer angefügten AWS IoT-Richtlinie. Geräte fallen in zwei Kategorien:

  • Greengrass-Kerne. Greengrass-Kerngeräte verwenden Zertifikate und AWS IoT-Richtlinien, um eine sichere Verbindung zu AWS IoT Core herzustellen. Die Zertifikate und Richtlinien ermöglichen es auchAWS IoT Greengrass, Konfigurationsinformationen, Lambda-Funktionen, Connectors und verwaltete Abonnements auf -Core-Geräten bereitzustellen.

  • Client-Geräte . Client-Geräte (auch als verbundene Geräte, Greengrass-Geräte oder Geräte bezeichnet) sind Geräte, die über MQTT eine Verbindung zu einem Greengrass-Kern herstellen. Sie verwenden Zertifikate und Richtlinien, um eine Verbindung zu AWS IoT Core und dem AWS IoT Greengrass Service herzustellen. Auf diese Weise können Client-Geräte den AWS IoT Greengrass Discovery Service verwenden, um ein Core-Gerät zu finden und eine Verbindung zu ihm herzustellen. Ein Client-Gerät verwendet dasselbe Zertifikat, um eine Verbindung mit dem AWS IoT Core Geräte-Gateway und dem Core-Gerät herzustellen. Client-Geräte verwenden auch Erkennungsinformationen für die gegenseitige Authentifizierung mit dem Core-Gerät. Weitere Informationen finden Sie unter Geräteverbindung – Workflow und Verwalten der Geräteauthentifizierung mit dem Greengrass Core.

X.509-Zertifikate

Die Kommunikation zwischen Core- und Client-Geräten sowie zwischen Geräten und AWS IoT Core oder AWS IoT Greengrass muss authentifiziert werden. Diese gegenseitige Authentifizierung basiert auf registrierten X.509-Gerätezertifikaten und kryptografischen Schlüsseln.

In einer AWS IoT Greengrass-Umgebung verwenden Geräte Zertifikate mit öffentlichen und privaten Schlüsseln für die folgenden Transport Layer Security (TLS)-Verbindungen:

  • Die AWS IoT-Client-Komponente auf dem Greengrass-Kern verbindet sich mit AWS IoT Core und AWS IoT Greengrass über das Internet.

  • Client-Geräte, die eine Verbindung zu herstellenAWS IoT Greengrass, um Kernerkennungsinformationen über das Internet abzurufen.

  • Die MQTT-Serverkomponente auf dem Greengrass-Kern, die über das lokale Netzwerk eine Verbindung zu Client-Geräten in der Gruppe herstellt.

Das AWS IoT Greengrass Core-Gerät speichert Zertifikate an zwei Speicherorten:

  • Kern-Gerätezertifikat in /greengrass-root/certs. In der Regel wird das Kern-Gerätezertifikat als hash.cert.pem bezeichnet (z. B. 86c84488a5.cert.pem). Dieses Zertifikat wird vom AWS IoT-Client für die gegenseitige Authentifizierung verwendet, wenn der Kern eine Verbindung mit den Services AWS IoT Core und AWS IoT Greengrass herstellt.

  • MQTT-Serverzertifikat in /greengrass-root/ggc/var/state/server. Das MQTT-Serverzertifikat hat den Namen server.crt. Dieses Zertifikat wird für die gegenseitige Authentifizierung zwischen dem lokalen MQTT-Server (auf dem Greengrass-Kern) und Greengrass-Geräten verwendet.

    Anmerkung

    greengrass-root steht für den Pfad, unter dem die AWS IoT Greengrass Core-Software auf Ihrem Gerät installiert ist. Normalerweise ist dies das Verzeichnis /greengrass.

Weitere Informationen finden Sie unter AWS IoT Greengrass zentrale Sicherheitsprinzipale.

CA-Zertifikate

Core-Geräte und Client-Geräte laden ein Stammzertifizierungsstellenzertifikat herunter, das für die Authentifizierung mit - AWS IoT Core und -AWS IoT GreengrassServices verwendet wird. Es wird empfohlen, ein Amazon Trust Services (ATS) CA-Stammzertifikat wie Amazon Root CA 1 zu verwenden. Weitere Informationen finden Sie unter CA-Zertifikate für die Serverauthentifizierung im AWS IoT Core-Entwicklerhandbuch.

Anmerkung

Ihr Stammzertifizierungsstellen-Zertifikattyp muss mit Ihrem Endpunkt übereinstimmen. Verwenden Sie ein ATS-Stammzertifizierungsstellenzertifikat mit einem ATS-Endpunkt (bevorzugt) oder ein VeriSign Stammzertifizierungsstellenzertifikat mit einem Legacy-Endpunkt. Nur einige Amazon Web Services-Regionen unterstützen Legacy-Endpunkte. Weitere Informationen finden Sie unter Service-Endpunkte müssen mit dem Zertifikatstyp der Stammzertifizierungsstelle übereinstimmen.

Client-Geräte laden auch das Greengrass-Gruppenzertifizierungsstellenzertifikat herunter. Dies wird verwendet, um das MQTT-Serverzertifikat auf dem Greengrass-Kern während der gegenseitigen Authentifizierung zu validieren. Weitere Informationen finden Sie unter Geräteverbindung – Workflow. Der Standardablaufzeitraum des MQTT-Serverzertifikats beträgt sieben Tage.

Zertifikatrotation auf dem lokalen MQTT-Server

Client-Geräte verwenden das lokale MQTT-Serverzertifikat für die gegenseitige Authentifizierung mit dem Greengrass-Core-Gerät. Standardmäßig läuft dieses Zertifikat nach sieben Tagen ab. Dieser begrenzte Zeitraum basiert auf bewährten Sicherheitsmethoden. Das MQTT-Serverzertifikat wird von dem CA-Gruppenzertifikat signiert, das in der Cloud gespeichert ist.

Damit die Zertifikatrotation stattfinden kann, muss Ihr Greengrass-Kerngerät online sein und regelmäßig direkt auf den AWS IoT Greengrass Service zugreifen können. Wenn das Zertifikat abläuft, versucht das Core-Gerät, eine Verbindung zum AWS IoT Greengrass Service herzustellen, um ein neues Zertifikat zu erhalten. Wenn eine Verbindung hergestellt wurde, lädt das Kerngerät das neue MQTT-Serverzertifikat herunter und startet den lokalen MQTT-Service neu. An diesem Punkt werden alle Client-Geräte, die mit dem Core verbunden sind, getrennt. Wenn das Core-Gerät zum Zeitpunkt des Ablaufs offline ist, erhält es das Ersatzzertifikat nicht. Alle neuen Versuche, eine Verbindung mit dem Core-Gerät herzustellen, werden abgelehnt. Bestehende Verbindungen bleiben davon unberührt. Client-Geräte können erst dann eine Verbindung zum Core-Gerät herstellen, wenn die Verbindung zum AWS IoT Greengrass Service wiederhergestellt und ein neues MQTT-Serverzertifikat heruntergeladen werden kann.

Die Zeit bis zum Ablauf kann je nach Ihren Anforderungen auf einen Wert zwischen 7 und 30 Tagen festgelegt werden. Häufigere Rotationen erfordern häufigere Cloud-Verbindungen. Weniger häufige Rotationen können Sicherheitsrisiken darstellen. Wenn Sie den Ablauf des Zertifikats auf einen Wert über 30 Tage festlegen möchten, wenden Sie sich an AWS Support.

In der AWS IoT Konsole können Sie das Zertifikat auf der Seite Einstellungen der Gruppe verwalten. In der AWS IoT Greengrass API können Sie die UpdateGroupCertificateConfiguration Aktion verwenden.

Wenn das MQTT-Serverzertifikat abgelaufen ist, schlägt jeder Validierungsversuch für das Zertifikat fehl. Client-Geräte müssen in der Lage sein, den Fehler zu erkennen und die Verbindung zu beenden.

AWS IoT-Richtlinien für Operationen auf Datenebene

Verwenden Sie AWS IoT-Richtlinien, um den Zugriff auf die Datenebene AWS IoT Core und AWS IoT Greengrass zu autorisieren. Die Datenebene AWS IoT Core besteht aus Operationen für Geräte, Benutzer und Anwendungen, wie z. B. die Verbindung zu AWS IoT Core und das Abonnieren von Themen. Die Datenebene AWS IoT Greengrass besteht aus Operationen für Greengrass-Geräte, z. B. dem Abrufen von Bereitstellungen und dem Aktualisieren von Konnektivitätsinformationen.

Eine -AWS IoTRichtlinie ist ein JSON-Dokument, das einer IAM-Richtlinie ähnelt. Sie enthält eine oder mehrere Richtlinienanweisungen, die die folgenden Eigenschaften angeben:

  • Effect. Der Zugriffsmodus, der Allow oder sein kannDeny.

  • Action. Die Liste der Aktionen, die von der Richtlinie zugelassen oder verweigert werden.

  • Resource. Die Liste der Ressourcen, für die die Aktion zugelassen oder verweigert wird.

AWS IoT -Richtlinien unterstützen * als Platzhalterzeichen und behandeln MQTT-Platzhalterzeichen (+ und #) als Literalzeichenfolgen. Weitere Informationen zum * Platzhalter finden Sie unter Verwenden von Platzhaltern in Ressourcen-ARNs im AWS Identity and Access Management -Benutzerhandbuch.

Weitere Informationen finden Sie unter AWS IoT-Richtlinien und AWS IoT-Richtlinienaktionen im AWS IoT Core-Entwicklerhandbuch.

Anmerkung

AWS IoT Core Mit können Sie Objektgruppen AWS IoT Richtlinien zuordnen, um Berechtigungen für Gerätegruppen zu definieren. Richtlinien für Objektgruppen erlauben keinen Zugriff auf AWS IoT Greengrass Datenebenenoperationen. Um einem Objekt den Zugriff auf einen Vorgang auf der AWS IoT Greengrass Datenebene zu gewähren, fügen Sie die Berechtigung zu einer AWS IoT Richtlinie hinzu, die Sie dem Zertifikat des Objekts hinzufügen.

AWS IoT Greengrass-Richtlinienaktionen

Greengrass-Kernaktionen

AWS IoT Greengrass definiert die folgenden Richtlinienaktionen, die Greengrass-Kerngeräte in AWS IoT-Richtlinien verwenden können:

greengrass:AssumeRoleForGroup

Berechtigung für ein Greengrass-Core-Gerät zum Abrufen von Anmeldeinformationen mithilfe der Lambda-Funktion des Token Exchange Service (TES)-Systems. Die Berechtigungen, die mit den abgerufenen Anmeldeinformationen verknüpft sind, basieren auf der Richtlinie, die der konfigurierten Gruppenrolle angefügt ist.

Diese Berechtigung wird überprüft, wenn ein Greengrass-Kerngerät versucht, Anmeldeinformationen abzurufen (vorausgesetzt, die Anmeldeinformationen werden nicht lokal zwischengespeichert).

greengrass:CreateCertificate

Berechtigung für ein Greengrass-Kerngerät zum Erstellen eines eigenen Serverzertifikats.

Diese Berechtigung wird überprüft, wenn ein Greengrass-Kerngerät ein Zertifikat erstellt. Greengrass-Kerngeräte versuchen, ein Serverzertifikat beim ersten Ausführen , wenn sich die Konnektivitätsinformationen des Kerns ändern, und in festgelegten Rotationszeiträumen zu erstellen.

greengrass:GetConnectivityInfo

Berechtigung für ein Greengrass-Kerngerät, seine eigenen Konnektivitätsinformationen abzurufen.

Diese Berechtigung wird überprüft, wenn ein Greengrass-Kerngerät versucht, seine Konnektivitätsinformationen von AWS IoT Core abzurufen.

greengrass:GetDeployment

Berechtigung für ein Greengrass-Kerngerät zum Abrufen von Bereitstellungen.

Diese Berechtigung wird überprüft, wenn ein Greengrass-Kerngerät versucht, Bereitstellungen und Bereitstellungsstatus aus der Cloud abzurufen.

greengrass:GetDeploymentArtifacts

Berechtigung für ein Greengrass-Core-Gerät zum Abrufen von Bereitstellungsartefakten wie Gruppeninformationen oder Lambda-Funktionen.

Diese Berechtigung wird überprüft, wenn ein Greengrass-Kerngerät eine Bereitstellung erhält und dann versucht, Bereitstellungsartefakte abzurufen.

greengrass:UpdateConnectivityInfo

Berechtigung für ein Greengrass-Kerngerät, seine eigenen Konnektivitätsinformationen mit IP- oder Hostnameninformationen zu aktualisieren.

Diese Berechtigung wird überprüft, wenn ein Greengrass-Kerngerät versucht, seine Konnektivitätsinformationen in der Cloud zu aktualisieren.

greengrass:UpdateCoreDeploymentStatus

Berechtigung für ein Greengrass-Kerngerät, den Status einer Bereitstellung zu aktualisieren.

Diese Berechtigung wird überprüft, wenn ein Greengrass-Kerngerät eine Bereitstellung erhält und dann versucht, den Bereitstellungsstatus zu aktualisieren.

 

Greengrass-Geräteaktionen

AWS IoT Greengrass definiert die folgende Richtlinienaktion, die Client-Geräte in AWS IoT Richtlinien verwenden können:

greengrass:Discover

Berechtigung für ein Client-Gerät, die Discovery-API zum Abrufen der Kernkonnektivitätsinformationen und der Gruppenzertifizierungsstelle seiner Gruppe zu verwenden.

Diese Berechtigung wird überprüft, wenn ein Client-Gerät die Discovery-API mit gegenseitiger TLS-Authentifizierung aufruft.

Minimale AWS IoT-Richtlinie für das AWS IoT Greengrass Core-Gerät

Die folgende Beispielrichtlinie enthält den Mindestsatz von Aktionen, die erforderlich sind, um eine grundlegende Greengrass-Funktionalität für Ihr Core-Gerät zu unterstützen.

  • Die Richtlinie listet die MQTT-Themen und Themenfilter auf, für die das Core-Gerät Nachrichten veröffentlichen, abonnieren und empfangen kann, einschließlich Themen für den Schattenstatus. Um den Nachrichtenaustausch zwischen AWS IoT Core, Lambda-Funktionen, Connectors und Client-Geräten in der Greengrass-Gruppe zu unterstützen, geben Sie die Themen und Themenfilter an, die Sie zulassen möchten. Weitere Informationen finden Sie unter Beispiele für Veröffentlichungs-/Abonnement-Richtlinien im AWS IoT Core-Entwicklerhandbuch.

  • Die Richtlinie enthält einen Abschnitt, der AWS IoT Core zum Abrufen, Aktualisieren und Löschen des Kern-Geräteschattens berechtigt. Um die Schattensynchronisierung für Client-Geräte in der Greengrass-Gruppe zu ermöglichen, geben Sie die Amazon-Ressourcennamen (ARNs) in der Resource Liste an (z. B. arn:aws:iot:region:account-id:thing/device-name).

  • Die Verwendung von Objektrichtlinien-Variablen (iot:Connection.Thing.*) in der AWS IoT-Richtlinie für ein Kerngerät wird nicht unterstützt. Der Core verwendet dasselbe Gerätezertifikat, um mehrere Verbindungen mit AWS IoT Core herzustellen, aber die Client-ID in einer Verbindung stimmt möglicherweise nicht exakt mit dem Namen des Core-Objekts überein.

  • Für die greengrass:UpdateCoreDeploymentStatus-Berechtigung ist das letzte Segment im Resource-ARN der URL-codierte ARN des Core-Geräts.

{ "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-*" ] } ] }
Anmerkung

AWS IoT -Richtlinien für Client-Geräte erfordern in der Regel ähnliche Berechtigungen für iot:Connect-, -iot:Receive, - und -iot:SubscribeAktioniot:Publishen.

Damit ein Client-Gerät automatisch Konnektivitätsinformationen für die Kerne in den Greengrass-Gruppen erkennen kann, zu denen das Gerät gehört, muss die AWS IoT Richtlinie für ein Client-Gerät die greengrass:Discover Aktion enthalten. Geben Sie im Resource Abschnitt den ARN des Client-Geräts an, nicht den ARN des Greengrass-Core-Geräts. Beispielsweise:

{ "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/device-name" ] }

Die AWS IoT Richtlinie für Client-Geräte erfordert in der Regel keine Berechtigungen für iot:GetThingShadow-iot:UpdateThingShadow, - oder -iot:DeleteThingShadowAktionen, da der Greengrass-Kern Schattensynchronisierungsvorgänge für Client-Geräte übernimmt. Stellen Sie in diesem Fall sicher, dass der Resource Abschnitt für Schattenaktionen in der AWS IoT Richtlinie des Kerns die ARNs der Client-Geräte enthält.

 

In der AWS IoT Konsole können Sie die Richtlinie anzeigen und bearbeiten, die dem Zertifikat Ihres Kerns zugeordnet ist.

  1. Erweitern Sie im Navigationsbereich unter Verwalten die Option Alle Geräte und wählen Sie dann Objekte aus.

  2. Wählen Sie Ihren Kern aus.

  3. Wählen Sie auf der Konfigurationsseite Ihres Kerns die Registerkarte Zertifikate aus.

  4. Wählen Sie auf der Registerkarte Zertifikate Ihr Zertifikat aus.

  5. Klicken Sie auf der Konfigurationsseite des Zertifikats auf Policies (Richtlinien) und wählen Sie dann die Richtlinie aus.

    Wenn Sie die Richtlinie bearbeiten möchten, wählen Sie Aktive Version bearbeiten aus.

  6. Überprüfen Sie die Richtlinie und fügen Sie Berechtigungen nach Bedarf hinzu, entfernen oder bearbeiten Sie sie.

  7. Um eine neue Richtlinienversion als aktive Version festzulegen, wählen Sie unter Status der Richtlinienversion die Option Bearbeitene Version als aktive Version für diese Richtlinie festlegen aus.

  8. Wählen Sie Als neue Version speichern aus.