Déployer des secrets sur AWS IoT Greengrass Core - 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.

Déployer des secrets sur AWS IoT Greengrass Core

Cette fonction est disponible pourAWS IoT GreengrassCore v1.7 et versions ultérieures.

AWS IoT Greengrass vous permet de vous authentifier auprès des services et applications des appareils Greengrass sans codage en dur de mots de passe, jetons ou d'autres secrets.

AWS Secrets Managerest un service que vous pouvez utiliser pour stocker et gérer vos secrets en toute sécurité dans le cloud.AWS IoT Greengrassétend Secrets Manager aux périphériques principaux de Greengrass, de sorte que votreconnecteursLes fonctions Lambda peuvent utiliser des secrets locaux pour interagir avec des services et des applications. Par exemple, le connecteur Twilio Notifications utilise un jeton d'authentification stocké localement.

Pour intégrer un secret dans un groupe Greengrass, vous devez créer une ressource de groupe qui référence le secret de Secrets Manager. Cette ressource de secret référence le secret du cloud par ARN. Pour découvrir comment créer, gérer et utiliser les ressources de secret, consultez Utilisation des ressources de secret.

AWS IoT Greengrass chiffre vos secrets en transit et au repos. Pendant le déploiement de groupe,AWS IoT Greengrassextrait le secret de Secrets Manager et crée une copie chiffrée locale dans le noyau Greengrass. Après avoir effectué la rotation des secrets de votre cloud dans Secrets Manager, redéployez le groupe pour propager les valeurs mises à jour dans le noyau.

Le schéma suivant montre le processus de haut niveau consistant à déployer un secret sur le noyau. Les secrets sont chiffrés au repos et en transit.

AWS IoT Greengrassrécupère un secret deAWS Secrets Manageret le déploie en tant que ressource de secret sur le périphérique principal, où il est disponible pour les connecteurs et les fonctions Lambda.

L'utilisation de AWS IoT Greengrass pour stocker vos secrets en local offre les avantages suivants :

  • Dissocié du code (pas codé en dur). Cela prend en charge les informations d'identification gérées de manière centralisée et permet de protéger les données sensibles du risque de divulgation.

  • Disponible pour les scénarios hors ligne. Les connecteurs et les fonctions peuvent accéder en toute sécurité aux logiciels et services locaux lorsqu'ils sont déconnectés d'Internet.

  • Accès contrôlé aux secrets. Seuls les connecteurs et fonctions autorisés dans le groupe peuvent accéder à vos secrets. AWS IoT Greengrass utilise le chiffrement de clé privée pour sécuriser vos secrets. Les secrets sont chiffrés au repos et en transit. Pour plus d'informations, consultez Chiffrement des secrets.

  • Rotation contrôlée. Après avoir effectué la rotation des secrets dans Secrets Manager, redéployez le groupe Greengrass pour mettre à jour les copies locales de vos secrets. Pour plus d'informations, consultez Création et gestion des secrets.

    Important

    AWS IoT Greengrass ne met pas automatiquement à jour les valeurs des secrets locaux après la rotation des versions du cloud. Pour mettre à jour les valeurs locales, vous devez redéployer le groupe.

Chiffrement des secrets

AWS IoT Greengrass chiffre les secrets au repos et en transit.

Important

Assurez-vous que vos fonctions Lambda définies par l'utilisateur gèrent les secrets en toute sécurité et ne consignent aucune donnée sensible stockée dans le secret. Pour de plus amples informations, veuillez consulterAtténuation des risques liés à la journalisation et au débogage de votre fonction Lambdadans leAWS Secrets ManagerGuide de l'utilisateur. Bien que cette documentation se réfère spécifiquement aux fonctions de rotation, la recommandation s'applique également aux fonctions Lambda de Greengrass.

Chiffrement en transit

AWS IoT Greengrass utilise le protocole TLS (Transport Layer Security) pour chiffrer les communications sur Internet et le réseau local. Cela a pour effet de protéger les secrets en transit, ce qui se produit lorsque les secrets sont récupérés à partir de Secrets Manager et déployés dans le noyau. Pour les suites de chiffrement TLS prises en charge, consultez Prise en charge des suites de chiffrement TLS.

Chiffrement au repos

AWS IoT Greengrass utilise la clé privée spécifiée dans config.json pour le chiffrement des secrets qui sont stockés sur le noyau. Par conséquent, le stockage sécurisé de la clé privée est essentiel pour protéger les secrets locaux. Dans le AWS modèle de responsabilité partagée, il est de la responsabilité du client de garantir un stockage sécurisé de la clé privée sur l'appareil principal.

AWS IoT Greengrass prend en charge deux modes de stockage de clé privée :

  • l'utilisation des modules de sécurité matérielle. Pour plus d'informations, consultez Intégration de sécurité matérielle.

    Note

    Actuellement,AWS IoT Greengrassseul est pris en charge lePKCS #1 v1.5mécanisme de remplissage pour le chiffrement et le déchiffrement des secrets locaux lors de l'utilisation de clés privées matérielles. Si vous suivez les instructions fournies par le fournisseur pour générer manuellement des clés privées matérielles, veillez à choisir PKCS #1 v1.5.AWS IoT Greengrassne prend pas en charge le rembourrage OAEP (Optimal Asymmetric Encryption Padded).

  • l'utilisation des autorisations de système de fichiers (par défaut).

La clé privée est utilisée pour sécuriser la clé de données, qui est utilisée pour chiffrer les secrets locaux. La clé de données effectue une rotation avec chaque déploiement de groupe.

LeAWS IoT Greengrasscore est la seule entité qui a accès à la clé privée. Les connecteurs Greengrass ou les fonctions Lambda qui sont rattachés à une ressource secrète obtiennent la valeur de la clé secrète à partir de la base.

Prérequis

Vous trouverez ci-dessous les exigences minimales requises pour la prise en charge des secrets locaux :

  • Vous devez utiliserAWS IoT GreengrassCore v1.7 ou version ultérieure.

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

  • La clé privée utilisée pour le chiffrement des secrets locaux doit être spécifiée dans le fichier de configuration Greengrass. Par défaut, AWS IoT Greengrass utilise la clé privée principale stockée dans le système de fichiers. Pour fournir votre propre clé privée, consultez Spécifier la clé privée pour chiffrer un secret. Seul le type de clé RSA est pris en charge.

    Note

    Actuellement,AWS IoT Greengrassseul est pris en charge lePKCS #1 v1.5mécanisme de remplissage pour le chiffrement et le déchiffrement des secrets locaux lors de l'utilisation de clés privées matérielles. Si vous suivez les instructions fournies par le fournisseur pour générer manuellement des clés privées matérielles, veillez à choisir PKCS #1 v1.5.AWS IoT Greengrassne prend pas en charge le rembourrage OAEP (Optimal Asymmetric Encryption Padded).

  • AWS IoT Greengrass doit recevoir l'autorisation d'obtenir vos valeurs secrètes. Cela permet à AWS IoT Greengrass d'extraire les valeurs pendant le déploiement de groupe. Si vous utilisez le rôle de service Greengrass par défaut, AWS IoT Greengrass possède déjà l'accès aux secrets dont les noms commencent par greengrass-. Pour personnaliser l'accès, consultez Autoriser AWS IoT Greengrass à obtenir les valeurs secrètes.

    Note

    Nous vous recommandons d'utiliser cette convention d'affectation de noms pour identifier les secrets auxquels AWS IoT Greengrass est autorisé à accéder, même si vous personnalisez les autorisations. La console utilise différentes autorisations pour lire vos secrets, il est donc possible que vous puissiez sélectionner des secrets dans la console que AWS IoT Greengrass n'est pas autorisé à récupérer. Utiliser une convention de dénomination peut vous aider à éviter un conflit d'autorisation, qui se traduit par une erreur de déploiement.

Spécifier la clé privée pour chiffrer un secret

Dans cette procédure, vous devez fournir le chemin d'accès à une clé privée utilisée pour le chiffrement secret local. Il doit s’agir d’une clé RSA avec une longueur minimale de 2 048 bits. Pour de plus amples informations sur les clés privées utilisées sur leAWS IoT GreengrassCore, veuillez consulterAWS IoT Greengrass principes de sécurité fondamentaux.

AWS IoT Greengrass prend en charge deux modes de stockage de clé privée : le stockage basé sur le matériel ou le stockage basé sur le système de fichiers (par défaut). Pour plus d'informations, consultez Chiffrement des secrets.

Suivez cette procédure uniquement si vous souhaitez modifier la configuration par défaut, qui utilise la clé privée principale dans le système de fichiers. Ces étapes sont rédigées en supposant que vous avez créé votre groupe et noyau, comme indiqué dans le Module 2 du didacticiel Démarrez.

  1. Ouvrez le fichier config.json situé dans le répertoire /greengrass-root/config.

    Note

    greengrass-root indique le chemin d'installation du logiciel AWS IoT Greengrass Core sur votre appareil. Généralement, il s'agit du répertoire /greengrass.

  2. Dans l'objet crypto.principals.SecretsManager, pour la propriété privateKeyPath, entrez le chemin d'accès de votre clé privée :

    • Si votre clé privée est stockée dans le système de fichiers, indiquez le chemin d'accès absolu de la clé. Par exemple :

      "SecretsManager" : { "privateKeyPath" : "file:///somepath/hash.private.key" }
    • Si votre clé privée est stockée dans un module de sécurité matériel (HSM), spécifiez le chemin d'accès à l'aide du schéma d'URI RFC 7512 PKCS#11. Par exemple :

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

      Pour plus d'informations, consultez Configuration de sécurité matérielle pour un AWS IoT Greengrass cœur.

      Note

      Actuellement,AWS IoT Greengrassseul est pris en charge lePKCS #1 v1.5mécanisme de remplissage pour le chiffrement et le déchiffrement des secrets locaux lors de l'utilisation de clés privées matérielles. Si vous suivez les instructions fournies par le fournisseur pour générer manuellement des clés privées matérielles, veillez à choisir PKCS #1 v1.5.AWS IoT Greengrassne prend pas en charge le rembourrage OAEP (Optimal Asymmetric Encryption Padded).

Autoriser AWS IoT Greengrass à obtenir les valeurs secrètes

Dans cette procédure, vous pouvez ajouter une stratégie en ligne au rôle de service Greengrass qui permet à AWS IoT Greengrass d'obtenir les valeurs de vos secrets.

Suivez cette procédure uniquement si vous souhaitez accorder à AWS IoT Greengrass des autorisations personnalisées pour accéder à vos secrets ou si votre rôle de service Greengrass n'inclut pas la stratégie gérée AWSGreengrassResourceAccessRolePolicy. AWSGreengrassResourceAccessRolePolicy accorde l'accès aux secrets dont les noms commencent par greengrass-.

  1. Exécutez la commande de l'interface en ligne de commande pour obtenir l'ARN du rôle de service Greengrass :

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

    L'ARN renvoyé contient le nom du rôle.

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

    Vous utilisez l'ARN ou le nom dans l'étape suivante.

  2. Ajouter une stratégie en ligne qui autorise l'action secretsmanager:GetSecretValue. Pour obtenir des instructions, consultezAjout et suppression de stratégies IAMdans leIAM User Guide.

    Vous pouvez octroyer un accès précis en répertoriant explicitement des secrets ou en utilisant un schéma d'attribution de nom de caractère générique *, ou vous pouvez accorder un accès conditionnel aux secrets balisés ou versionnés. Par exemple, la stratégie suivante permet à AWS IoT Greengrass de lire uniquement les secrets spécifiés.

    { "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" ] } ] }
    Note

    Si vous utilisez une clé AWS KMS gérée par le client pour chiffrer les secrets, votre rôle de service Greengrass doit également autoriser l'action kms:Decrypt.

Pour de plus amples informations sur les stratégies IAM pour Secrets Manager, veuillez consulterAuthentification et contrôle d'accès pourAWS Secrets ManageretActions, ressources et clés de contexte pouvant être utilisées dans une stratégie IAM ou une stratégie de secret pourAWS Secrets Managerdans leAWS Secrets ManagerGuide de l'utilisateur.

Consulter aussi