Authentification et autorisation d'appareil pour AWS IoT Greengrass - 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.

Authentification et autorisation d'appareil pour AWS IoT Greengrass

Dans les environnements AWS IoT Greengrass, les appareils utilisent des certificats X.509 pour l'authentification et des stratégies AWS IoT pour l'autorisation. Les certificats et les stratégies permettent aux appareils de se connecter en toute sécurité avec d’autres appareils, AWS IoT Core et AWS IoT Greengrass.

Les certificats X.509 sont des certificats numériques qui font appel à la norme d'infrastructure de clé publique X.509 pour associer une clé publique à l’identité contenue dans un certificat. Les certificats X.509 sont émis par une entité de confiance appelée autorité de certification (CA). Celle-ci gère un ou plusieurs certificats spéciaux appelés certificats d'autorité de certification, qu'elle utilise pour émettre des certificats X.509. Seule l'autorité du certificat a accès aux certificats d'autorité de certification.

Les stratégies AWS IoT définissent l'ensemble des opérations autorisées pour les appareils AWS IoT. Plus précisément, elles autorisent et refusent l'accès aux opérations de plan de données AWS IoT Core et AWS IoT Greengrass, telles que la publication de messages MQTT et la récupération de shadows d’appareil.

Tous les périphériques nécessitent une entrée dans le registre AWS IoT Core et un certificat X.509 activé avec une stratégie AWS IoT jointe. Les appareils se répartissent en deux catégories :

  • Appareils noyau Greengrass. Les appareils noyau Greengrass utilisent des certificats et des stratégies AWS IoT pour se connecter en toute sécurité à AWS IoT Core. Les certificats et les politiques permettent également de AWS IoT Greengrass déployer des informations de configuration, des fonctions Lambda, des connecteurs et des abonnements gérés sur les appareils principaux.

  • Appareils clients. Les appareils clients (également appelés appareils connectés, appareils Greengrass ou appareils) sont des appareils qui se connectent à un cœur Greengrass via MQTT. Ils utilisent des certificats et des politiques pour se connecter au AWS IoT Greengrass service AWS IoT Core et le utiliser. Cela permet aux appareils clients d'utiliser le service de AWS IoT Greengrass découverte pour rechercher un périphérique principal et s'y connecter. Un appareil client utilise le même certificat pour se connecter à la passerelle du AWS IoT Core périphérique et au périphérique principal. Les appareils clients utilisent également les informations de découverte pour l'authentification mutuelle avec le périphérique principal. Pour plus d’informations, consultez Flux de connexion des appareils et Gérer l'authentification des appareils avec le noyau Greengrass.

Certificats X.509

La communication entre les appareils principaux et clients et entre les appareils AWS IoT Core et/ou AWS IoT Greengrass doit être authentifiée. Cette authentification mutuelle est basée sur les certificats d'appareils X.509 enregistrés et sur des clés de chiffrement.

Dans un environnement AWS IoT Greengrass, les appareils utilisent des certificats avec des clés publiques et privées pour les connexions TLS (Transport Layer Security) suivantes :

  • Le composant client AWS IoT sur le noyau Greengrass se connectant à AWS IoT Core et à AWS IoT Greengrass via Internet.

  • Les appareils clients se connectent AWS IoT Greengrass à pour obtenir des informations de découverte de base sur Internet.

  • Le composant du serveur MQTT situé sur le cœur de Greengrass se connecte aux appareils clients du groupe via le réseau local.

L'appareil AWS IoT Greengrass principal stocke les certificats à deux emplacements :

  • Certificat de l'appareil noyau dans /greengrass-root/certs. En règle générale, le certificat de l’appareil noyau est nommé hash.cert.pem (par exemple, 86c84488a5.cert.pem). Ce certificat est utilisé par le client AWS IoT pour l'authentification mutuelle lorsque le noyau se connecte aux services AWS IoT Core et AWS IoT Greengrass.

  • Certificat de serveur MQTT dans /greengrass-root/ggc/var/state/server. Le certificat de serveur MQTT est nommé server.crt. Ce certificat est utilisé pour l'authentification mutuelle entre le serveur MQTT local (sur le noyau Greengrass) et les appareils Greengrass.

    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.

Pour plus d’informations, consultez AWS IoT Greengrass principes de sécurité fondamentaux.

Certificats d'autorité de certification (CA)

Les appareils principaux et les appareils clients téléchargent un certificat CA racine utilisé pour l'authentification AWS IoT Core et les AWS IoT Greengrass services. Nous vous recommandons d'utiliser un certificat d'autorité de certification racine Amazon Trust Services (ATS), tel que Amazon Root CA 1. Pour de plus amples informations, veuillez consulter Certificats d'autorité de certification pour l'authentification du serveur dans le Manuel du développeur AWS IoT Core.

Note

Votre type de certificat CA racine doit correspondre à votre point de terminaison. Utilisez un certificat d'autorité de certification racine ATS avec un point de terminaison ATS (de préférence) ou un certificat d'autorité de certification VeriSign racine avec un ancien point de terminaison. Seules certaines régions Amazon Web Services prennent en charge les anciens terminaux. Pour plus d’informations, consultez Les points de terminaison du service doivent correspondre au type de certificat de l'autorité de certification racine.

Les appareils clients téléchargent également le certificat CA du groupe Greengrass. Cela permet de valider le certificat du serveur MQTT sur le noyau Greengrass lors de l'authentification mutuelle. Pour plus d’informations, consultez Flux de connexion des appareils. L'expiration par défaut du certificat de serveur MQTT est de sept jours.

Rotation des certificats sur le serveur MQTT local

Les appareils clients utilisent le certificat du serveur MQTT local pour l'authentification mutuelle avec le périphérique principal de Greengrass. Par défaut, ce certificat expire au bout de 7 jours. Cette période limitée est basée sur les bonnes pratiques en matière de sécurité. Le certificat du serveur MQTT est signé par le certificat de l'autorité de certification de groupe, stocké dans le cloud.

Pour que la rotation des certificats ait lieu, votre appareil principal Greengrass doit être en ligne et pouvoir accéder directement au AWS IoT Greengrass service de façon régulière. Lorsque le certificat expire, le périphérique principal tente de se connecter au AWS IoT Greengrass service pour obtenir un nouveau certificat. Si la connexion réussit, l'appareil noyau télécharge un nouveau certificat de serveur principal MQTT et redémarre le service MQTT local. À ce stade, tous les appareils clients connectés au cœur sont déconnectés. Si le périphérique principal est hors ligne au moment de l'expiration, il ne reçoit pas le certificat de remplacement. Toute nouvelle tentative de connexion à l'appareil principal est rejetée. Les connexions existantes ne sont pas interrompues. Les appareils clients ne peuvent pas se connecter au périphérique principal tant que la connexion au AWS IoT Greengrass service n'est pas rétablie et qu'un nouveau certificat de serveur MQTT ne peut pas être téléchargé.

Vous pouvez définir le délai d'expiration sur une valeur comprise entre 7 et 30 jours, en fonction de vos besoins. Les rotations plus fréquentes nécessitent des connexions cloud plus fréquentes. Une rotation moins fréquente peut entraîner des problèmes de sécurité. Si vous souhaitez définir l'expiration du certificat sur une valeur supérieure à 30 jours, contactezAWS Support.

Dans la AWS IoT console, vous pouvez gérer le certificat sur la page Paramètres du groupe. Dans l'AWS IoT GreengrassAPI, vous pouvez utiliser l'UpdateGroupCertificateConfigurationaction.

Une fois le certificat de serveur MQTT expiré, toutes les tentatives effectuées pour sa validation échouent. Les appareils clients doivent être en mesure de détecter la panne et de mettre fin à la connexion.

Stratégies AWS IoT pour les opérations de plan de données

Utilisez des stratégies AWS IoT pour autoriser l'accès au plan de données AWS IoT Core et AWS IoT Greengrass. Le plan de données AWS IoT Core comprend des opérations pour les appareils, les utilisateurs et les applications, telles que la connexion à AWS IoT Core et l'abonnement aux rubriques. Le plan de données AWS IoT Greengrass comprend des opérations pour les appareils Greengrass, telles que la récupération de déploiements et la mise à jour des informations de connectivité.

Une AWS IoT politique est un document JSON similaire à une politique IAM. Elle contient une ou plusieurs instructions de stratégie qui spécifient les propriétés suivantes :

  • Effect. Le mode d'accès, qui peut être Allow ouDeny.

  • Action. Liste des actions autorisées ou refusées par la politique.

  • Resource. Liste des ressources sur lesquelles l'action est autorisée ou refusée.

AWS IoTles politiques * le prennent en charge en tant que caractère générique et traitent les caractères génériques MQTT (+et#) comme des chaînes littérales. Pour plus d'informations sur le * caractère générique, consultez la section Utilisation du caractère générique dans les ARN des ressources du Guide de l'AWS Identity and Access Managementutilisateur.

Pour de plus amples informations, veuillez consulter Stratégies AWS IoT et Actions de stratégie AWS IoT dans le Manuel du développeur AWS IoT Core.

Note

AWS IoT Corevous permet d'associer des AWS IoT politiques à des groupes d'objets afin de définir des autorisations pour des groupes d'appareils. Les politiques relatives aux groupes d'objets n'autorisent pas l'accès aux opérations du plan de AWS IoT Greengrass données. Pour autoriser un objet à accéder à une opération de plan de AWS IoT Greengrass données, ajoutez l'autorisation à une AWS IoT politique que vous associez au certificat de l'objet.

Actions de stratégie AWS IoT Greengrass

Actions de noyau Greengrass

AWS IoT Greengrass définit les actions de stratégie suivantes que les appareils noyau Greengrass peuvent utiliser dans les stratégies AWS IoT :

greengrass:AssumeRoleForGroup

Autorisation pour un appareil principal de Greengrass de récupérer des informations d'identification à l'aide de la fonction Lambda du système Token Exchange Service (TES). Les autorisations liées aux informations d'identification récupérées sont basées sur la stratégie attachée au rôle de groupe configuré.

Cette autorisation est vérifiée lorsqu'un appareil noyau Greengrass tente de récupérer des informations d'identification (en supposant que ces informations d'identification ne soient pas mises en cache localement).

greengrass:CreateCertificate

Autorisation pour un appareil noyau Greengrass de créer son propre certificat de serveur.

Cette autorisation est vérifiée lorsqu'un appareil noyau Greengrass crée un certificat. Les appareils noyau Greengrass tentent de créer un certificat de serveur lors de la première exécution, lorsque les informations de connectivité du noyau changent et lors des périodes de rotation désignées.

greengrass:GetConnectivityInfo

Autorisation pour un appareil noyau Greengrass de récupérer ses propres informations de connectivité.

Cette autorisation est vérifiée lorsqu'un appareil noyau Greengrass tente de récupérer ses informations de connectivité à partir de AWS IoT Core.

greengrass:GetDeployment

Autorisation pour un appareil noyau Greengrass de récupérer des déploiements.

Cette autorisation est vérifiée lorsqu'un appareil noyau Greengrass tente de récupérer des déploiements et des statuts de déploiement à partir du cloud.

greengrass:GetDeploymentArtifacts

Autorisation pour un périphérique principal de Greengrass de récupérer des artefacts de déploiement tels que des informations de groupe ou des fonctions Lambda.

Cette autorisation est vérifiée lorsqu'un appareil noyau Greengrass reçoit un déploiement, puis tente de récupérer des artefacts de déploiement.

greengrass:UpdateConnectivityInfo

Autorisation pour un appareil noyau Greengrass de mettre à jour ses propres informations de connectivité avec des informations d’adresse IP ou de nom d'hôte.

Cette autorisation est vérifiée lorsqu'un appareil noyau Greengrass tente de mettre à jour ses informations de connectivité dans le cloud.

greengrass:UpdateCoreDeploymentStatus

Autorisation pour un appareil noyau Greengrass de mettre à jour l'état d'un déploiement.

Cette autorisation est vérifiée lorsqu'un appareil noyau Greengrass reçoit un déploiement, puis tente de mettre à jour l'état du déploiement.

 

Actions des appareils Greengrass

AWS IoT Greengrassdéfinit les actions de stratégie suivantes que les appareils clients peuvent utiliser dans AWS IoT les politiques :

greengrass:Discover

Autorisation pour un appareil client d'utiliser l'API Discovery pour récupérer les informations de connectivité de base de son groupe et l'autorité de certification du groupe.

Cette autorisation est vérifiée lorsqu'un appareil client appelle l'API Discovery avec l'authentification mutuelle TLS.

Stratégie AWS IoT minimale pour l'appareil principal AWS IoT Greengrass (noyau)

L'exemple de stratégie suivant comprend l'ensemble d'actions minimum requis pour prendre en charge la fonctionnalité Greengrass de base pour l'appareil de votre noyau.

  • La stratégie énumère les rubriques MQTT et les filtres de rubrique vers lesquels l'appareil du noyau peut publier des messages, auxquels il peut s'abonner et desquels il peut recevoir des messages, y compris les rubriques utilisées pour le shadow. Pour faciliter l'échange de messages entre les AWS IoT Core fonctions Lambda, les connecteurs et les appareils clients du groupe Greengrass, spécifiez les sujets et les filtres de sujets que vous souhaitez autoriser. Pour de plus amples informations, veuillez consulter Exemples de stratégie de publication/abonnement dans le Manuel du développeur AWS IoT Core.

  • La stratégie comprend une section qui permet à AWS IoT Core d'obtenir, de mettre à jour et de supprimer le shadow de l'appareil du noyau. Pour autoriser la synchronisation parallèle pour les appareils clients du groupe Greengrass, spécifiez les Amazon Resource Names (ARN) cibles dans la Resource liste (par exemple,). arn:aws:iot:region:account-id:thing/device-name

  • L'utilisation de variables de stratégie d’objet (iot:Connection.Thing.*) dans la stratégie AWS IoT pour un appareil noyau n'est pas prise en charge. Le noyau utilise le même certificat d’appareil pour établir plusieurs connexions à AWS IoT Core, mais l'ID client dans une connexion peut ne pas correspondre exactement au nom de l’objet noyau.

  • Pour l'autorisation greengrass:UpdateCoreDeploymentStatus, la segment final de l'ResourceARN est l'ARN codé en URL de l'appareil du noyau.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account-id:client/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] }, { "Effect": "Allow", "Action": [ "greengrass:AssumeRoleForGroup", "greengrass:CreateCertificate" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeployment" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeploymentArtifacts" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:UpdateCoreDeploymentStatus" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*/cores/arn%3Aaws%3Aiot%3Aregion%3Aaccount-id%3Athing%2Fcore-name" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] } ] }
Note

AWS IoTles politiques relatives aux appareils clients nécessitent généralement des autorisations similaires pour iot:Connectiot:Publish,iot:Receive, et iot:Subscribe les actions.

Pour permettre à un appareil client de détecter automatiquement les informations de connectivité pour les cœurs des groupes Greengrass auxquels il appartient, la AWS IoT politique d'un appareil client doit inclure l'greengrass:Discoveraction. Dans la Resource section, spécifiez l'ARN de l'appareil client, et non l'ARN du périphérique principal Greengrass. Par exemple :

{ "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/device-name" ] }

La AWS IoT politique relative aux appareils clients ne nécessite généralement pas d'autorisations ou d'iot:DeleteThingShadowactions iot:GetThingShadowiot:UpdateThingShadow, car le noyau de Greengrass gère les opérations de synchronisation instantanée pour les appareils clients. Dans ce cas, assurez-vous que la Resource section relative aux actions parallèles de la AWS IoT politique principale inclut les ARN des appareils clients.

 

Dans la AWS IoT console, vous pouvez consulter et modifier la politique attachée au certificat de votre noyau.

  1. Dans le volet de navigation, sous Gérer, développez Tous les appareils, puis choisissez Objets.

  2. Choisissez votre cœur.

  3. Sur la page de configuration de votre noyau, choisissez l'onglet Certificats.

  4. Dans l'onglet Certificats, choisissez votre certificat.

  5. Sur la page de configuration du certificat, choisissez Stratégies, puis la stratégie.

    Si vous souhaitez modifier la politique, choisissez Modifier la version active.

  6. Passez en revue la politique et ajoutez, supprimez ou modifiez des autorisations selon vos besoins.

  7. Pour définir une nouvelle version de politique comme version active, sous État de la version de politique, sélectionnez Définir la version modifiée comme version active pour cette politique.

  8. Choisissez Enregistrer en tant que nouvelle version.