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 Vorgängen, die für AWS IoT Geräte zulässig sind. Insbesondere erlauben und verweigern sie den Zugriff auf und Operationen auf AWS IoT Core der AWS IoT Greengrass Datenebene, wie 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 angehängten Richtlinie. AWS IoT Geräte fallen in zwei Kategorien:

  • Greengrass-Kerngeräte

    Greengrass-Core-Geräte verwenden Zertifikate und AWS IoT Richtlinien, um eine Verbindung zu AWS IoT Core und AWS IoT Greengrass herzustellen. Die Zertifikate und Richtlinien ermöglichen auch AWS IoT Greengrass die Bereitstellung von Komponenten und Konfigurationen auf Kerngeräten.

  • Client-Geräte

    MQTT-Client-Geräte verwenden Zertifikate und Richtlinien, um sich mit dem AWS IoT Greengrass Dienst zu AWS IoT Core verbinden. Auf diese Weise können Client-Geräte die AWS IoT Greengrass Cloud-Erkennung verwenden, um ein Greengrass-Core-Gerät zu finden und eine Verbindung zu diesem herzustellen. Ein Client-Gerät verwendet dasselbe Zertifikat, um eine Verbindung zum AWS IoT Core Cloud-Dienst und zu den Kerngeräten herzustellen. Client-Geräte verwenden außerdem Erkennungsinformationen für die gegenseitige Authentifizierung mit dem Kerngerät. Weitere Informationen finden Sie unter Interagieren Sie mit lokalen IoT-Geräten.

X.509-Zertifikate

Die Kommunikation zwischen Kerngeräten und Client-Geräten sowie zwischen Geräten AWS IoT Core und/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-Core-Gerä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 herstellen, um Kerngeräte zu erkennen.

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

AWS IoT Greengrass Kerngeräte speichern Zertifikate im Greengrass-Stammordner.

CA-Zertifikate

Greengrass-Core-Geräte und Client-Geräte laden ein Root-CA-Zertifikat herunter, das für die Authentifizierung bei den AWS IoT Core AWS IoT Greengrass AND-Diensten 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 CA-Zertifikat für Greengrass-Core-Geräte herunter. Sie verwenden dieses Zertifikat, um das MQTT-Serverzertifikat auf dem Kerngerät während der gegenseitigen Authentifizierung zu validieren.

Zertifikatsrotation auf dem lokalen MQTT-Broker

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

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

Das Greengrass-Core-Gerät rotiert das MQTT-Serverzertifikat 24 Stunden vor dessen 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 sich nach kurzer Zeit wieder mit dem Greengrass Core-Gerät verbinden.

AWS IoT Richtlinien für den Betrieb 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 ermöglicht den Betrieb von Greengrass-Geräten. Weitere Informationen finden Sie unter AWS IoT Greengrass V2 politische Aktionen. Zu diesen Vorgängen gehört die Fähigkeit, Komponentenabhängigkeiten aufzulösen und Artefakte öffentlicher Komponenten herunterzuladen.

Eine AWS IoT Richtlinie 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 zulässig oder verweigert ist.

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

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

Wichtig

Ding-Richtlinienvariablen (iot:Connection.Thing.*) werden in AWS IoT Richtlinien für Kerngeräte oder Greengrass-Datenebenenoperationen nicht unterstützt. Stattdessen können Sie einen Platzhalter verwenden, der für mehrere Geräte mit ähnlichen Namen steht. Sie können beispielsweise angeben, ob MyGreengrassDevice* ein Treffer gefunden werden soll MyGreengrassDevice1MyGreengrassDevice2, usw.

Anmerkung

AWS IoT Core ermöglicht es Ihnen, AWS IoT Dinggruppen Richtlinien zuzuweisen, um Berechtigungen für Gerätegruppen zu definieren. Dinggruppenrichtlinien ermöglichen keinen Zugriff auf AWS IoT Greengrass Datenebenenoperationen. Um einer Sache 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 der Sache hinzufügen.

AWS IoT Greengrass V2 politische Aktionen

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

Hauptaktionen auf dem Gerät
greengrass:GetComponentVersionArtifact

Erteilt die Erlaubnis, eine vorsignierte URL zum Herunterladen eines öffentlichen Komponentenartefakts oder eines Lambda-Komponentenartefakts abzurufen.

Diese Berechtigung wird ausgewertet, wenn ein Kerngerät eine Bereitstellung erhält, die eine öffentliche Komponente oder ein Lambda mit Artefakten spezifiziert. Wenn das Kerngerät bereits über das Artefakt verfügt, lädt es das Artefakt nicht erneut herunter.

Art der Ressource: componentVersion

ARN-Format der Ressource: arn:aws:greengrass:region:account-id:components:component-name:versions:component-version

greengrass:ResolveComponentCandidates

Erteilt die Berechtigung, eine Liste von Komponenten zu identifizieren, die die Komponenten-, Versions- und Plattformanforderungen für eine Bereitstellung erfüllen. Wenn die Anforderungen miteinander in Konflikt stehen 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 Kerngerät eine Bereitstellung erhält, die Komponenten spezifiziert.

Ressourcentyp: Keiner

ARN-Format der Ressource: *

greengrass:GetDeploymentConfiguration

Erteilt die Erlaubnis, eine vorsignierte URL zum Herunterladen eines umfangreichen Bereitstellungsdokuments abzurufen.

Diese Berechtigung wird ausgewertet, wenn ein Kerngerät eine Bereitstellung empfängt, die ein Bereitstellungsdokument mit einer Größe von mehr als 7 KB (wenn die Bereitstellung auf ein Objekt abzielt) oder 31 KB (wenn die Bereitstellung auf eine Dinggruppe abzielt) angibt. Das Bereitstellungsdokument umfasst Komponentenkonfigurationen, Bereitstellungsrichtlinien und Bereitstellungsmetadaten. Weitere Informationen finden Sie unter AWS IoT Greengrass Komponenten auf Geräten bereitstellen.

Diese Funktion ist für Version 2.3.0 und höher der Greengrass Nucleus-Komponente verfügbar.

Ressourcentyp: Keiner

ARN-Format der Ressource: *

greengrass:ListThingGroupsForCoreDevice

Erteilt die Berechtigung, die Dinggruppenhierarchie eines Kerngeräts abzurufen.

Diese Berechtigung wird überprüft, wenn ein Kerngerät eine Bereitstellung von erhält AWS IoT Greengrass. Das Kerngerät verwendet diese Aktion, um festzustellen, ob es seit der letzten Bereitstellung aus einer Dinggruppe entfernt wurde. Wenn das Kerngerät aus einer Dinggruppe entfernt wurde und diese Dinggruppe das Ziel einer Bereitstellung auf dem Kerngerät ist, entfernt das Kerngerät die durch diese Bereitstellung installierten Komponenten.

Diese Funktion wird von Version 2.5.0 und höher der Greengrass Nucleus-Komponente verwendet.

Ressourcentyp: thing (Kerngerät)

ARN-Format der Ressource: arn:aws:iot:region:account-id:thing/core-device-thing-name

greengrass:VerifyClientDeviceIdentity

Erteilt die Berechtigung zur Überprüfung der Identität eines Client-Geräts, das eine Verbindung zu einem Core-Gerät herstellt.

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

Ressourcentyp: Keiner

ARN-Format der Ressource: *

greengrass:VerifyClientDeviceIoTCertificateAssociation

Erteilt die Berechtigung, zu überprüfen, ob ein Client-Gerät mit einem AWS IoT Zertifikat verknüpft ist.

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

Anmerkung

Damit ein Core-Gerät diesen Vorgang nutzen kann, muss die Greengrass-Servicerolle mit Ihrer verknüpft sein AWS-Konto und die iot:DescribeCertificate entsprechende Genehmigung erteilt werden.

Ressourcentyp: thing (Client-Gerät)

ARN-Format der Ressource: arn:aws:iot:region:account-id:thing/client-device-thing-name

greengrass:PutCertificateAuthorities

Erteilt die Berechtigung zum Hochladen von Zertifikaten der Zertifizierungsstelle (CA), die Client-Geräte herunterladen können, um das Kerngerät zu verifizieren.

Diese Berechtigung wird ausgewertet, wenn ein Kerngerät die Authentifizierungskomponente für das Clientgerät installiert und ausführt. Diese Komponente erstellt eine lokale Zertifizierungsstelle und verwendet diesen Vorgang, um ihre CA-Zertifikate hochzuladen. Client-Geräte laden diese CA-Zertifikate herunter, wenn sie den Discover-Vorgang 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 Kerngerät herstellen, verwenden sie diese CA-Zertifikate, um die Identität des Kerngeräts zu überprüfen. Weitere Informationen finden Sie unter Interagieren Sie mit lokalen IoT-Geräten.

Ressourcentyp: Keiner

ARN-Format: *

greengrass:GetConnectivityInfo

Erteilt die Berechtigung zum Abrufen von Konnektivitätsinformationen für ein Kerngerät. Diese Informationen beschreiben, wie Client-Geräte eine Verbindung zum Kerngerät herstellen können.

Diese Berechtigung wird ausgewertet, wenn ein Kerngerät die Authentifizierungskomponente für das Clientgerät installiert und ausführt. Diese Komponente verwendet die Konnektivitätsinformationen, um gültige CA-Zertifikate zu generieren, die während des PutCertificateAuthoriesVorgangs in den AWS IoT Greengrass Cloud-Dienst hochgeladen werden. Client-Geräte verwenden diese CA-Zertifikate, um die Identität des Kerngeräts zu überprüfen. Weitere Informationen finden Sie unter Interagieren Sie mit lokalen IoT-Geräten.

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

Ressourcentyp: thing (Kerngerät)

ARN-Format der Ressource: arn:aws:iot:region:account-id:thing/core-device-thing-name

greengrass:UpdateConnectivityInfo

Erteilt die Erlaubnis, die Konnektivitätsinformationen für ein Kerngerät zu aktualisieren. Diese Informationen beschreiben, wie Client-Geräte eine Verbindung zum Kerngerät herstellen können.

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

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

Ressourcentyp: thing (Kerngerät)

ARN-Format der Ressource: arn:aws:iot:region:account-id:thing/core-device-thing-name

Aktionen auf Client-Geräten
greengrass:Discover

Erteilt die Berechtigung, Verbindungsinformationen für Kerngeräte zu ermitteln, mit denen ein Clientgerät eine Verbindung herstellen kann. Diese Informationen beschreiben, wie das Clientgerät eine Verbindung zu den Kerngeräten herstellen kann. Ein Clientgerät kann mithilfe des BatchAssociateClientDeviceWithCoreDeviceVorgangs nur die Kerngeräte erkennen, denen Sie es zugeordnet haben. Weitere Informationen finden Sie unter Interagieren Sie mit lokalen IoT-Geräten.

Ressourcentyp: thing (Client-Gerät)

ARN-Format der Ressource: arn:aws:iot:region:account-id:thing/client-device-thing-name

Aktualisieren Sie die AWS IoT Richtlinie eines Kerngeräts

Sie können die AWS IoT Greengrass und AWS IoT -Konsolen oder die AWS IoT API verwenden, um die AWS IoT Richtlinien eines Kerngeräts einzusehen und zu aktualisieren.

Anmerkung

Wenn Sie das AWS IoT Greengrass Core-Softwareinstallationsprogramm zur Bereitstellung von Ressourcen verwendet haben, verfügt Ihr Kerngerät über eine AWS IoT Richtlinie, die den Zugriff auf alle AWS IoT Greengrass Aktionen ermöglicht (greengrass:*). Sie können diese Schritte befolgen, um den Zugriff nur auf die Aktionen zu beschränken, die ein Kerngerä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 Seite mit den Details zum Kerngerät den Link zum Ding des Kerngeräts aus. Dieser Link öffnet die Seite mit den Ding-Details in der AWS IoT Konsole.

  4. Wählen Sie auf der Seite mit den Ding-Details die Option Zertifikate aus.

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

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

  7. Wählen Sie auf der Registerkarte Richtlinien die AWS IoT Richtlinie aus, die Sie überprüfen und aktualisieren möchten. Sie können jeder Richtlinie, die mit dem aktiven Zertifikat des Kerngeräts verknüpft ist, die erforderlichen Berechtigungen hinzufügen.

    Anmerkung

    Wenn Sie das AWS IoT Greengrass Core-Softwareinstallationsprogramm zur Bereitstellung von Ressourcen verwendet haben, gibt es zwei AWS IoT Richtlinien. Wir empfehlen, dass Sie die Richtlinie mit dem Namen wählen GreengrassV2IoTThingPolicy, falls sie existiert. Kerngeräte, die Sie mit dem Schnellinstallationsprogramm erstellen, verwenden standardmäßig diesen Richtliniennamen. Wenn Sie dieser Richtlinie Berechtigungen hinzufügen, gewähren Sie diese Berechtigungen auch anderen Kerngerä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 nach Bedarf Berechtigungen hinzu, entfernen oder bearbeiten Sie sie.

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

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

  1. Führe die Principals für die AWS IoT Sache des Kerngeräts auf. Bei den Ding-Prinzipalen kann es sich um X.509-Gerätezertifikate oder andere Identifikationen handeln. Führen Sie den folgenden Befehl aus und MyGreengrassCore ersetzen Sie ihn durch den Namen des Kerngeräts.

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

    Der Vorgang gibt eine Antwort zurück, in der die Ding-Prinzipale des Kerngeräts aufgeführt sind.

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

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

    Die Operation gibt den Status des Zertifikats als Zeichenfolge zurück. Wenn das Zertifikat beispielsweise aktiv ist, wird bei diesem Vorgang eine Ausgabe ausgegeben"ACTIVE".

  3. Listet die AWS IoT Richtlinien auf, die an das Zertifikat angehängt 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 an das Zertifikat angehängt 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 Richtlinie aus, die Sie anzeigen und aktualisieren möchten.

    Anmerkung

    Wenn Sie das AWS IoT Greengrass Core-Softwareinstallationsprogramm zur Bereitstellung von Ressourcen verwendet haben, gelten zwei AWS IoT Richtlinien. Wir empfehlen, dass Sie die Richtlinie mit dem Namen wählen GreengrassV2IoTThingPolicy, falls sie existiert. Kerngeräte, die Sie mit dem Schnellinstallationsprogramm erstellen, verwenden standardmäßig diesen Richtliniennamen. Wenn Sie dieser Richtlinie Berechtigungen hinzufügen, gewähren Sie diese Berechtigungen auch anderen Kerngeräten, die diese Richtlinie verwenden.

  5. Holen Sie sich das Dokument der Richtlinie. Führen Sie den folgenden Befehl aus und GreengrassV2IoTThingPolicy ersetzen Sie ihn durch den Namen der Richtlinie.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

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

    { "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 Zeichenfolge des Richtliniendokuments in ein JSON-Objekt zu konvertieren, und speichern Sie sie dann in einer Datei mit dem Nameniot-policy.json.

    Wenn Sie beispielsweise das jq-Tool 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 nach Bedarf Berechtigungen hinzu, entfernen oder bearbeiten Sie sie.

    Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU nano zu öffnen.

    nano iot-policy.json

    Wenn Sie fertig sind, ähnelt das Richtliniendokument möglicherweise der AWS IoT Minimalrichtlinie für Kerngeräte.

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

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

    Der Vorgang gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt, wenn er 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 V2 Kerngeräte

Wichtig

Spätere Versionen der Greengrass Nucleus-Komponente erfordern zusätzliche Berechtigungen für die AWS IoT Minimalrichtlinie. Möglicherweise müssen Sie die AWS IoT Richtlinien Ihrer Kerngeräte aktualisieren, um zusätzliche Berechtigungen zu gewähren.

  • Core-Geräte, auf denen Greengrass Nucleus v2.5.0 und höher ausgeführt wird, verwenden die greengrass:ListThingGroupsForCoreDevice Berechtigung, Komponenten zu deinstallieren, wenn Sie ein Kerngerät aus einer Dinggruppe entfernen.

  • Core-Geräte, auf denen Greengrass Nucleus v2.3.0 und höher ausgeführt wird, verwenden die greengrass:GetDeploymentConfiguration Berechtigung, umfangreiche 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 hinter dem Namen des Kerngeräts (z. B.). core-device-thing-name* Das Kerngerät verwendet dasselbe Gerätezertifikat, um mehrere gleichzeitige Abonnements abzuschließen AWS IoT Core, aber die Client-ID in einer Verbindung entspricht möglicherweise nicht exakt dem Namen des Kerngeräts. Nach den ersten 50 Abonnements verwendet core-device-thing-name#number das Kerngerät die Client-ID, wobei die Anzahl für alle weiteren 50 Abonnements number erhöht wird. Wenn ein Kerngerät mit dem Namen beispielsweise 150 gleichzeitige Abonnements MyCoreDevice erstellt, verwendet es den 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 Clients verwendet IDs , die über ein Suffix verfügen.

  • 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 Erlaubnis, Telemetriedaten zum folgenden Thema zu veröffentlichen.

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

    Sie können diese Berechtigung für Kerngeräte entfernen, auf denen Sie Telemetrie deaktivieren. Weitere Informationen finden Sie unter Erfassung von Telemetriedaten zur Systemintegrität von AWS IoT Greengrass Kerngeräten.

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

    Wenn Sie die AWS IoT Greengrass Core-Software installieren, erstellen und fügen Sie eine zweite AWS IoT Richtlinie hinzu, die nur diese Berechtigung beinhaltet. 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 umfasst die Mindestanzahl von Aktionen, die zur Unterstützung der Interaktion mit Client-Geräten auf einem Kerngerät erforderlich sind. Um Client-Geräte zu unterstützen, muss ein Core-Gerät zusätzlich zur AWS IoT Minimalrichtlinie für den Basisbetrieb über die in dieser AWS IoT Richtlinie festgelegten Berechtigungen verfügen.

  • Die Richtlinie ermöglicht es dem Kerngerät, seine eigenen Konnektivitätsinformationen zu aktualisieren. Diese Berechtigung (greengrass:UpdateConnectivityInfo) ist nur erforderlich, wenn Sie die IP-Detektorkomponente auf dem Kerngerä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 umfasst die Mindestanzahl an Aktionen, die ein Client-Gerät benötigt, um Kerngeräte zu erkennen, mit denen es sich über MQTT verbindet und kommuniziert. Die AWS IoT Richtlinie des Client-Geräts muss die greengrass:Discover Aktion beinhalten, die es dem Gerät ermöglicht, Verbindungsinformationen für die zugehörigen Greengrass-Core-Geräte zu ermitteln. Geben Sie in Resource diesem 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 die besten Sicherheitspraktiken einzuhalten, beschränken Sie die iot:Publish iot:Receive Berechtigungeniot:Subscribe, und auf die Mindestanzahl von Themen, die ein Client-Gerät für Ihren Anwendungsfall benötigt.

  • Die Richtlinie ermöglicht es dem Gerät, zentrale Geräte für alle AWS IoT Dinge zu erkennen. Um die besten Sicherheitsvorkehrungen zu befolgen, beschränken Sie die greengrass:Discover Zugriffsrechte auf das AWS IoT Ding des Client-Geräts oder auf einen Platzhalter, der einer Reihe von AWS IoT Dingen entspricht.

    Wichtig

    Ding-Richtlinienvariablen (iot:Connection.Thing.*) werden in AWS IoT Richtlinien für Kerngeräte oder Greengrass-Datenebenenoperationen nicht unterstützt. Stattdessen können Sie einen Platzhalter verwenden, der für mehrere Geräte mit ähnlichen Namen steht. Sie können beispielsweise angeben, ob MyGreengrassDevice* ein Treffer gefunden werden soll MyGreengrassDevice1MyGreengrassDevice2, usw.

  • Die AWS IoT Richtlinie eines Client-Geräts erfordert in der Regel keine Berechtigungen oder iot:DeleteThingShadow Aktionen iot:GetThingShadowiot:UpdateThingShadow, da das Greengrass-Core-Gerät Schattensynchronisierungsvorgänge für Client-Geräte abwickelt. Damit das Core-Gerät Shadows von Client-Geräten verarbeiten kann, überprüfen Sie, ob die AWS IoT Richtlinie des Core-Geräts diese Aktionen zulässt und ob der Resource Abschnitt auch die ARNs 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/*" ] } ] }