Comment créer une ressource de secret (console) - AWS IoT Greengrass

AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Comment créer une ressource de secret (console)

Cette fonctionnalité est disponible pour AWS IoT Greengrass Core v1.7 et versions ultérieures.

Ce didacticiel montre comment utiliser la AWS Management Console pour ajouter une ressource de secret à un groupe Greengrass. Une ressource de secret est une référence à un secret de AWS Secrets Manager. Pour plus d'informations, veuillez consulter Déployer des secrets sur AWS IoT Greengrass Core.

Sur le périphérique AWS IoT Greengrass principal, les connecteurs et les fonctions Lambda peuvent utiliser la ressource secrète pour s'authentifier auprès des services et des applications, sans avoir à coder en dur des mots de passe, des jetons ou d'autres informations d'identification.

Dans ce didacticiel, vous commencez par créer une information secrète dans la console AWS Secrets Manager. Ensuite, dans la AWS IoT Greengrass console, vous ajoutez une ressource secrète à un groupe Greengrass depuis la page Ressources du groupe. Cette ressource secrète fait référence au secret du Secrets Manager. Plus tard, vous associez la ressource secrète à une fonction Lambda, ce qui permet à la fonction d'obtenir la valeur du secret local.

Note

La console vous permet également de créer une ressource secrète et secrète lorsque vous configurez un connecteur ou une fonction Lambda. Vous pouvez le faire depuis la page Configurer les paramètres du connecteur ou depuis la page Ressources de la fonction Lambda.

Seuls les connecteurs qui contiennent les paramètres des secrets peuvent accéder aux secrets. Pour un didacticiel qui montre comment le connecteur Twilio Notifications utilise un jeton d'authentification stocké localement, voirMise en route avec les connecteurs Greengrass (console).

Le didacticiel contient les étapes détaillées suivantes :

Le didacticiel devrait prendre environ 20 minutes.

Prérequis

Pour suivre ce didacticiel, vous devez disposer des éléments suivants :

  • Un groupe Greengrass et un noyau Greengrass (v1.7 ou version ultérieure). Pour savoir comment créer un groupe et un service principal Greengrass, consultez Commencer avec AWS IoT Greengrass. Le didacticiel Mise en route comprend également les étapes d'installation du logiciel AWS IoT Greengrass Core.

  • AWS IoT Greengrass doit être configuré pour prendre en charge les secrets locaux. Pour plus d'informations, consultez les exigences liées aux ressources de secret.

    Note

    Cette exigence inclut l'autorisation d'accéder aux secrets de votre Gestionnaire de Secrets. Si vous utilisez le rôle de service Greengrass par défaut, Greengrass est autorisé à obtenir les valeurs des secrets dont le nom commence par greengrass-.

  • Pour obtenir les valeurs des secrets locaux, vos fonctions Lambda définies par l'utilisateur doivent AWS IoT Greengrass utiliser le SDK Core v1.3.0 ou version ultérieure.

Étape 1 : Création d'un secret du Gestionnaire de Secrets

Au cours de cette étape, vous utilisez la console AWS Secrets Manager pour créer un secret.

  1. Connectez-vous à la console AWS Secrets Manager.

    Note

    Pour plus d'informations sur ce processus, voir Étape 1 : Création et stockage de votre secret AWS Secrets Manager dans le guide de AWS Secrets Manager l'utilisateur.

  2. Choisissez Store a new secret (Stocker un nouveau secret).

  3. Sous Choisir le type de secret, choisissez Autre type de secret.

  4. Dans Spécifier les paires clé/valeur à stocker pour ce secret :

    • Pour Clé, entrez test.

    • Pour le champ Value (Valeur), entrez abcdefghi.

  5. Gardez aws/secretsmanager sélectionné pour la clé de chiffrement, puis choisissez Next.

    Note

    Vous n'êtes pas débité AWS KMS si vous utilisez la clé AWS gérée par défaut créée par Secrets Manager dans votre compte.

  6. Pour Secret name, entrez greengrass-TestSecret et choisissez Next.

    Note

    Par défaut, le rôle de service Greengrass permet d'AWS IoT Greengrassobtenir la valeur des secrets dont le nom commence par greengrass -. Pour plus d'informations, consultez les exigences liées aux secrets.

  7. Ce didacticiel ne nécessite pas de rotation. Choisissez donc désactiver la rotation automatique, puis cliquez sur Suivant.

  8. Dans la page Révision, passez en revue vos paramètres, puis choisissez Stocker.

    Ensuite, vous créez une ressource de secret dans votre groupe Greengrass qui référence le secret.

Étape 2 : Ajouter une ressource de secret à un groupe Greengrass

Au cours de cette étape, vous configurez une ressource de groupe qui fait référence au secret de Secrets Manager.

  1. Dans le volet de navigation de la AWS IoT console, sous Gérer, développez les appareils Greengrass, puis choisissez Groups (V1).

  2. Choisissez le groupe auquel vous souhaitez ajouter la ressource de secret.

  3. Sur la page de configuration du groupe, choisissez l'onglet Ressources, puis faites défiler la page jusqu'à la section Secrets. La section Secrets affiche les ressources secrètes appartenant au groupe. Vous pouvez ajouter, modifier et supprimer des ressources secrètes dans cette section.

    Note

    La console vous permet également de créer une ressource secrète et secrète lorsque vous configurez un connecteur ou une fonction Lambda. Vous pouvez le faire depuis la page Configurer les paramètres du connecteur ou depuis la page Ressources de la fonction Lambda.

  4. Choisissez Ajouter dans la section Secrets.

  5. Sur la page Ajouter une ressource secrète, entrez MyTestSecret le nom de la ressource.

  6. Sous Secret, choisissez greengrass- TestSecret.

  7. Dans la section Sélectionner les étiquettes (facultatif), AWSCURRENT l'étiquette intermédiaire représente la dernière version du secret. Cette étiquette est toujours incluse dans une ressource de secret.

    Note

    Ce didacticiel nécessite uniquement l' AWSCURRENT étiquette. Vous pouvez éventuellement inclure des étiquettes requises par votre fonction ou connecteur Lambda.

  8. Choisissez Add resource (Ajouter ressource).

Étape 3 : Création d'un package de déploiement de fonctions Lambda

Pour créer une fonction Lambda, vous devez d'abord créer un package de déploiement de fonction Lambda contenant le code de la fonction et les dépendances. Les fonctions Lambda de Greengrass nécessitent le SDK AWS IoT Greengrass principal pour des tâches telles que la communication avec les messages MQTT dans l'environnement principal et l'accès aux secrets locaux. Ce didacticiel crée une fonction Python afin que vous utilisiez la version Python du SDK dans le package de déploiement.

Note

Pour obtenir les valeurs des secrets locaux, vos fonctions Lambda définies par l'utilisateur doivent AWS IoT Greengrass utiliser le SDK Core v1.3.0 ou version ultérieure.

  1. Sur la page de téléchargement du SDK AWS IoT Greengrass Core, téléchargez le SDK AWS IoT Greengrass Core pour Python sur votre ordinateur.

  2. Décompressez le package téléchargé pour obtenir le kit SDK. Le kit SDK est représenté par le dossier greengrasssdk.

  3. Enregistrez la fonction de code Python suivante dans un fichier local nommé secret_test.py.

    import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") iot_client = greengrasssdk.client("iot-data") secret_name = "greengrass-TestSecret" send_topic = "secrets/output" def function_handler(event, context): """ Gets a secret and publishes a message to indicate whether the secret was successfully retrieved. """ response = secrets_client.get_secret_value(SecretId=secret_name) secret_value = response.get("SecretString") message = ( f"Failed to retrieve secret {secret_name}." if secret_value is None else f"Successfully retrieved secret {secret_name}." ) iot_client.publish(topic=send_topic, payload=message) print("Published: " + message)

    La get_secret_value fonction prend en charge le nom ou l'ARN du secret du Secrets Manager pour la SecretId valeur. Cet exemple utilise le nom du secret. Pour cet exemple, AWS IoT Greengrass renvoie la paire clé-valeur : {"test":"abcdefghi"}.

    Important

    Assurez-vous que les fonctions Lambda définies par l'utilisateur gèrent les secrets de manière sécurisée et n'enregistrent aucune donnée sensible stockée dans le secret. Pour plus d'informations, consultez la section Atténuer les risques liés à la journalisation et au débogage de votre fonction Lambda dans AWS Secrets Managerle guide de l'utilisateur. Bien que cette documentation fasse spécifiquement référence aux fonctions de rotation, la recommandation s'applique également aux fonctions Greengrass Lambda.

  4. Compressez les éléments suivants dans un fichier nommé secret_test_python.zip. Lorsque vous créez le fichier ZIP, insérez uniquement le code et ses dépendances, pas le dossier dans lequel il se trouve.

    • secret_test.py. Logique d'application.

    • greengrasssdk. Bibliothèque requise pour toutes les fonctions Lambda de Python Greengrass.

    Il s'agit de votre package de déploiement de fonctions Lambda.

Étape 4 : Créer une fonction Lambda

Au cours de cette étape, vous allez utiliser la AWS Lambda console pour créer une fonction Lambda et la configurer pour utiliser votre package de déploiement. Vous publiez ensuite une version de fonction et créez un alias.

  1. Créez d'abord la fonction Lambda.

    1. Dans AWS Management Console, choisissez Services et ouvrez la console AWS Lambda.

    2. Choisissez Créer une fonction, puis sélectionnez Auteur à partir de zéro.

    3. Dans la section Informations de base, spécifiez les valeurs suivantes :

      • Sous Nom de la fonction, saisissez SecretTest.

      • Pour Runtime, sélectionnez Python 3.7.

      • Pour les autorisations, conservez le paramètre par défaut. Cela crée un rôle d'exécution qui accorde des autorisations Lambda de base. Ce rôle n'est pas utilisé parAWS IoT Greengrass.

    4. Dans le bas de la page, choisissez Create function.

  2. Enregistrez ensuite le gestionnaire et téléchargez le package de déploiement de votre fonction Lambda.

    1. Dans l'onglet Code, sous Source du code, choisissez Télécharger depuis. Dans le menu déroulant, sélectionnez le fichier .zip.

      La liste déroulante Upload from avec le fichier .zip surligné.
    2. Choisissez Upload, puis choisissez votre package secret_test_python.zip de déploiement. Ensuite, choisissez Enregistrer.

    3. Dans l'onglet Code de la fonction, sous Paramètres d'exécution, choisissez Modifier, puis entrez les valeurs suivantes.

      • Pour Runtime, sélectionnez Python 3.7.

      • Pour Handler (Gestionnaire), entrez secret_test.function_handler.

    4. Choisissez Save (Enregistrer).

      Note

      Le bouton Test de la AWS Lambda console ne fonctionne pas avec cette fonction. Le SDK AWS IoT Greengrass principal ne contient pas les modules nécessaires pour exécuter vos fonctions Greengrass Lambda de manière indépendante dans la console. AWS Lambda Ces modules (par exemplegreengrass_common) sont fournis aux fonctions après leur déploiement sur votre noyau Greengrass.

  3. À présent, publiez la première version de votre fonction Lambda et créez un alias pour cette version.

    Note

    Les groupes Greengrass peuvent référencer une fonction Lambda par alias (recommandé) ou par version. L'utilisation d'un alias facilite la gestion des mises à jour du code, car vous n'avez pas à modifier votre table d'abonnement ou la définition de groupe lorsque le code de fonction est mis à jour. Au lieu de cela, il vous suffit de pointer l'alias vers la nouvelle version de la fonction.

    1. Dans le menu Actions, sélectionnez Publier une nouvelle version.

    2. Dans Description de la version, saisissez First version, puis choisissez Publish.

    3. Sur la page de configuration SecretTest: 1, dans le menu Actions, choisissez Créer un alias.

    4. Sur la page Create a new alias, utilisez les valeurs suivantes :

      • Pour Name (Nom), saisissez GG_SecretTest.

      • Pour Version, choisissez 1.

      Note

      AWS IoT Greengrassne prend pas en charge les alias Lambda pour les versions $LATEST.

    5. Sélectionnez Create (Créer).

Vous êtes maintenant prêt à ajouter la fonction Lambda à votre groupe Greengrass et à joindre la ressource secrète.

Étape 5 : ajouter la fonction Lambda au groupe Greengrass

Au cours de cette étape, vous allez ajouter la fonction Lambda au groupe Greengrass dans la console. AWS IoT

  1. Sur la page de configuration du groupe, choisissez l'onglet Fonctions Lambda.

  2. Dans la section Mes fonctions Lambda, choisissez Ajouter.

  3. Pour la fonction Lambda, choisissez. SecretTest

  4. Pour la version de la fonction Lambda, choisissez l'alias de la version que vous avez publiée.

Configurez ensuite le cycle de vie de la fonction Lambda.

  1. Dans la section Configuration de la fonction Lambda, effectuez les mises à jour suivantes.

    Note

    Nous vous recommandons d'exécuter votre fonction Lambda sans conteneurisation, sauf si votre analyse de rentabilisation l'exige. Cela permet d'accéder au processeur graphique et à la caméra de votre appareil sans configurer les ressources de l'appareil. Si vous exécutez sans conteneurisation, vous devez également accorder un accès root à vos fonctions LambdaAWS IoT Greengrass.

    1. Pour exécuter sans conteneurisation :

    2. Pour exécuter plutôt en mode conteneurisé :

      Note

      Nous vous déconseillons de l'exécuter en mode conteneurisé, sauf si votre analyse de rentabilisation l'exige.

      • Pour Utilisateur et groupe du système, choisissez Utiliser le groupe par défaut.

      • Pour la conteneurisation de la fonction Lambda, choisissez Utiliser le groupe par défaut.

      • Pour Limite de mémoire, entrez 1024 MB.

      • Pour Expiration, entrez 10 seconds.

      • Pour Épinglé, choisissez True.

        Pour plus d'informations, veuillez consulter Configuration du cycle de vie pour les fonctions Greengrass Lambda.

      • Sous Paramètres supplémentaires, pour l'accès en lecture au répertoire /sys, sélectionnez Activé.

  2. Choisissez Ajouter une fonction Lambda.

Associez ensuite la ressource secrète à la fonction.

Étape 6 : associer la ressource secrète à la fonction Lambda

Au cours de cette étape, vous associez la ressource secrète à la fonction Lambda de votre groupe Greengrass. Cela associe la ressource à la fonction, ce qui permet à la fonction d'obtenir la valeur du secret local.

  1. Sur la page de configuration du groupe, choisissez l'onglet Fonctions Lambda.

  2. Choisissez la SecretTestfonction.

  3. Sur la page de détails de la fonction, sélectionnez Ressources.

  4. Accédez à la section Secrets et choisissez Associer.

  5. Choisissez MyTestSecret, puis choisissez Associer.

Étape 7 : Ajouter des abonnements au groupe Greengrass

Au cours de cette étape, vous ajoutez des abonnements qui permettent à AWS IoT la fonction Lambda d'échanger des messages. Un abonnement permet à AWS IoT d'appeler la fonction et à la fonction d'envoyer des données de sortie vers AWS IoT.

  1. Sur la page de configuration du groupe, choisissez l'onglet Abonnements, puis choisissez Ajouter un abonnement.

  2. Créez un abonnement qui permet à AWS IoT de publier des messages à la fonction.

    Sur la page de configuration du groupe, choisissez l'onglet Abonnements, puis choisissez Ajouter un abonnement.

  3. Sur la page Créer un abonnement, configurez la source et la cible comme suit :

    1. Dans Type de source, sélectionnez Fonction Lambda, puis IoT Cloud.

    2. Dans Type de cible, choisissez Service, puis choisissez SecretTest.

    3. Dans le filtre de rubrique, entrezsecrets/input, puis choisissez Créer un abonnement.

  4. Ajoutez un second abonnement. Choisissez l'onglet Abonnements, choisissez Ajouter un abonnement et configurez la source et la cible comme suit :

    1. Dans Type de source, choisissez Services, puis sélectionnez SecretTest.

    2. Dans Type de cible, choisissez la fonction Lambda, puis sélectionnez IoT Cloud.

    3. Dans le filtre de rubrique, entrezsecrets/output, puis choisissez Créer un abonnement.

Étape 8 : Déployer le groupe Greengrass

Déployer le groupe sur l'appareil principal (noyau) Pendant le déploiementAWS IoT Greengrass, extrait la valeur du secret depuis Secrets Manager et crée une copie cryptée locale sur le noyau.

  1. Assurez-vous que le AWS IoT Greengrass noyau fonctionne. Dans la fenêtre de terminal de votre Raspberry Pi, exécutez les commandes suivantes, si nécessaire.

    1. Pour vérifier si le démon est en cours d'exécution :

      ps aux | grep -E 'greengrass.*daemon'

      Si la sortie contient une entrée root pour /greengrass/ggc/packages/ggc-version/bin/daemon, le démon est en cours d'exécution.

      Note

      La version du chemin d'accès dépend de la version du logiciel AWS IoT Greengrass Core installée sur votre appareil principal.

    2. Pour démarrer le daemon :

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Sur la page de configuration du groupe, choisissez Deploy.

    1. Dans l'onglet Fonctions Lambda, sous la section Fonctions Lambda du système, sélectionnez Détecteur IP et choisissez Modifier.

    2. Dans la boîte de dialogue Modifier les paramètres du détecteur IP, sélectionnez Détecter et remplacer automatiquement les points de terminaison du broker MQTT.

    3. Choisissez Save (Enregistrer).

      Les appareils peuvent ainsi acquérir automatiquement des informations de connectivité pour le noyau, telles que l'adresse IP, le DNS et le numéro de port. La détection automatique est recommandée, mais AWS IoT Greengrass prend également en charge les points de terminaison spécifiés manuellement. Vous êtes uniquement invité à indiquer la méthode de découverte lors du déploiement initial du groupe.

      Note

      Si vous y êtes invité, autorisez la création du rôle de service Greengrass et associez-le à votre rôle Compte AWS dans le service actuel. Région AWS Ce rôle permet d'accéder AWS IoT Greengrass à vos ressources dans les AWS services.

      La page Déploiements indique l'horodatage, l'ID de version et l'état du déploiement. Une fois terminé, le statut affiché pour le déploiement doit être Terminé.

      Pour bénéficier d'une aide à la résolution des problèmes, consultez Résolution des problèmes de AWS IoT Greengrass.

Test de la fonction Lambda

  1. Sur la page d'accueil de la AWS IoT console, choisissez Test.

  2. Pour S'abonner à la rubrique, utilisez les valeurs suivantes, puis choisissez S'abonner.

    Propriété

    Valeur

    rubrique abonnement

    secrets/sortie

    Affichage de la charge utile MQTT

    Affichage des charges utiles sous forme de chaînes

  3. Pour Publier dans le sujet, utilisez les valeurs suivantes, puis choisissez Publier pour appeler la fonction.

    Propriété

    Valeur

    Sujet

    secrets/entrée

    Message

    Conserver le message par défaut. La publication d'un message appelle la fonction Lambda, mais la fonction décrite dans ce didacticiel ne traite pas le corps du message.

    En cas de réussite, la fonction publie un message « Success ».

Consulter aussi