Überblick über die AWS IoT Greengrass Sicherheit - 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.

Überblick über die AWS IoT Greengrass Sicherheit

AWS IoT Greengrass verwendet X.509-Zertifikate, AWS IoT Richtlinien sowie IAM-Richtlinien und -Rollen, um die Anwendungen zu sichern, die auf Geräten in Ihrer lokalen Greengrass-Umgebung ausgeführt werden.

Das folgende Diagramm zeigt die Komponenten des AWS IoT Greengrass Sicherheitsmodells:

Diagramm der Greengrass-Servicearchitektur, das AWS Dienste, Greengrass-Kern und verbundene Geräte sowie deren Zertifikatsinteraktionen zeigt.
A – Rolle des Greengrass-Services

Eine vom Kunden erstellte IAM-Rolle, die AWS IoT Greengrass beim Zugriff auf Ihre AWS Ressourcen über AWS IoT Core AWS Lambda, und andere Dienste übernommen wird. AWS Weitere Informationen finden Sie unter Greengrass-Servicerolle.

B – Core-Gerätezertifikat

Ein X.509-Zertifikat, das zur Authentifizierung eines Greengrass-Kerns mit und verwendet wird. AWS IoT Core AWS IoT Greengrass Weitere Informationen finden Sie unter Geräteauthentifizierung und -autorisierung für AWS IoT Greengrass.

C – Gerätezertifikat

Ein X.509-Zertifikat zur Authentifizierung eines Client-Geräts, das auch als verbundenes Gerät bezeichnet wird, mit und. AWS IoT Core AWS IoT Greengrass Weitere Informationen finden Sie unter Geräteauthentifizierung und -autorisierung für AWS IoT Greengrass.

D – Gruppenrolle

Eine vom Kunden erstellte IAM-Rolle, die AWS IoT Greengrass beim Aufrufen von AWS Diensten von einem Greengrass-Core übernommen wird.

Sie verwenden diese Rolle, um Zugriffsberechtigungen anzugeben, die Ihre benutzerdefinierten Lambda-Funktionen und -Konnektoren für den Zugriff auf AWS Dienste wie DynamoDB benötigen. Sie verwenden sie auch, um Stream-Manager-Streams in AWS Dienste AWS IoT Greengrass zu exportieren und in Logs zu schreiben. CloudWatch Weitere Informationen finden Sie unter Greengrass-Gruppenrolle..

Anmerkung

AWS IoT Greengrass verwendet nicht die Lambda-Ausführungsrolle, die AWS Lambda für die Cloud-Version einer Lambda-Funktion angegeben ist.

E - MQTT-Serverzertifikat

Das Zertifikat, das für die gegenseitige Authentifizierung mit Transport Layer Security (TLS) zwischen einem Greengrass-Core-Gerät und Client-Geräten in der Greengrass-Gruppe verwendet wird. Das Zertifikat ist durch das Gruppen-CA-Zertifikat signiert, das in der gespeichert ist. AWS Cloud

Geräteverbindung – Workflow

In diesem Abschnitt wird beschrieben, wie Client-Geräte eine Verbindung zum AWS IoT Greengrass Service und zu Greengrass-Core-Geräten herstellen. Client-Geräte sind registrierte AWS IoT Core Geräte, die sich in derselben Greengrass-Gruppe wie das Kerngerät befinden.

  • Ein Greengrass-Core-Gerät verwendet sein Gerätezertifikat, seinen privaten Schlüssel und das AWS IoT Core Root-CA-Zertifikat, um eine Verbindung zum AWS IoT Greengrass Dienst herzustellen. Auf dem Core-Gerät gibt das crypto-Objekt in der Konfigurationsdatei den Dateipfad für diese Elemente an.

  • Das Greengrass-Kerngerät lädt die Informationen zu Gruppenmitgliedschaften vom AWS IoT Greengrass -Service herunter.

  • Wenn eine Bereitstellung auf dem Greengrass-Kerngerät erfolgt, übernimmt der Device Certificate Manager (DCM) die lokale Serverzertifikatverwaltung für das Greengrass-Kerngerät.

  • Ein Client-Gerät stellt mithilfe seines Gerätezertifikats, seines privaten Schlüssels und des AWS IoT Core Root-CA-Zertifikats eine Verbindung zum AWS IoT Greengrass Dienst her. Nach dem Herstellen der Verbindung verwendet das Client-Gerät den Greengrass Discovery Service, um die IP-Adresse seines Greengrass-Core-Geräts zu ermitteln. Das Client-Gerät lädt auch das Gruppen-CA-Zertifikat herunter, das für die gegenseitige TLS-Authentifizierung mit dem Greengrass-Core-Gerät verwendet wird.

  • Ein Client-Gerät versucht, eine Verbindung zum Greengrass-Core-Gerät herzustellen, wobei es sein Gerätezertifikat und seine Client-ID weitergibt. Wenn die Client-ID mit dem Ding-Namen des Client-Geräts übereinstimmt und das Zertifikat gültig ist (Teil der Greengrass-Gruppe), wird die Verbindung hergestellt. Falls nicht, wird die Verbindungsanfrage beendet.

Die AWS IoT Richtlinie für Client-Geräte muss die greengrass:Discover Erlaubnis gewähren, dass Client-Geräte Konnektivitätsinformationen für den Core ermitteln können. Weitere Informationen zur Richtlinienanweisung finden Sie unter Berechtigung zum Discovery.

AWS IoT Greengrass Sicherheit konfigurieren

So konfigurieren Sie die Sicherheit Ihrer Greengrass-Anwendung:
  1. Kreieren Sie AWS IoT Core etwas für Ihr Greengrass-Core-Gerät.

  2. Generieren Sie ein Schlüsselpaar und ein Geräte-Zertifikat für Ihr Greengrass-Kerngerät.

  3. Erstellen Sie eine AWS IoT -Richtlinie und fügen Sie sie an das Gerätezertifikat an. Das Zertifikat und die Richtlinie ermöglichen dem Greengrass-Core-Gerät den Zugriff auf AWS IoT Core und die AWS IoT Greengrass Dienste. Weitere Informationen finden Sie unter Minimale AWS IoT-Richtlinie für das Core-Gerät.

    Anmerkung

    Die Verwendung von Ding-Richtlinienvariablen (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 herzustellen, AWS IoT Core aber die Client-ID in einer Verbindung entspricht möglicherweise nicht exakt dem Namen des Kern-Dings.

  4. Erstellen Sie eine Greengrass-Servicerolle. Diese IAM-Rolle autorisiert den AWS IoT Greengrass Zugriff auf Ressourcen von anderen AWS Diensten in Ihrem Namen. Auf diese Weise können AWS IoT Greengrass wichtige Aufgaben ausgeführt werden, z. B. das Abrufen von AWS Lambda Funktionen und das Verwalten von Geräteschatten.

    Sie können dieselbe Servicerolle für alle AWS-Region s verwenden, sie muss jedoch an jedem AWS-Region Ort, an dem Sie sie verwenden AWS IoT Greengrass, mit Ihrer AWS-Konto verknüpft sein.

  5. (Optional) Erstellen Sie eine Greengrass-Gruppenrolle. Diese IAM-Rolle gewährt Lambda-Funktionen und -Konnektoren, die auf einem Greengrass-Kern ausgeführt werden, die Erlaubnis, Dienste aufzurufen. AWS Beispielsweise benötigt der Kinesis Firehose-Connector die Erlaubnis, Datensätze in einen Amazon Data Firehose-Lieferstream zu schreiben.

    Sie können nur eine Rolle an eine Greengrass-Gruppe anfügen.

  6. Erstellen Sie für jedes Gerät, das mit Ihrem Greengrass-Core verbunden ist, ein AWS IoT Core Ding.

    Anmerkung

    Sie können auch vorhandene AWS IoT Core Dinge und Zertifikate verwenden.

  7. Erstellen Sie Gerätezertifikate, Schlüsselpaare und AWS IoT Richtlinien für jedes Gerät, das eine Verbindung zu Ihrem Greengrass Core herstellt.

AWS IoT Greengrass zentrale Sicherheitsprinzipale

Der Greengrass-Kern verwendet die folgenden Sicherheitsprinzipale: AWS IoT Client, lokaler MQTT-Server und Local Secrets Manager. Die Konfiguration für diese Prinzipale ist im crypto-Objekt in der Konfigurationsdatei config.json gespeichert. Weitere Informationen finden Sie unter AWS IoT Greengrass Core-Konfigurationsdatei.

Diese Konfiguration beinhaltet den Pfad zum privaten Schlüssel, der von der Prinzipal-Komponente für die Authentifizierung und Verschlüsselung verwendet wird. AWS IoT Greengrass unterstützt zwei Modi der Speicherung privater Schlüssel: hardwarebasiert oder dateisystembasiert (Standard). Weitere Informationen zum Speichern von Schlüsseln auf Hardware-Sicherheitsmodulen finden Sie unter Integration von Hardware-Sicherheit.

AWS IoT Client

Der AWS IoT Client (IoT-Client) verwaltet die Kommunikation über das Internet zwischen dem Greengrass-Core und AWS IoT Core. AWS IoT Greengrass verwendet X.509-Zertifikate mit öffentlichen und privaten Schlüsseln für die gegenseitige Authentifizierung beim Aufbau von TLS-Verbindungen für diese Kommunikation. Weitere Informationen finden Sie unter X.509-Zertifikate und AWS IoT Core im AWS IoT Core -Entwicklerhandbuch.

Der IoT-Client unterstützt RSA- und EC-Zertifikate und -Schlüssel. Der Pfad zu Zertifikaten und privatem Schlüssel sind für den IoTCertificate-Prinzipal in config.json angegeben.

MQTT-Server

Der lokale MQTT-Server verwaltet die Kommunikation über das lokale Netzwerk zwischen dem Greengrass-Core und den Client-Geräten in der Gruppe. AWS IoT Greengrass verwendet X.509-Zertifikate mit öffentlichen und privaten Schlüsseln für die gegenseitige Authentifizierung beim Aufbau von TLS-Verbindungen für diese Kommunikation.

AWS IoT Greengrass Generiert standardmäßig einen privaten RSA-Schlüssel für Sie. Um den Core so zu konfigurieren, dass er einen anderen privaten Schlüssel verwendet, müssen Sie den Schlüsselpfad für den MQTTServerCertificate-Prinzipal in config.json angeben. Sie sind dafür verantwortlich, einen vom Kunden bereitgestellten Schlüssel zu rotieren.

Support für privaten Schlüssel
RSA-Schlüssel EC-Schlüssel
Schlüsseltyp Unterstützt Unterstützt
Hauptparameter Mindestlänge von 2048 Bit NIST P-256- oder NIST P-384-Kurve
Datenträgerformat PKCS#1, PKCS#8 SECG1, PKCS#8
GGC-Mindestversion
  • Verwenden Sie Standard-RSA-Schlüssel: 1.0

  • Geben Sie einen RSA-Schlüssel an: 1.7

  • Geben Sie einen EC-Schlüssel an: 1.9

Die Konfiguration des privaten Schlüssels bestimmt die zugehörigen Prozesse. Eine Liste der Verschlüsselungs-Suites, die der Greengrass-Core als Server unterstützt, finden Sie unter Support für TLS-Verschlüsselungs-Suites.

Wenn kein privater Schlüssel angegeben ist (Standard)
  • AWS IoT Greengrass rotiert den Schlüssel basierend auf Ihren Rotationseinstellungen.

  • Der Core generiert einen RSA-Schlüssel, der verwendet wird, um das Zertifikat zu generieren.

  • Das MQTT-Serverzertifikat verfügt über einen öffentlichen RSA-Schlüssel und eine SHA-256-RSA-Signatur.

Wenn ein privater RSA-Schlüssel angegeben ist (erfordert GGC v1.7 oder höher)
  • Sie sind für das Rotieren des Schlüssels verantwortlich.

  • Der Core verwendet den angegebenen Schlüssel, um das Zertifikat zu generieren.

  • Der RSA-Schlüssel muss eine Mindestlänge von 2048 Bits haben.

  • Das MQTT-Serverzertifikat verfügt über einen öffentlichen RSA-Schlüssel und eine SHA-256-RSA-Signatur.

Wenn ein privater EC-Schlüssel angegeben ist (erfordert GGC v1.9 oder höher)
  • Sie sind für das Rotieren des Schlüssels verantwortlich.

  • Der Core verwendet den angegebenen Schlüssel, um das Zertifikat zu generieren.

  • Der private EC-Schlüssel muss eine NIST P-256- oder NIST P-384-Kurve verwenden.

  • Das MQTT-Serverzertifikat verfügt über einen öffentlichen EC-Schlüssel und eine SHA-256-RSA-Signatur.

    Das vom Core präsentierte MQTT-Serverzertifikat verfügt über eine SHA-256-RSA-Signatur, unabhängig vom Schlüsseltyp. Aus diesem Grund müssen Clients die Validierung von SHA-256-RSA-Zertifikaten unterstützen, um eine sichere Verbindung mit dem Core herzustellen.

Secrets Manager

Der Local Secrets Manager verwaltet auf sichere Weise lokale Kopien von Geheimnissen, die Sie in erstellen. AWS Secrets Manager Er verwendet einen privaten Schlüssel, um den Datenschlüssel zu sichern, der zum Verschlüsseln der Secrets verwendet wird. Weitere Informationen finden Sie unter Bereitstellen von Secrets für den AWS IoT Greengrass Core.

Standardmäßig wird der private Schlüssel des IoT-Clients verwendet, aber Sie können einen anderen privaten Schlüssel für den SecretsManager-Prinzipal in config.json angeben. Nur der RSA-Schlüsseltyp wird unterstützt. Weitere Informationen finden Sie unter Angeben des privaten Schlüssels für die Verschlüsselung von Secrets.

Anmerkung

AWS IoT Greengrass Unterstützt derzeit nur den PKCS #1 v1.5-Padding-Mechanismus für die Verschlüsselung und Entschlüsselung von lokalen Geheimnissen, wenn hardwarebasierte private Schlüssel verwendet werden. Wenn Sie die vom Hersteller bereitgestellten Anweisungen zur manuellen Generierung hardwarebasierter privater Schlüssel befolgen, stellen Sie sicher, dass Sie PKCS #1 v1.5 wählen. AWS IoT Greengrass unterstützt Optimal Asymmetric Encryption Padding (OAEP) nicht.

Support für privaten Schlüssel
RSA-Schlüssel EC-Schlüssel
Schlüsseltyp Unterstützt Nicht unterstützt
Hauptparameter Mindestlänge von 2048 Bit Nicht zutreffend
Datenträgerformat PKCS#1, PKCS#8 Nicht zutreffend
Minimale GGC-Version 1,7 Nicht zutreffend

Verwaltete Abonnements im MQTT Messaging-Workflow

AWS IoT Greengrass verwendet eine Abonnementtabelle, um zu definieren, wie MQTT-Nachrichten zwischen Client-Geräten, Funktionen und Konnektoren in einer Greengrass-Gruppe und mit AWS IoT Core oder dem lokalen Shadow-Service ausgetauscht werden können. Jedes Abonnement spezifiziert eine Quelle, ein Ziel und ein MQTT-Thema (oder einen Betreff), über das Nachrichten gesendet oder empfangen werden. AWS IoT Greengrass erlaubt das Senden von Nachrichten von einer Quelle an ein Ziel nur, wenn ein entsprechendes Abonnement definiert ist.

Ein Abonnement definiert den Nachrichtenflusses nur in eine Richtung, von der Quelle zum Ziel. Um den bidirektionalen Nachrichtenaustausch zu unterstützen, müssen Sie zwei Abonnements anlegen, eines für jede Richtung.

Support für TLS-Verschlüsselungs-Suites

AWS IoT Greengrass verwendet das AWS IoT Core Transportsicherheitsmodell, um die Kommunikation mit der Cloud mithilfe von TLS-Verschlüsselungssammlungen zu verschlüsseln. Darüber hinaus werden AWS IoT Greengrass Daten im Ruhezustand (in der Cloud) verschlüsselt. Weitere Informationen zur AWS IoT Core Transportsicherheit und den unterstützten Cipher Suites finden Sie unter Transport Security im AWS IoT Core Developer Guide.

Unterstützte Verschlüsselungs-Suites für lokale Netzwerkkommunikation

Im Gegensatz dazu AWS IoT Core unterstützt der AWS IoT Greengrass Core die folgenden TLS-Verschlüsselungssammlungen für lokale Netzwerke für Algorithmen zur Zertifikatssignierung. Alle diese Verschlüsselungs-Suites werden unterstützt, wenn private Schlüssel im Dateisystem gespeichert werden. Eine Teilmenge wird unterstützt, wenn der Core so konfiguriert ist, dass Hardware-Sicherheitsmodule (HSM) verwendet werden. Weitere Informationen finden Sie unter AWS IoT Greengrass zentrale Sicherheitsprinzipale und Integration von Hardware-Sicherheit. Die Tabelle enthält auch die Mindestversion der AWS IoT Greengrass Core-Software, die für die Unterstützung erforderlich ist.

Verschlüsselungsverfahren HSM-Support GGC-Mindestversion
TLSv1.2 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Unterstützt 1,0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Unterstützt 1,0
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 Unterstützt 1,0
TLS_RSA_WITH_AES_128_CBC_SHA Nicht unterstützt 1,0
TLS_RSA_WITH_AES_128_GCM_SHA256 Nicht unterstützt 1,0
TLS_RSA_WITH_AES_256_CBC_SHA Nicht unterstützt 1,0
TLS_RSA_WITH_AES_256_GCM_SHA384 Nicht unterstützt 1,0
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 Unterstützt 1.9
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 Unterstützt 1.9
TLSv1.1 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Unterstützt 1,0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Unterstützt 1,0
TLS_RSA_WITH_AES_128_CBC_SHA Nicht unterstützt 1,0
TLS_RSA_WITH_AES_256_CBC_SHA Nicht unterstützt 1,0
TLSv1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Unterstützt 1,0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Unterstützt 1,0
TLS_RSA_WITH_AES_128_CBC_SHA Nicht unterstützt 1,0
TLS_RSA_WITH_AES_256_CBC_SHA Nicht unterstützt 1,0