Bereitstellen von Secrets für den AWS IoT Greengrass Core - AWS IoT Greengrass

AWS IoT Greengrass Version 1 hat am 30. Juni 2023 in die Phase der verlängerten Lebensdauer aufgenommen. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie . Nach diesem Datum AWS IoT Greengrass V1 wurden keine Updates veröffentlicht, die Funktionen, Verbesserungen, Fehlerbehebungen oder Sicherheitspatches bereitstellen. Geräte, die auf ausgeführt AWS IoT Greengrass V1 werden, werden nicht unterbrochen und werden weiterhin betrieben und eine Verbindung zur Cloud herstellen. Wir empfehlen dringend, zu zu migrieren AWS IoT Greengrass Version 2, was erhebliche neue Funktionen und Unterstützung für zusätzliche Plattformen hinzufügt.

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.

Bereitstellen von Secrets für den AWS IoT Greengrass Core

Diese Funktion ist verfügbar fürAWS IoT GreengrassCore v1.7 und höher.

AWS IoT Greengrass ermöglicht Ihnen die Authentifizierung bei Services und Anwendungen aus Greengrass-Geräten, ohne Passwörter, Token oder andere Secrets fest kodieren zu müssen.

AWS Secrets Managerist ein Service, mit dem Sie Ihre Secrets sicher in der Cloud speichern und verwalten können.AWS IoT Greengrasserweitert Secrets Manager auf Greengrass-Kerngeräte, alsoSteckverbinderund Lambda-Funktionen können lokale Secrets für die Interaktion mit Services und Anwendungen verwenden. Beispielsweise verwendet der Twilio Notifications-Konnektor ein lokal gespeichertes Authentifizierungstoken.

Um ein Secret in eine Greengrass-Gruppe zu integrieren, erstellen Sie eine Gruppen-Ressource, die auf das Secrets Manager-Secret verweist. Diese geheime Ressource verweist über ARN auf das Cloud-Secret. Weitere Informationen zum Erstellen, Verwalten und Verwenden von Secret-Ressourcen finden Sie unter Arbeiten mit geheimen Ressourcen.

AWS IoT Greengrass verschlüsselt Ihre Secrets während der Übertragung und im Ruhezustand. Während der GruppenbereitstellungAWS IoT Greengrassruft das Secret vom Secrets Manager ab und erstellt auf dem Greengrass-Core eine lokale verschlüsselte Kopie. Nachdem Sie Ihre Cloud-Secrets in Secrets Manager rotiert haben, stellen Sie die Gruppe erneut bereit, um die aktualisierten Werte an den Kern zu übertragen.

Das folgende Diagramm zeigt den High-Level-Prozess der Bereitstellung eines Secrets im Kern. Secrets werden während der Übertragung und im Ruhezustand verschlüsselt.


            AWS IoT Greengrassholt ein Geheimnis ausAWS Secrets Managerund stellt es als geheime Ressource für das Core-Gerät zur Verfügung, wo es für Konnektoren und Lambda-Funktionen verfügbar ist.

Die Verwendung von AWS IoT Greengrass zur lokalen Speicherung Ihrer Secrets bietet die folgenden Vorteile:

  • Entkoppelung vom Code (nicht fest programmiert). Dies unterstützt zentral verwaltete Anmeldeinformationen und schützt sensible Daten vor dem Risiko der Kompromittierung.

  • Verfügbar für Offline-Szenarien. Konnektoren und Funktionen können bei fehlender Verbindung zum Internet sicher auf lokale Services und Software zugreifen.

  • Kontrollierter Zugriff auf Secrets. Nur autorisierte Konnektoren und Funktionen in der Gruppe können auf Ihre Secrets zugreifen. AWS IoT Greengrass verwendet Verschlüsselung für private Schlüssel, um Ihre Secrets zu schützen. Secrets werden während der Übertragung und im Ruhezustand verschlüsselt. Weitere Informationen finden Sie unter Secrets-Verschlüsselung.

  • Kontrollierte Rotation. Nachdem Sie Ihre Secrets in Secrets Manager rotiert haben, stellen Sie die Greengrass-Gruppe erneut bereit, um die lokalen Kopien Ihrer Secrets zu aktualisieren. Weitere Informationen finden Sie unter Erstellen und Verwalten von Secrets.

    Wichtig

    AWS IoT Greengrass aktualisiert die Werte lokaler Secrets nicht automatisch, nachdem Cloud-Versionen rotiert wurden. Um lokale Werte zu aktualisieren, müssen Sie die Gruppe erneut bereitstellen.

Secrets-Verschlüsselung

AWS IoT Greengrass verschlüsselt Geheimnisse während der Übertragung und im Ruhezustand.

Wichtig

Stellen Sie sicher, dass Ihre benutzerdefinierten Lambda-Funktionen Geheimnisse sicher behandeln und keine sensiblen Daten protokollieren, die im Geheimnis gespeichert sind. Weitere Informationen finden Sie unterVerhindern von Risiken durch die Protokollierung oder das Debuggen Ihrer Lambda-FunktionimAWS Secrets Manager-Benutzerhandbuchaus. Obwohl sich diese Dokumentation speziell auf Rotationsfunktionen bezieht, gilt die Empfehlung auch für Greengrass Lambda-Funktionen.

Verschlüsselung während der Übertragung

AWS IoT Greengrass verwendet die Transport Layer Security (TLS) zur Verschlüsselung der gesamten Kommunikation über das Internet und das lokale Netzwerk. Dies schützt Secrets während der Übertragung, was der Fall ist, wenn Secrets vom Secrets Manager abgerufen und im Core bereitgestellt werden. Unterstützte TLS-Cipher-Suites finden Sie unter Support für TLS-Verschlüsselungs-Suites.

Verschlüsselung im Ruhezustand

AWS IoT Greengrass verwendet den in config.json angegebenen privaten Schlüssel zur Verschlüsselung der Secrets, die auf dem Core gespeichert sind. Aus diesem Grund ist die sichere Speicherung des privaten Schlüssels für den Schutz lokaler Secrets entscheidend. Im AWS Modell der übergreifenden Verantwortlichkeit liegt es in der Verantwortung des Kunden, die sichere Speicherung des privaten Schlüssels auf dem Core-Gerät zu gewährleisten.

AWS IoT Greengrass unterstützt zwei Arten der Speicherung privater Schlüssel:

  • Die Verwendung von Hardware-Sicherheitsmodulen. Weitere Informationen finden Sie unter Integration von Hardware-Sicherheit.

    Anmerkung

    Derzeit istAWS IoT Greengrassunterstützt nur diePKCS #1 v1.5Auffüllmechanismus zur Verschlüsselung und Entschlüsselung lokaler Geheimnisse bei Verwendung hardwarebasierter privater Schlüssel. Wenn Sie die vom Hersteller bereitgestellten Anweisungen zum manuellen Generieren hardwarebasierter privater Schlüssel befolgen, wählen Sie unbedingt PKCS #1 v1.5.AWS IoT Greengrassunterstützt nicht Optimal Asymmetric Encryption Padding (OAEP).

  • Die Verwendung von Dateisystemberechtigungen (Standard).

Der private Schlüssel wird zur Sicherung des Datenschlüssels verwendet, mit dem lokale Secrets verschlüsselt werden. Der Datenschlüssel wird bei jedem Gruppeneinsatz rotiert.

DieAWS IoT Greengrasscore ist die einzige Entität, die Zugriff auf den privaten Schlüssel hat. Greengrass-Konnektoren oder Lambda-Funktionen, die einer Secret-Ressource zugeordnet sind, erhalten den Wert des Secrets vom Kern.

Voraussetzungen

Dies sind die Anforderungen für den lokalen Secret-Support:

  • Sie müssen die verwendenAWS IoT GreengrassCore v1.7 oder höher.

  • Um die Werte lokaler Geheimnisse zu erhalten, müssen Ihre benutzerdefinierten Lambda-Funktionen verwendenAWS IoT GreengrassCore-SDK v1.3.0 oder höher.

  • Der private Schlüssel, der für die Verschlüsselung lokaler Secrets verwendet wird, muss in der Greengrass-Konfigurationsdatei angegeben sein. Standardmäßig verwendet AWS IoT Greengrass den privaten Kernschlüssel, der im Dateisystem gespeichert ist. Informationen zur Bereitstellung Ihres eigenen privaten Schlüssels finden Sie unter Angeben des privaten Schlüssels für die Verschlüsselung von Secrets. Nur der RSA-Schlüsseltyp wird unterstützt.

    Anmerkung

    Derzeit istAWS IoT Greengrassunterstützt nur diePKCS #1 v1.5Auffüllmechanismus zur Verschlüsselung und Entschlüsselung lokaler Geheimnisse bei Verwendung hardwarebasierter privater Schlüssel. Wenn Sie die vom Hersteller bereitgestellten Anweisungen zum manuellen Generieren hardwarebasierter privater Schlüssel befolgen, wählen Sie unbedingt PKCS #1 v1.5.AWS IoT Greengrassunterstützt nicht Optimal Asymmetric Encryption Padding (OAEP).

  • AWS IoT Greengrass muss die Berechtigung erteilt werden, um Ihre geheimen Werte empfangen zu können. Dies ermöglicht es AWS IoT Greengrass, die Werte während der Bereitstellung der Gruppe abzurufen. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, hat AWS IoT Greengrass bereits Zugriff auf Secrets mit Namen, die mit greengrass- beginnen. Informationen zum Anpassen des Zugriffs finden Sie unter Gewähren des Zugriffs auf Secret-Werte für AWS IoT Greengrass.

    Anmerkung

    Wir empfehlen Ihnen, diese Namenskonvention zu verwenden, um die Secrets zu identifizieren, auf die AWS IoT Greengrass zugreifen darf, auch wenn Sie die Berechtigungen anpassen. Die Konsole verwendet verschiedene Berechtigungen, um Ihre Secrets zu lesen. Dadurch können Sie in der Konsole Secrets auswählen, für die AWS IoT Greengrass keine Berechtigung zum Abrufen besitzt. Die Verwendung einer Namenskonvention kann dazu beitragen, einen Berechtigungskonflikt zu vermeiden, der zu einem Bereitstellungsfehler führt.

Angeben des privaten Schlüssels für die Verschlüsselung von Secrets

In diesem Verfahren geben Sie den Pfad zu einem privaten Schlüssel an, der für die lokale geheime Verschlüsselung verwendet wird. Dabei muss es sich um einen RSA-Schlüssel mit einer Mindestlänge von 2048 Bits handeln. Weitere Informationen zu privaten Schlüsseln, die auf derAWS IoT GreengrassCore, sieheAWS IoT Greengrass Kernsicherheitsprinzipaleaus.

AWS IoT Greengrass unterstützt zwei Arten der Speicherung privater Schlüssel: hardwarebasiert oder dateisystembasiert (Standard). Weitere Informationen finden Sie unter Secrets-Verschlüsselung.

Führen Sie diese Vorgehensweise nur dann aus, wenn Sie die Standardkonfiguration ändern möchten, die den privaten Core-Schlüssel im Dateisystem verwendet. Diese Schritte gelten unter der Annahme, dass Sie Ihre Gruppe und Ihren Kern wie in Modul 2 des Tutorials Erste Schritte beschrieben erstellt haben.

  1. Öffnen Sie die Datei config.json, die sich im Verzeichnis /greengrass-root/config befindet.

    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.

  2. Geben Sie im Objekt crypto.principals.SecretsManager für die Eigenschaft privateKeyPath den Pfad des privaten Schlüssels ein:

    • Wenn Ihr privater Schlüssel im Dateisystem gespeichert ist, geben Sie den absoluten Pfad zum Schlüssel an. Zum Beispiel:

      "SecretsManager" : { "privateKeyPath" : "file:///somepath/hash.private.key" }
    • Wenn Ihr privater Schlüssel in einem Hardware-Sicherheitsmodul (HSM) gespeichert ist, geben Sie den Pfad mithilfe des URI-Schemas RFC 7512 PKCS#11 an. Zum Beispiel:

      "SecretsManager" : { "privateKeyPath" : "pkcs11:object=private-key-label;type=private" }

      Weitere Informationen finden Sie unter Hardware-Sicherheitskonfiguration für einen AWS IoT Greengrass Core.

      Anmerkung

      Derzeit istAWS IoT Greengrassunterstützt nur diePKCS #1 v1.5Auffüllmechanismus zur Verschlüsselung und Entschlüsselung lokaler Geheimnisse bei Verwendung hardwarebasierter privater Schlüssel. Wenn Sie die vom Hersteller bereitgestellten Anweisungen zum manuellen Generieren hardwarebasierter privater Schlüssel befolgen, wählen Sie unbedingt PKCS #1 v1.5.AWS IoT Greengrassunterstützt nicht Optimal Asymmetric Encryption Padding (OAEP).

Gewähren des Zugriffs auf Secret-Werte für AWS IoT Greengrass

In diesem Verfahren fügen Sie der Greengrass-Servicerolle eine Inline-Richtlinie hinzu, die es AWS IoT Greengrass ermöglicht, die Werte Ihrer Secrets zu erhalten.

Befolgen Sie dieses Verfahren nur, wenn Sie AWS IoT Greengrass benutzerdefinierte Berechtigungen für Ihre Secrets erteilen möchten oder wenn Ihre Greengrass-Servicerolle nicht die mit AWSGreengrassResourceAccessRolePolicy verwaltete Richtlinie enthält. AWSGreengrassResourceAccessRolePolicy gewährt Zugriff auf Secrets mit Namen, die mit greengrass- beginnen.

  1. Führen Sie den folgenden CLI-Befehl aus, um den ARN der Greengrass-Servicerolle zu erhalten:

    aws greengrass get-service-role-for-account --region region

    Der zurückgegebene ARN enthält den Rollennamen.

    { "AssociatedAt": "time-stamp", "RoleArn": "arn:aws:iam::account-id:role/service-role/role-name" }

    Sie verwenden im folgenden Schritt den ARN oder den Namen.

  2. Fügen Sie eine Inline-Richtlinie hinzu, die die Aktion secretsmanager:GetSecretValue erlaubt. Detaillierte Anweisungen finden Sie unterHinzufügen und Entfernen von IAM-RichtlinienimIAM User Guideaus.

    Sie können granularen Zugriff gewähren, indem Sie Secrets explizit auflisten oder ein Wildcard * Namensschema verwenden, oder Sie können bedingten Zugriff auf versionierte oder markierte Secrets gewähren. Die folgende Richtlinie erlaubt es beispielsweise AWS IoT Greengrass nur die angegebenen Secrets zu lesen.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:account-id:secret:greengrass-SecretA-abc", "arn:aws:secretsmanager:region:account-id:secret:greengrass-SecretB-xyz" ] } ] }
    Anmerkung

    Wenn Sie einen vom Kunden verwalteten AWS KMS-Schlüssel zur Verschlüsselung von Secrets verwenden, muss Ihre Greengrass-Servicerolle auch die Aktion kms:Decrypt erlauben.

Weitere Informationen zu IAM-Richtlinien für Secrets Manager finden Sie unterAuthentifizierung und Zugriffskontrolle fürAWS Secrets ManagerundAktionen, Ressourcen und Kontextschlüssel, die Sie in einer IAM-Richtlinie oder Secret-Richtlinie für verwenden könnenAWS Secrets ManagerimAWS Secrets Manager-Benutzerhandbuchaus.

Weitere Informationen finden Sie auch unter