Authentifier et autoriser les appareils clients - AWS IoT Greengrass

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.

Authentifier et autoriser les appareils clients

Note

Cette fonctionnalité est disponible pour les versions 2.6.0 et ultérieures du composant Greengrass nucleus.

Utilisez le service IPC d'authentification des appareils clients pour développer un composant de courtier local personnalisé auquel les appareils IoT locaux, tels que les appareils clients, peuvent se connecter.

Pour utiliser ces opérations IPC, incluez la version 2.2.0 ou ultérieure du composant d'authentification du périphérique client en tant que dépendance dans votre composant personnalisé. Vous pouvez ensuite utiliser les opérations IPC dans vos composants personnalisés pour effectuer les opérations suivantes :

  • Vérifiez l'identité des appareils clients qui se connectent au périphérique principal.

  • Créez une session pour qu'un appareil client se connecte au périphérique principal.

  • Vérifiez si un appareil client est autorisé à effectuer une action.

  • Recevez une notification lorsque le certificat de serveur de l'appareil principal change.

Versions minimales du SDK

Le tableau suivant répertorie les versions minimales du service IPC Kit SDK des appareils AWS IoT que vous devez utiliser pour interagir avec le service IPC d'authentification de l'appareil client.

Autorisation

Pour utiliser le service IPC d'authentification de l'appareil client dans un composant personnalisé, vous devez définir des politiques d'autorisation permettant à votre composant d'effectuer ces opérations. Pour plus d'informations sur la définition des politiques d'autorisation, consultezAutoriser les composants à effectuer des IPC opérations.

Les politiques d'autorisation pour l'authentification et l'autorisation des appareils clients présentent les propriétés suivantes.

Identifiant du service IPC : aws.greengrass.clientdevices.Auth

Opération Description Ressources

aws.greengrass#VerifyClientDeviceIdentity

Permet à un composant de vérifier l'identité d'un appareil client.

*

aws.greengrass#GetClientDeviceAuthToken

Permet à un composant de valider les informations d'identification d'un appareil client et de créer une session pour cet appareil client.

*

aws.greengrass#AuthorizeClientDeviceAction

Permet à un composant de vérifier si un appareil client est autorisé à effectuer une action.

*

aws.greengrass#SubscribeToCertificateUpdates

Permet à un composant de recevoir des notifications lorsque le certificat de serveur de l'appareil principal change.

*

*

Permet à un composant d'effectuer toutes les opérations de service IPC d'authentification du périphérique client.

*

Exemples de politiques d'autorisation

Vous pouvez vous référer à l'exemple de politique d'autorisation suivant pour vous aider à configurer les politiques d'autorisation pour vos composants.

Exemple de politique d'autorisation

L'exemple de politique d'autorisation suivant permet à un composant d'effectuer toutes les opérations IPC d'authentification du périphérique client.

{ "accessControl": { "aws.greengrass.clientdevices.Auth": { "com.example.MyLocalBrokerComponent:clientdevices:1": { "policyDescription": "Allows access to authenticate and authorize client devices.", "operations": [ "aws.greengrass#VerifyClientDeviceIdentity", "aws.greengrass#GetClientDeviceAuthToken", "aws.greengrass#AuthorizeClientDeviceAction", "aws.greengrass#SubscribeToCertificateUpdates" ], "resources": [ "*" ] } } } }

VerifyClientDeviceIdentity

Vérifiez l'identité d'un appareil client. Cette opération vérifie si le périphérique client est valideAWS IoT.

Demande

La demande de cette opération comporte les paramètres suivants :

credential

Les informations d'identification de l'appareil client. Cet objet contient ClientDeviceCredential les informations suivantes :

clientDeviceCertificate(Python :client_device_certificate)

Le certificat de périphérique X.509 de l'appareil client.

Réponse

La réponse de cette opération contient les informations suivantes :

isValidClientDevice(Python :is_valid_client_device)

Si l'identité de l'appareil client est valide.

GetClientDeviceAuthToken

Valide les informations d'identification d'un appareil client et crée une session pour l'appareil client. Cette opération renvoie un jeton de session que vous pouvez utiliser dans les demandes suivantes pour autoriser les actions de l'appareil client.

Pour connecter correctement un appareil client, le composant d'authentification du périphérique client doit accorder l'mqtt:connectautorisation pour l'ID client utilisé par le périphérique client.

Demande

La demande de cette opération comporte les paramètres suivants :

credential

Les informations d'identification de l'appareil client. Cet objet contient CredentialDocument les informations suivantes :

mqttCredential(Python :mqtt_credential)

Les informations d'identification MQTT de l'appareil client. Spécifiez l'ID client et le certificat que l'appareil client utilise pour se connecter. Cet objet contient MQTTCredential les informations suivantes :

clientId(Python :client_id)

L'ID client à utiliser pour se connecter.

certificatePem(Python :certificate_pem)

Le certificat de périphérique X.509 à utiliser pour la connexion.

username
Note

Cette propriété n'est pas utilisée actuellement.

password
Note

Cette propriété n'est pas utilisée actuellement.

Réponse

La réponse de cette opération contient les informations suivantes :

clientDeviceAuthToken(Python :client_device_auth_token)

Le jeton de session pour l'appareil client. Vous pouvez utiliser ce jeton de session dans les demandes suivantes pour autoriser les actions de cet appareil client.

AuthorizeClientDeviceAction

Vérifiez si un appareil client est autorisé à effectuer une action sur une ressource. Les politiques d'autorisation des appareils clients spécifient les autorisations que les appareils clients peuvent exécuter lorsqu'ils sont connectés à un périphérique principal. Vous définissez les politiques d'autorisation de l'appareil client lorsque vous configurez le composant d'authentification du périphérique client.

Demande

La demande de cette opération comporte les paramètres suivants :

clientDeviceAuthToken(Python :client_device_auth_token)

Le jeton de session pour l'appareil client.

operation

L'opération à autoriser.

resource

Ressource sur laquelle le dispositif client effectue l'opération.

Réponse

La réponse de cette opération contient les informations suivantes :

isAuthorized(Python :is_authorized)

Si le dispositif client est autorisé à effectuer l'opération sur la ressource.

SubscribeToCertificateUpdates

Abonnez-vous pour recevoir le nouveau certificat de serveur de l'appareil principal à chaque rotation. Lorsque le certificat de serveur change, les courtiers doivent le recharger à l'aide du nouveau certificat de serveur.

Le composant d'authentification de l'appareil client effectue une rotation des certificats de serveur tous les 7 jours par défaut. Vous pouvez configurer l'intervalle de rotation entre 2 et 10 jours.

Il s'agit d'une opération d'abonnement dans le cadre de laquelle vous vous abonnez à un flux de messages d'événements. Pour utiliser cette opération, définissez un gestionnaire de réponse au flux avec des fonctions qui gèrent les messages d'événements, les erreurs et la fermeture du flux. Pour plus d’informations, consultez Abonnez-vous aux diffusions IPC d'événements.

Type de message d'événement : CertificateUpdateEvent

Demande

La demande de cette opération comporte les paramètres suivants :

certificateOptions(Python :certificate_options)

Les types de mises à jour de certificats auxquels vous devez vous abonner. Cet objet contient CertificateOptions les informations suivantes :

certificateType(Python :certificate_type)

Type de mises à jour de certificat auxquelles vous devez vous abonner. Choisissez l'option suivante :

  • SERVER

Réponse

La réponse de cette opération contient les informations suivantes :

messages

Le flux de messages. Cet objet contient CertificateUpdateEvent les informations suivantes :

certificateUpdate(Python :certificate_update)

Les informations relatives au nouveau certificat. Cet objet contient CertificateUpdate les informations suivantes :

certificate

Certificat.

privateKey(Python :private_key)

La clé privée du certificat.

publicKey(Python :public_key)

La clé publique du certificat.

caCertificates(Python :ca_certificates)

Liste des certificats de l'autorité de certification (CA) de la chaîne de certificats de l'autorité de certification du certificat.