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.
Utilisation des ressources de secret
AWS IoT Greengrass utilise des ressources de secret pour intégrer les secrets d'AWS Secrets Manager dans un groupe Greengrass. Une ressource secrète est une référence à un secret du 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.
Création et gestion des secrets
Dans un groupe Greengrass, une ressource secrète fait référence à l'ARN d'un secret Secrets Manager. Lorsque la ressource secrète est déployée vers le cœur, la valeur du secret est cryptée et mise à la disposition des connecteurs affiliés et des fonctions Lambda. Pour plus d'informations, veuillez consulter Chiffrement des secrets.
Vous utilisez Secrets Manager pour créer et gérer les versions cloud de vos secrets. Vous utilisez AWS IoT Greengrass pour créer, gérer et déployer vos ressources de secret.
Important
Nous vous recommandons de suivre la meilleure pratique qui consiste à alterner vos secrets dans Secrets Manager. Ensuite, déployez le groupe Greengrass pour mettre à jour les copies locales de vos secrets. Pour plus d'informations, consultez la section Rotation de vos AWS Secrets Manager secrets dans le guide de AWS Secrets Manager l'utilisateur.
Pour rendre un secret disponible sur le noyau Greengrass
Créez un secret dans Secrets Manager. Il s'agit de la version cloud de votre secret, qui est stockée et gérée de manière centralisée dans Secrets Manager. Les tâches de gestion comprennent la rotation des valeurs secrètes et l'application des stratégies de ressources.
Créez une ressource de secret dans AWS IoT Greengrass. Il s'agit d'un type de ressource de groupe qui référence le secret du cloud par ARN. Vous ne pouvez référencer un secret qu'une seule fois par groupe.
Configurez votre connecteur ou votre fonction Lambda. Vous devez associer la ressource à un connecteur ou à une fonction en spécifiant des paramètres ou propriétés correspondants. Cela leur permet d'obtenir la valeur de la ressource de secret localement déployée. Pour plus d'informations, veuillez consulter Utilisation de secrets locaux dans les connecteurs et les fonctions Lambda.
Déploiement du groupe Greengrass. Pendant le déploiement, AWS IoT Greengrass récupère la valeur du secret du cloud et crée (ou met à jour) le secret local dans le noyau.
Secrets Manager enregistre un événement AWS CloudTrail chaque fois qu'il AWS IoT Greengrass récupère une valeur secrète. AWS IoT Greengrassn'enregistre aucun événement lié au déploiement ou à l'utilisation de secrets locaux. Pour plus d'informations sur la journalisation de Secrets Manager, consultez la section Surveiller l'utilisation de vos AWS Secrets Manager secrets dans le Guide de AWS Secrets Manager l'utilisateur.
Inclure des étiquettes intermédiaires dans les ressources de secret
Secrets Manager utilise des étiquettes intermédiaires pour identifier des versions spécifiques d'une valeur secrète. Les étiquettes de mise en scène peuvent être définies par le système ou définies par l'utilisateur. Secrets Manager attribue l'AWSCURRENT
étiquette à la version la plus récente de la valeur secrète. Les étiquettes intermédiaires sont couramment utilisées pour gérer la rotation des secrets. Pour plus d'informations sur le versionnement de Secrets Manager, consultez la section Termes et concepts clés du Guide de l'AWS Secrets Managerutilisateur. AWS Secrets Manager
Les ressources secrètes incluent toujours l'étiquette AWSCURRENT
de préparation, et elles peuvent éventuellement inclure d'autres étiquettes de préparation si elles sont requises par une fonction ou un connecteur Lambda. Pendant le déploiement de groupe, AWS IoT Greengrass récupère les valeurs des étiquettes intermédiaires qui sont référencées dans le groupe, puis crée ou met à jour les valeurs correspondantes sur le noyau.
Créer et gérer les ressources de secret (console)
Création des ressources de secret (console)
Dans la AWS IoT Greengrass console, vous pouvez créer et gérer des ressources secrètes depuis l'onglet Secrets de la page Ressources du groupe. Pour les didacticiels concernant la création d'une ressource de secret et son ajout à un groupe, consultez Comment créer une ressource de secret (console) et Mise en route avec les connecteurs Greengrass (console).
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.
Gestion des ressources de secret (console)
Les tâches de gestion des ressources secrètes de votre groupe Greengrass incluent l'ajout de ressources secrètes au groupe, la suppression de ressources secrètes du groupe et la modification de l'ensemble des étiquettes intermédiaires incluses dans une ressource secrète.
Si vous pointez vers un secret différent de celui de Secrets Manager, vous devez également modifier tous les connecteurs qui utilisent le secret :
-
Sur la page de configuration de groupe, choisissez Connecteurs.
-
Dans le menu contextuel du connecteur, choisissez Modifier.
-
La page Edit parameters (Modifier les paramètres) affiche un message vous informant que l'ARN du secret a changé. Pour confirmer le changement, choisissez Enregistrer.
Si vous supprimez un secret dans Secrets Manager, supprimez la ressource secrète correspondante du groupe ainsi que des connecteurs et des fonctions Lambda qui le référencent. Sinon, lors du déploiement en groupe, AWS IoT Greengrass renvoie une erreur indiquant que le secret est introuvable. Mettez également à jour votre code de fonction Lambda si nécessaire.
Créer et gérer les ressources de secret (interface de ligne de commande)
Création des ressources de secret (interface de ligne de commande)
Dans l'API AWS IoT Greengrass, un secret est un type de ressource de groupe. L'exemple suivant crée une définition de ressource avec une version initiale qui inclut une ressource de secret nommée MySecretResource
. Pour obtenir un didacticiel concernant la création d'une ressource de secret et son ajout à une version de groupe, consultez Démarrage avec les connecteurs Greengrass (CLI).
La ressource secrète fait référence à l'ARN du secret Secrets Manager correspondant et inclut deux étiquettes intermédiaires en plus deAWSCURRENT
, qui sont toujours incluses.
aws greengrass create-resource-definition --name MyGreengrassResources --initial-version '{ "Resources": [ { "Id": "my-resource-id", "Name": "MySecretResource", "ResourceDataContainer": { "SecretsManagerSecretResourceData": { "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:greengrass-SomeSecret-KUj89s", "AdditionalStagingLabelsToDownload": [ "Label1", "Label2" ] } } } ] }'
Gestion des ressources de secret (interface de ligne de commande)
Les tâches de gestion des ressources secrètes de votre groupe Greengrass incluent l'ajout de ressources secrètes au groupe, la suppression de ressources secrètes du groupe et la modification de l'ensemble des étiquettes intermédiaires incluses dans une ressource secrète.
Dans l'API AWS IoT Greengrass, ces modifications sont mises en œuvre à l'aide des versions.
L'AWS IoT GreengrassAPI utilise des versions pour gérer les groupes. Les versions étant immuables, pour ajouter ou modifier des composants de groupe (par exemple, les appareils clients, les fonctions et les ressources du groupe), vous devez créer des versions de composants nouveaux ou mis à jour. Ensuite, vous créez et déployez une version de groupe contenant la version cible de chaque composant. Pour en savoir plus sur les groupes, voirAWS IoT Greengrass groupes.
Par exemple, pour modifier l'ensemble des étiquettes intermédiaires d'une ressource de secret :
Créez une version de définition de ressource qui contient la ressource de secret mise à jour. L'exemple suivant ajoute une troisième étiquette intermédiaire à la ressource de secret à partir de la section précédente.
Note
Pour ajouter d'autres ressources à la version, incluez-les dans la grappe
Resources
.aws greengrass create-resource-definition --name MyGreengrassResources --initial-version '{ "Resources": [ { "Id": "my-resource-id", "Name": "MySecretResource", "ResourceDataContainer": { "SecretsManagerSecretResourceData": { "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:greengrass-SomeSecret-KUj89s", "AdditionalStagingLabelsToDownload": [ "Label1", "Label2", "Label3" ] } } } ] }'
Si l'ID de la ressource de secret est modifié, mettez à jour les connecteurs et les fonctions qui utilisent la ressource de secret. Dans les nouvelles versions, mettez à jour le paramètre ou la propriété qui correspond à l'ID de ressource. Si l'ARN du secret est modifié, vous devez également mettre à jour le paramètre correspondant pour tous les connecteurs qui utilisent le secret.
Note
L'ID de ressource est un identifiant arbitraire qui est fourni par le client.
Créez une version de groupe qui contient la version cible de chaque composant que vous souhaitez envoyer vers le noyau.
Déploiement de la version de groupe.
Pour obtenir un didacticiel qui montre comment créer et déployer des ressources de secret, des connecteurs et des fonctions, consultez Démarrage avec les connecteurs Greengrass (CLI).
Si vous supprimez un secret dans Secrets Manager, supprimez la ressource secrète correspondante du groupe ainsi que des connecteurs et des fonctions Lambda qui le référencent. Sinon, lors du déploiement en groupe, AWS IoT Greengrass renvoie une erreur indiquant que le secret est introuvable. Mettez également à jour votre code de fonction Lambda si nécessaire. Vous pouvez supprimer un secret local en déployant une version de définition de ressource qui ne contient pas la ressource secrète correspondante.
Utilisation de secrets locaux dans les connecteurs et les fonctions Lambda
Les connecteurs Greengrass et les fonctions Lambda utilisent des secrets locaux pour interagir avec les services et les applications. La valeur AWSCURRENT
est utilisée par défaut, mais les valeurs des autres étiquettes intermédiaires incluses dans la ressource de secret sont également disponibles.
Les connecteurs et les fonctions doivent être configurés avant de pouvoir accéder aux secrets locaux. Cela associe la ressource de secret au connecteur ou à la fonction.
- Connecteurs
-
Si un connecteur requiert l'accès à un secret local, il fournit des paramètres que vous configurez avec les informations dont il a besoin pour accéder au secret.
Pour savoir comment procéder dans la AWS IoT Greengrass console, consultezMise en route avec les connecteurs Greengrass (console).
Pour savoir comment procéder avec l'interface de ligne de commande AWS IoT Greengrass, consultez Démarrage avec les connecteurs Greengrass (CLI).
Pour en savoir plus sur les exigences des connecteurs individuels, consultez AWS- connecteurs Greengrass fournis.
La logique pour accéder et utiliser le secret est intégré dans le connecteur.
- Fonctions Lambda
-
Pour autoriser une fonction Greengrass Lambda à accéder à un secret local, vous devez configurer les propriétés de la fonction.
Pour savoir comment procéder dans la AWS IoT Greengrass console, consultezComment créer une ressource de secret (console).
Pour ce faire, dans l'API AWS IoT Greengrass, vous fournissez les informations suivantes dans la propriété
ResourceAccessPolicies
.ResourceId
: l'ID de la ressource de secret dans le groupe Greengrass. Il s'agit de la ressource qui référence l'ARN du secret Secrets Manager correspondant.Permission
: type d'accès que la fonction a à la ressource. Seule l'autorisationro
(en lecture seule) est prise en charge pour les ressources de secret.
L'exemple suivant crée une fonction Lambda qui peut accéder à la ressource
MyApiKey
secrète.aws greengrass create-function-definition --name MyGreengrassFunctions --initial-version '{ "Functions": [ { "Id": "MyLambdaFunction", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1", "FunctionConfiguration": { "Pinned": false, "MemorySize": 16384, "Timeout": 10, "Environment": { "ResourceAccessPolicies": [ { "ResourceId": "MyApiKey", "Permission": "ro" } ], "AccessSysfs": true } } } ] }'
Pour accéder aux secrets locaux lors de l'exécution, les fonctions Greengrass Lambda appellent la
get_secret_value
fonction depuis lesecretsmanager
client dans le SDK AWS IoT Greengrass Core (v1.3.0 ou version ultérieure).L'exemple suivant montre comment utiliser le SDK AWS IoT Greengrass Core pour Python pour obtenir un secret. Il transmet le nom du secret à la
get_secret_value
fonction.SecretId
peut être le nom ou l'ARN du secret du Secrets Manager (pas la ressource secrète).import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") secret_name = "greengrass-MySecret-abc" def function_handler(event, context): response = secrets_client.get_secret_value(SecretId=secret_name) secret = response.get("SecretString")
Pour les secrets de type texte, la fonction
get_secret_value
renvoie une chaîne. Pour les secrets de type binaire, elle renvoie une chaîne encodée en base64.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.
La valeur actuelle du secret est renvoyée par défaut. Il s'agit de la version à laquelle l'étiquette intermédiaire
AWSCURRENT
est attachée. Pour accéder à une autre version, transmettez le nom de l'étiquette intermédiaire correspondante pour l'argumentVersionStage
facultatif. Par exemple :import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") secret_name = "greengrass-TestSecret" secret_version = "MyTargetLabel" # Get the value of a specific secret version def function_handler(event, context): response = secrets_client.get_secret_value( SecretId=secret_name, VersionStage=secret_version ) secret = response.get("SecretString")
Pour obtenir un autre exemple de fonction qui appelle
get_secret_value
, consultez Création d'un package de déploiement de fonctions Lambda.