Geräteauthentifizierung und -autorisierung für AWS IoT Greengrass - 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.

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-Core-Geräte

    Greengrass-Core-Geräte verwenden Zertifikate und AWS IoT Richtlinien, um eine Verbindung zu AWS IoT Core und herzustellenAWS IoT Greengrass. Die Zertifikate und Richtlinien ermöglichen es auchAWS IoT Greengrass, Komponenten und Konfigurationen auf -Core-Geräten bereitzustellen.

  • Client-Geräte

    MQTT-Clientgeräte 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 die AWS IoT Greengrass Cloud-Erkennung verwenden, um ein Greengrass-Kerngerät zu finden und eine Verbindung zu ihm herzustellen. Ein Client-Gerät verwendet dasselbe Zertifikat, um eine Verbindung mit dem AWS IoT Core Cloud-Service und den Core-Geräten herzustellen. Client-Geräte verwenden auch Erkennungsinformationen für die gegenseitige Authentifizierung mit dem Core-Gerät. Weitere Informationen finden Sie unter Interagieren mit lokalen IoT-Geräten.

X.509-Zertifikate

Die Kommunikation zwischen -Core-Geräten 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 Clientkomponente auf dem Greengrass-Kerngerät, die eine Verbindung zum AWS IoT Core und AWS IoT Greengrass über das Internet herstellt.

  • Client-Geräte, die AWS IoT Greengrass über das Internet eine Verbindung zu herstellen, um -Core-Geräte zu erkennen.

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

AWS IoT Greengrass -Core-Geräte speichern Zertifikate im Greengrass-Stammordner.

CA-Zertifikate

Greengrass-Core-Geräte und Client-Geräte laden ein Stammzertifizierungsstellenzertifikat herunter, das für die Authentifizierung mit den - 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.

Client-Geräte laden auch ein Greengrass-Core-Geräte-CA-Zertifikat herunter. Sie verwenden dieses Zertifikat, um das MQTT-Serverzertifikat auf dem Core-Gerät während der gegenseitigen Authentifizierung zu validieren.

Zertifikatrotation auf dem lokalen MQTT-Broker

Wenn Sie die Client-Geräteunterstützung aktivieren, generieren Greengrass-Core-Geräte ein lokales MQTT-Serverzertifikat, das Client-Geräte für die gegenseitige Authentifizierung verwenden. Dieses Zertifikat wird durch das CA-Zertifikat des Core-Geräts signiert, das das Core-Gerät in der AWS IoT Greengrass Cloud speichert. Client-Geräte rufen das CA-Zertifikat des Core-Geräts ab, wenn sie das Core-Gerät erkennen. Sie verwenden das CA-Zertifikat des Core-Geräts, um das MQTT-Serverzertifikat des Core-Geräts zu überprüfen, wenn sie eine Verbindung zum Core-Gerät herstellen. Das CA-Zertifikat des Core-Geräts läuft nach 5 Jahren ab.

Das MQTT-Serverzertifikat läuft standardmäßig alle 7 Tage ab und Sie können diese Dauer auf zwischen 2 und 10 Tage konfigurieren. Dieser begrenzte Zeitraum basiert auf bewährten Sicherheitsmethoden. Diese Rotation trägt dazu bei, die Bedrohung zu minimieren, dass ein Angreifer das MQTT-Serverzertifikat und den privaten Schlüssel stiehlt, um sich als das Greengrass-Kerngerät auszugeben.

Das Greengrass-Core-Gerät rotiert das MQTT-Serverzertifikat 24 Stunden vor Ablauf. Das Greengrass-Core-Gerät generiert ein neues Zertifikat und startet den lokalen MQTT-Broker neu. In diesem Fall werden alle Client-Geräte, die mit dem Greengrass-Core-Gerät verbunden sind, getrennt. Client-Geräte können nach kurzer Zeit wieder eine Verbindung zum Greengrass-Core-Gerät herstellen.

AWS IoT-Richtlinien für Operationen auf Datenebene

Verwenden Sie AWS IoT Richtlinien, um den Zugriff auf die AWS IoT Greengrass Datenebenen AWS IoT Core und zu autorisieren. Die AWS IoT Core Datenebene bietet Operationen für Geräte, Benutzer und Anwendungen. Zu diesen Vorgängen gehört die Möglichkeit, eine Verbindung zu Themen herzustellen AWS IoT Core und diese zu abonnieren. Die AWS IoT Greengrass Datenebene bietet Operationen für Greengrass-Geräte. Weitere Informationen finden Sie unter AWS IoT Greengrass V2-Richtlinienaktionen. Zu diesen Vorgängen gehört die Möglichkeit, Komponentenabhängigkeiten aufzulösen und Artefakte öffentlicher Komponenten herunterzuladen.

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.

Wichtig

Objektrichtlinienvariablen (iot:Connection.Thing.*) werden für in AWS IoT Richtlinien für -Core-Geräte oder Greengrass-Operationen auf Datenebene nicht unterstützt. Stattdessen können Sie einen Platzhalter verwenden, der mehreren Geräten entspricht, die ähnliche Namen haben. Sie können beispielsweise angeben, MyGreengrassDevice* dass mit MyGreengrassDevice1, MyGreengrassDevice2usw. übereinstimmt.

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 V2-Richtlinienaktionen

AWS IoT Greengrass V2 definiert die folgenden Richtlinienaktionen, die Greengrass-Core-Geräte und Client-Geräte in -AWS IoTRichtlinien verwenden können. Um eine Ressource für eine -Richtlinienaktion anzugeben, verwenden Sie den Amazon-Ressourcennamen (ARN) der Ressource.

Core-Geräteaktionen
greengrass:GetComponentVersionArtifact

Gewährt die Berechtigung zum Abrufen einer vorsignierten URL zum Herunterladen eines öffentlichen Komponentenartefakts oder eines Lambda-Komponentenartefakts.

Diese Berechtigung wird ausgewertet, wenn ein Core-Gerät eine Bereitstellung erhält, die eine öffentliche Komponente oder ein Lambda mit Artefakten angibt. Wenn das Core-Gerät bereits über das Artefakt verfügt, wird das Artefakt nicht erneut heruntergeladen.

Ressourcentyp: componentVersion

Format des Ressourcen-ARN: arn:aws:greengrass:region:account-id:components:component-name:versions:component-version

greengrass:ResolveComponentCandidates

Gewährt die Berechtigung zum Identifizieren einer Liste von Komponenten, die die Anforderungen an Komponente, Version und Plattform für eine Bereitstellung erfüllen. Wenn die Anforderungen in Konflikt geraten oder keine Komponenten vorhanden sind, die die Anforderungen erfüllen, gibt dieser Vorgang einen Fehler zurück und die Bereitstellung auf dem Gerät schlägt fehl.

Diese Berechtigung wird ausgewertet, wenn ein Core-Gerät eine Bereitstellung erhält, die Komponenten angibt.

Ressourcentyp: Keine

Format des Ressourcen-ARN: *

greengrass:GetDeploymentConfiguration

Gewährt die Berechtigung zum Abrufen einer vorsignierten URL zum Herunterladen eines großen Bereitstellungsdokuments.

Diese Berechtigung wird ausgewertet, wenn ein Core-Gerät eine Bereitstellung erhält, die ein Bereitstellungsdokument größer als 7 KB (wenn die Bereitstellung auf ein Objekt abzielt) oder 31 KB (wenn die Bereitstellung auf eine Objektgruppe abzielt) angibt. Das Bereitstellungsdokument enthält Komponentenkonfigurationen, Bereitstellungsrichtlinien und Bereitstellungsmetadaten. Weitere Informationen finden Sie unter Bereitstellen von AWS IoT Greengrass Komponenten auf Geräten.

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

Ressourcentyp: Keine

Format des Ressourcen-ARN: *

greengrass:ListThingGroupsForCoreDevice

Gewährt die Berechtigung zum Abrufen der Objektgruppenhierarchie eines Core-Geräts.

Diese Berechtigung wird überprüft, wenn ein Core-Gerät eine Bereitstellung von erhältAWS IoT Greengrass. Das Core-Gerät verwendet diese Aktion, um festzustellen, ob es seit der letzten Bereitstellung aus einer Objektgruppe entfernt wurde. Wenn das Core-Gerät aus einer Objektgruppe entfernt wurde und diese Objektgruppe das Ziel einer Bereitstellung auf dem Core-Gerät ist, entfernt das Core-Gerät die von dieser Bereitstellung installierten Komponenten.

Diese Funktion wird von v2.5.0 und höher der Greengrass-Kernkomponente verwendet.

Ressourcentyp: thing (Core-Gerät)

Format des Ressourcen-ARN: arn:aws:iot:region:account-id:thing/core-device-thing-name

greengrass:VerifyClientDeviceIdentity

Gewährt die Berechtigung zum Überprüfen der Identität eines Client-Geräts, das eine Verbindung zu einem Core-Gerät herstellt.

Diese Berechtigung wird ausgewertet, wenn ein Core-Gerät die Authentifizierungskomponente des Client-Geräts ausführt und eine MQTT-Verbindung von einem Client-Gerät erhält. Das Client-Gerät präsentiert sein AWS IoT Gerätezertifikat. Anschließend sendet das Core-Gerät das Gerätezertifikat an den AWS IoT Greengrass Cloud-Service, um die Identität des Client-Geräts zu überprüfen. Weitere Informationen finden Sie unter Interagieren mit lokalen IoT-Geräten.

Ressourcentyp: Keine

Format des Ressourcen-ARN: *

greengrass:VerifyClientDeviceIoTCertificateAssociation

Gewährt die Berechtigung zum Überprüfen, ob ein Client-Gerät einem -AWS IoTZertifikat zugeordnet ist.

Diese Berechtigung wird ausgewertet, wenn ein Core-Gerät die Authentifizierungskomponente des Client-Geräts ausführt und ein Client-Gerät autorisiert, eine Verbindung über MQTT herzustellen. Weitere Informationen finden Sie unter Interagieren mit lokalen IoT-Geräten.

Anmerkung

Damit ein Core-Gerät diesen Vorgang verwenden kann, muss die Greengrass-Servicerolle Ihrem zugeordnet sein AWS-Konto und die -iot:DescribeCertificateBerechtigung zulassen.

Ressourcentyp: thing (Client-Gerät)

Format des Ressourcen-ARN: arn:aws:iot:region:account-id:thing/client-device-thing-name

greengrass:PutCertificateAuthorities

Gewährt die Berechtigung zum Hochladen von Zertifizierungsstellenzertifikaten (CA), die Client-Geräte herunterladen können, um das Core-Gerät zu überprüfen.

Diese Berechtigung wird ausgewertet, wenn ein Core-Gerät die Authentifizierungskomponente des Client-Geräts installiert und ausführt. Diese Komponente erstellt eine lokale Zertifizierungsstelle und verwendet diese Operation, um ihre CA-Zertifikate hochzuladen. Client-Geräte laden diese CA-Zertifikate herunter, wenn sie den Vorgang Discover verwenden, um Kerngeräte zu finden, mit denen sie eine Verbindung herstellen können. Wenn Client-Geräte eine Verbindung zu einem MQTT-Broker auf einem Core-Gerät herstellen, verwenden sie diese CA-Zertifikate, um die Identität des Core-Geräts zu überprüfen. Weitere Informationen finden Sie unter Interagieren mit lokalen IoT-Geräten.

Ressourcentyp: Keine

ARN-Format: *

greengrass:GetConnectivityInfo

Gewährt die Berechtigung zum Abrufen von Verbindungsinformationen für ein Core-Gerät. Diese Informationen beschreiben, wie Client-Geräte eine Verbindung zum Core-Gerät herstellen können.

Diese Berechtigung wird ausgewertet, wenn ein Core-Gerät die Authentifizierungskomponente des Client-Geräts installiert und ausführt. Diese Komponente verwendet die Konnektivitätsinformationen, um gültige CA-Zertifikate zum Hochladen in den AWS IoT Greengrass Cloud-Service mit der -PutCertificateAuthoriesOperation zu generieren. Client-Geräte verwenden diese CA-Zertifikate, um die Identität des Core-Geräts zu überprüfen. Weitere Informationen finden Sie unter Interagieren mit lokalen IoT-Geräten.

Sie können diesen Vorgang auch auf der AWS IoT Greengrass Steuerebene verwenden, um Konnektivitätsinformationen für ein Core-Gerät anzuzeigen. Weitere Informationen finden Sie unter GetConnectivityInfo in der AWS IoT Greengrass V1-API-Referenz.

Ressourcentyp: thing (Core-Gerät)

Format des Ressourcen-ARN: arn:aws:iot:region:account-id:thing/core-device-thing-name

greengrass:UpdateConnectivityInfo

Gewährt die Berechtigung zum Aktualisieren von Verbindungsinformationen für ein Core-Gerät. Diese Informationen beschreiben, wie Client-Geräte eine Verbindung zum Core-Gerät herstellen können.

Diese Berechtigung wird ausgewertet, wenn ein Core-Gerät die IP-Detektorkomponente ausführt. Diese Komponente identifiziert die Informationen, die Client-Geräte benötigen, um eine Verbindung zum Core-Gerät im lokalen Netzwerk herzustellen. Anschließend verwendet diese Komponente diese Operation, um die Konnektivitätsinformationen in den AWS IoT Greengrass Cloud-Service hochzuladen, sodass Client-Geräte diese Informationen mit der Discover-Operation abrufen können. Weitere Informationen finden Sie unter Interagieren mit lokalen IoT-Geräten.

Sie können diesen Vorgang auch auf der AWS IoT Greengrass Steuerebene verwenden, um die Konnektivitätsinformationen für ein Core-Gerät manuell zu aktualisieren. Weitere Informationen finden Sie unter UpdateConnectivityInfo in der AWS IoT Greengrass V1-API-Referenz.

Ressourcentyp: thing (Core-Gerät)

Format des Ressourcen-ARN: arn:aws:iot:region:account-id:thing/core-device-thing-name

Client-Geräteaktionen
greengrass:Discover

Gewährt die Berechtigung zum Erkennen von Verbindungsinformationen für -Core-Geräte, bei denen ein Client-Gerät eine Verbindung herstellen kann. Diese Informationen beschreiben, wie das Client-Gerät eine Verbindung zu den Core-Geräten herstellen kann. Ein Client-Gerät kann nur die Core-Geräte erkennen, denen Sie es mithilfe der -BatchAssociateClientDeviceWithCoreDeviceOperation zugeordnet haben. Weitere Informationen finden Sie unter Interagieren mit lokalen IoT-Geräten.

Ressourcentyp: thing (Client-Gerät)

Format des Ressourcen-ARN: arn:aws:iot:region:account-id:thing/client-device-thing-name

Aktualisieren der AWS IoT Richtlinie eines Core-Geräts

Sie können die - AWS IoT Greengrass und -AWS IoTKonsolen oder die AWS IoT-API verwenden, um die AWS IoT Richtlinie eines Core-Geräts anzuzeigen und zu aktualisieren.

Anmerkung

Wenn Sie das AWS IoT Greengrass -Core-Software-Installationsprogramm zur Bereitstellung von Ressourcen verwendet haben, verfügt Ihr -Core-Gerät über eine -AWS IoTRichtlinie, die den Zugriff auf alle -AWS IoT GreengrassAktionen ermöglicht (greengrass:*). Sie können diese Schritte ausführen, um den Zugriff nur auf die Aktionen zu beschränken, die ein Core-Gerät verwendet.

  1. Wählen Sie im Navigationsmenü der AWS IoT Greengrass Konsole die Option Core-Geräte aus.

  2. Wählen Sie auf der Seite Core-Geräte das zu aktualisierende Core-Gerät aus.

  3. Wählen Sie auf der Detailseite des Core-Geräts den Link zum Objekt des Core-Geräts aus. Dieser Link öffnet die Seite mit den Objektdetails in der -AWS IoTKonsole.

  4. Wählen Sie auf der Seite mit den Objektdetails die Option Zertifikate aus.

  5. Wählen Sie auf der Registerkarte Zertifikate das aktive Zertifikat des Objekts aus.

  6. Wählen Sie auf der Seite mit den Zertifikatsdetails Richtlinien aus.

  7. Wählen Sie auf der Registerkarte Richtlinien die zu überprüfende und zu aktualisierende AWS IoT Richtlinie aus. Sie können die erforderlichen Berechtigungen zu jeder Richtlinie hinzufügen, die an das aktive Zertifikat des Core-Geräts angehängt ist.

    Anmerkung

    Wenn Sie das AWS IoT Greengrass-Core-Softwareinstallationsprogramm zur Bereitstellung von Ressourcen verwendet haben, haben Sie zwei AWS IoT Richtlinien. Wir empfehlen Ihnen, die Richtlinie mit dem Namen auszuwählenGreengrassV2IoTThingPolicy, falls sie vorhanden ist. Core-Geräte, die Sie mit dem Schnellinstallationsprogramm erstellen, verwenden diesen Richtliniennamen standardmäßig. Wenn Sie dieser Richtlinie Berechtigungen hinzufügen, erteilen Sie diese Berechtigungen auch anderen -Core-Geräten, die diese Richtlinie verwenden.

  8. Wählen Sie in der Richtlinienübersicht die Option Aktive Version bearbeiten aus.

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

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

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

  1. Listen Sie die Prinzipale für das AWS IoT Objekt des Core-Geräts auf. Objektprinzipale können X.509-Gerätezertifikate oder andere Identifikatoren sein. Führen Sie den folgenden Befehl aus und ersetzen Sie MyGreengrassCore durch den Namen des Core-Geräts.

    aws iot list-thing-principals --thing-name MyGreengrassCore

    Der Vorgang gibt eine Antwort zurück, die die Objektprinzipale des Core-Geräts auflistet.

    { "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/certificateId" ] }
  2. Identifizieren Sie das aktive Zertifikat des Core-Geräts. Führen Sie den folgenden Befehl aus und ersetzen Sie certificateId durch die ID jedes Zertifikats aus dem vorherigen Schritt, bis Sie das aktive Zertifikat finden. Die Zertifikat-ID ist die hexadezimale Zeichenfolge am Ende des Zertifikat-ARN. Das --query Argument gibt an, dass nur der Status des Zertifikats ausgegeben wird.

    aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'

    Der Vorgang gibt den Zertifikatsstatus als Zeichenfolge zurück. Wenn das Zertifikat beispielsweise aktiv ist, gibt dieser Vorgang aus"ACTIVE".

  3. Listen Sie die AWS IoT Richtlinien auf, die dem Zertifikat angefügt sind. Führen Sie den folgenden Befehl aus und ersetzen Sie den Zertifikat-ARN durch den ARN des Zertifikats.

    aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId

    Der Vorgang gibt eine Antwort zurück, in der die AWS IoT Richtlinien aufgeführt sind, die dem Zertifikat angefügt sind.

    { "policies": [ { "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias" }, { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy" } ] }
  4. Wählen Sie die anzuzeigende und zu aktualisierende Richtlinie aus.

    Anmerkung

    Wenn Sie das AWS IoT Greengrass-Core-Softwareinstallationsprogramm zur Bereitstellung von Ressourcen verwendet haben, haben Sie zwei AWS IoT Richtlinien. Wir empfehlen Ihnen, die Richtlinie mit dem Namen auszuwählenGreengrassV2IoTThingPolicy, falls vorhanden. Core-Geräte, die Sie mit dem Schnellinstallationsprogramm erstellen, verwenden diesen Richtliniennamen standardmäßig. Wenn Sie dieser Richtlinie Berechtigungen hinzufügen, erteilen Sie diese Berechtigungen auch anderen -Core-Geräten, die diese Richtlinie verwenden.

  5. Rufen Sie das Dokument der Richtlinie ab. Führen Sie den folgenden Befehl aus und ersetzen Sie GreengrassV2IoTThingPolicy durch den Namen der Richtlinie.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

    Die Operation gibt eine Antwort zurück, die das Dokument der Richtlinie und andere Informationen über die Richtlinie enthält. Das Richtliniendokument ist ein JSON-Objekt, das als Zeichenfolge serialisiert wird.

    { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\"iot:Connect\\",\ \\"iot:Publish\\",\ \\"iot:Subscribe\\",\ \\"iot:Receive\\",\ \\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "defaultVersionId": "1", "creationDate": "2021-02-05T16:03:14.098000-08:00", "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00", "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f" }
  6. Verwenden Sie einen Online-Konverter oder ein anderes Tool, um die Richtliniendokumentzeichenfolge in ein JSON-Objekt zu konvertieren, und speichern Sie sie dann in einer Datei mit dem Namen iot-policy.json.

    Wenn Sie beispielsweise das Tool jq installiert haben, können Sie den folgenden Befehl ausführen, um das Richtliniendokument abzurufen, es in ein JSON-Objekt zu konvertieren und das Richtliniendokument als JSON-Objekt zu speichern.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
  7. Überprüfen Sie das Richtliniendokument und fügen Sie Berechtigungen nach Bedarf hinzu, entfernen oder bearbeiten Sie sie.

    Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Öffnen der Datei zu verwenden.

    nano iot-policy.json

    Wenn Sie fertig sind, könnte das Richtliniendokument der minimalen AWS IoT Richtlinie für -Core-Geräte ähneln.

  8. Speichern Sie die Änderungen als neue Version der Richtlinie. Führen Sie den folgenden Befehl aus und ersetzen Sie GreengrassV2IoTThingPolicy durch den Namen der Richtlinie.

    aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default

    Die Operation gibt eine Antwort ähnlich dem folgenden Beispiel zurück, wenn sie erfolgreich ist.

    { "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\t\\t\\"iot:Connect\\",\ \\t\\t\\"iot:Publish\\",\ \\t\\t\\"iot:Subscribe\\",\ \\t\\t\\"iot:Receive\\",\ \\t\\t\\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "policyVersionId": "2", "isDefaultVersion": true }

Minimale AWS IoT Richtlinie für -AWS IoT Greengrass V2Core-Geräte

Wichtig

Spätere Versionen der Greengrass-Kernkomponente erfordern zusätzliche Berechtigungen für die minimale AWS IoT Richtlinie. Möglicherweise müssen Sie die AWS IoT Richtlinien Ihrer Core-Geräte aktualisieren, um zusätzliche Berechtigungen zu erteilen.

  • Core-Geräte, auf denen Greengrass-Kern v2.5.0 und höher ausgeführt wird, verwenden die -greengrass:ListThingGroupsForCoreDeviceBerechtigung, um Komponenten zu deinstallieren, wenn Sie ein Core-Gerät aus einer Objektgruppe entfernen.

  • Core-Geräte, auf denen Greengrass-Kern v2.3.0 und höher ausgeführt wird, verwenden die -greengrass:GetDeploymentConfigurationBerechtigung, um große Bereitstellungskonfigurationsdokumente zu unterstützen.

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 Connect Richtlinie enthält den * Platzhalter nach dem Objektnamen des Core-Geräts (z. B. core-device-thing-name*). Das Core-Gerät verwendet dasselbe Gerätezertifikat, um mehrere gleichzeitige Abonnements für zu erstellenAWS IoT Core, aber die Client-ID in einer Verbindung stimmt möglicherweise nicht genau mit dem Objektnamen des Core-Geräts überein. Nach den ersten 50 Abonnements verwendet das Core-Gerät core-device-thing-name#number als Client-ID, wobei für jede weitere 50 Abonnements number erhöht wird. Wenn beispielsweise ein Core-Gerät mit dem Namen 150 gleichzeitige Abonnements MyCoreDevice erstellt, verwendet es die folgenden Client-IDs:

    • Abonnements 1 bis 50: MyCoreDevice

    • Abonnements 51 bis 100: MyCoreDevice#2

    • Abonnements 101 bis 150: MyCoreDevice#3

    Der Platzhalter ermöglicht es dem Core-Gerät, eine Verbindung herzustellen, wenn es diese Client-IDs mit einem Suffix verwendet.

  • 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, Greengrass-Komponenten und Client-Geräten 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 gewährt die Berechtigung zum Veröffentlichen im folgenden Thema für Telemetriedaten.

    $aws/things/core-device-thing-name/greengrass/health/json

    Sie können diese Berechtigung für -Core-Geräte entfernen, bei denen Sie Telemetrie deaktivieren. Weitere Informationen finden Sie unter Erfassen von Telemetriedaten zum Systemstatus von -AWS IoT GreengrassCore-Geräten.

  • Die Richtlinie gewährt die Berechtigung, eine IAM-Rolle über einen -AWS IoTRollenalias anzunehmen. Das Core-Gerät verwendet diese Rolle, die als Token-Exchange-Rolle bezeichnet wird, um AWS Anmeldeinformationen zu erhalten, die es zur Authentifizierung von AWS Anforderungen verwenden kann. Weitere Informationen finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

    Wenn Sie die -AWS IoT GreengrassCore-Software installieren, erstellen Sie eine zweite AWS IoT Richtlinie, die nur diese Berechtigung enthält, und fügen sie an. Wenn Sie diese Berechtigung in die primäre AWS IoT Richtlinie Ihres Core-Geräts aufnehmen, können Sie die andere AWS IoT Richtlinie trennen und löschen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "arn:aws:iot:region:account-id:client/core-device-thing-name*" }, { "Effect": "Allow", "Action": [ "iot:Receive", "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/greengrass/health/json", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/greengrassv2/health/json", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/jobs/*", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/shadow/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name/jobs/*", "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name/shadow/*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:region:account-id:rolealias/token-exchange-role-alias-name" }, { "Effect": "Allow", "Action": [ "greengrass:GetComponentVersionArtifact", "greengrass:ResolveComponentCandidates", "greengrass:GetDeploymentConfiguration", "greengrass:ListThingGroupsForCoreDevice" ], "Resource": "*" } ] }

Minimale AWS IoT Richtlinie zur Unterstützung von Client-Geräten

Die folgende Beispielrichtlinie enthält den Mindestsatz von Aktionen, die erforderlich sind, um die Interaktion mit Clientgeräten auf einem Core-Gerät zu unterstützen. Um Client-Geräte zu unterstützen, muss ein Core-Gerät zusätzlich zur AWS IoTMinimalrichtlinie für den grundlegenden Betrieb über die Berechtigungen in dieser AWS IoT Richtlinie verfügen.

  • Die Richtlinie ermöglicht es dem Core-Gerät, seine eigenen Konnektivitätsinformationen zu aktualisieren. Diese Berechtigung (greengrass:UpdateConnectivityInfo) ist nur erforderlich, wenn Sie die IP-Detektorkomponente auf dem Core-Gerät bereitstellen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/get" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name-gci/shadow/update/delta", "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/update/delta", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "greengrass:PutCertificateAuthorities", "greengrass:VerifyClientDeviceIdentity" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "greengrass:VerifyClientDeviceIoTCertificateAssociation" ], "Resource": "arn:aws:iot:region:account-id:thing/*" }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-device-thing-name" ] } ] }

Minimale AWS IoT Richtlinie für Client-Geräte

Die folgende Beispielrichtlinie enthält den Mindestsatz von Aktionen, die ein Client-Gerät benötigt, um Core-Geräte zu erkennen, auf denen sie sich über MQTT verbinden und kommunizieren. Die AWS IoT Richtlinie des Client-Geräts muss die -greengrass:DiscoverAktion enthalten, damit das Gerät Konnektivitätsinformationen für die zugehörigen Greengrass-Core-Geräte erkennen kann. Geben Sie im Resource Abschnitt den Amazon-Ressourcennamen (ARN) des Client-Geräts an, nicht den ARN des Greengrass-Core-Geräts.

  • Die Richtlinie ermöglicht die Kommunikation zu allen MQTT-Themen. Um bewährte Sicherheitsmethoden zu befolgen, beschränken Sie die iot:Receive Berechtigungen iot:Publishiot:Subscribe, und auf den minimalen Satz von Themen, die ein Client-Gerät für Ihren Anwendungsfall benötigt.

  • Die Richtlinie ermöglicht es dem Objekt, Kerngeräte für alle AWS IoT Dinge zu erkennen. Um bewährte Sicherheitsmethoden zu befolgen, beschränken Sie die greengrass:Discover Berechtigung auf das AWS IoT Objekt des Client-Geräts oder einen Platzhalter, der einer Reihe von AWS IoT Objekten entspricht.

    Wichtig

    Objektrichtlinienvariablen (iot:Connection.Thing.*) werden für in AWS IoT Richtlinien für -Core-Geräte oder Greengrass-Operationen auf Datenebene nicht unterstützt. Stattdessen können Sie einen Platzhalter verwenden, der mehreren Geräten entspricht, die ähnliche Namen haben. Sie können beispielsweise angeben, MyGreengrassDevice* dass mit MyGreengrassDevice1, MyGreengrassDevice2usw. übereinstimmt.

  • Die AWS IoT Richtlinie eines Client-Geräts erfordert in der Regel keine Berechtigungen für iot:GetThingShadow-iot:UpdateThingShadow, - oder -iot:DeleteThingShadowAktionen, da das Greengrass-Core-Gerät Schattensynchronisierungsvorgänge für Client-Geräte verarbeitet. Damit das Core-Gerät Client-Geräteschatten verarbeiten kann, überprüfen Sie, ob die AWS IoT Richtlinie des Core-Geräts diese Aktionen zulässt und ob der Resource Abschnitt die ARNs der Client-Geräte enthält.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/*" ] } ] }