Autoriser les utilisateurs et les services cloud à utiliser les tâches AWS IoT - AWS IoT Core

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.

Autoriser les utilisateurs et les services cloud à utiliser les tâches AWS IoT

Pour autoriser vos utilisateurs et vos services cloud, vous devez utiliser des politiques IAM à la fois sur le plan de contrôle et sur le plan de données. Les politiques doivent être utilisées avec le protocole HTTPS et doivent utiliser l’authentification Signature Version 4 (port 443) AWS pour authentifier les utilisateurs.

Note

AWS IoT Core les politiques ne doivent pas être utilisées sur le plan de contrôle. Seules les politiques IAM sont utilisées pour autoriser les utilisateurs ou les services cloud. Pour de plus amples informations sur les types de politiques requises à utiliser, veuillez consulter Type de politique requis pour AWS IoT Jobs.

Les politiques IAM sont des documents JSON qui contiennent des déclarations de politique. Les déclarations de politique utilisent les éléments Effet, Action et Ressource pour préciser les ressources, les actions autorisées ou rejetées et les conditions dans lesquelles les actions sont autorisées ou rejetées. Pour de plus amples informations, veuillez consulter Références des éléments de stratégie JSON IAM dans le Guide de l’utilisateur IAM.

Avertissement

Nous vous recommandons de ne pas utiliser d'autorisations génériques, comme "Action": ["iot:*"] dans vos politiques ou AWS IoT Core politiques IAM. L’utilisation d’autorisations génériques n’est pas une bonne pratique de sécurité recommandée. Pour plus d'informations, consultez AWS IoT la politique trop permissive.

Politiques IAM sur le plan de contrôle

Sur le plan de contrôle, les politiques IAM utilisent le préfixe iot: associé à l’action pour autoriser le fonctionnement de l’API de tâches correspondante. Par exemple, l’action de politique iot:CreateJob accorde à l’utilisateur l’autorisation d’utiliser l’API CreateJob.

Le tableau suivant contient les actions de politique IAM et les autorisations d’utilisation des actions d’API. Pour plus d'informations sur les types de ressources, consultez la section Types de ressources définis par AWS IoT. Pour plus d'informations sur AWS IoT les actions, consultez la section Actions définies par AWS IoT.

Actions de politique IAM sur le plan de contrôle
Actions de politique Opération API Types de ressources Description
iot:AssociateTargetsWithJob AssociateTargetsWithJob
  • tâche

  • thing

  • thinggroup

Représente l’autorisation d’associer un groupe à une tâche continue. L’autorisation iot:AssociateTargetsWithJob est vérifiée chaque fois qu’une demande est faite d’associer les cibles.
iot:CancelJob CancelJob tâche Représente l’autorisation d’annuler une tâche. L’autorisation iot:CancelJob est vérifiée chaque fois qu’une demande est faite d’annuler une tâche.
iot:CancelJobExecution CancelJobExecution
  • tâche

  • thing

Représente l’autorisation d’annuler une exécution de tâche. L’autorisation iot: CancelJobExecution est vérifiée chaque fois qu’une demande est faite d’annuler une exécution de tâche.
iot:CreateJob CreateJob
  • tâche

  • thing

  • thinggroup

  • modèle de tâche

  • package

Représente l’autorisation de créer une tâche. L’autorisation iot: CreateJob est vérifiée chaque fois qu’une demande est faite de créer une tâche.
iot:CreateJobTemplate CreateJobTemplate
  • tâche

  • modèle de tâche

  • package

Représente l’autorisation de créer un modèle de tâche. L’autorisation iot: CreateJobTemplate est vérifiée chaque fois qu’une demande est faite de créer un modèle de tâche.
iot:DeleteJob DeleteJob tâche Représente l’autorisation de supprimer une tâche. L’autorisation iot: DeleteJob est vérifiée chaque fois qu’une demande est faite de supprimer une tâche.
iot:DeleteJobTemplate DeleteJobTemplate modèle de tâche Représente l’autorisation de supprimer un modèle de tâche. L’autorisation iot: CreateJobTemplate est vérifiée chaque fois qu’une demande est faite de supprimer un modèle de tâche.
iot:DeleteJobExecution DeleteJobTemplate
  • tâche

  • thing

Représente l’autorisation de supprimer une exécution de tâche. L’autorisation iot: DeleteJobExecution est vérifiée chaque fois qu’une demande est faite de supprimer une exécution de tâche.
iot:DescribeJob DescribeJob tâche Représente l’autorisation de décrire une tâche. L’autorisation iot: DescribeJob est vérifiée chaque fois qu’une demande est faite de décrire une tâche.
iot:DescribeJobExecution DescribeJobExecution
  • tâche

  • thing

Représente l’autorisation de décrire une exécution de tâche. L’autorisation iot: DescribeJobExecution est vérifiée chaque fois qu’une demande est faite de décrire une exécution de tâche.
iot:DescribeJobTemplate DescribeJobTemplate modèle de tâche Représente l’autorisation de décrire un modèle de tâche. L’autorisation iot: DescribeJobTemplate est vérifiée chaque fois qu’une demande est faite de décrire un modèle de tâche.
iot:DescribeManagedJobTemplate DescribeManagedJobTemplate modèle de tâche Représente l’autorisation de décrire un modèle de tâche gérée. L’autorisation iot: DescribeManagedJobTemplate est vérifiée chaque fois qu’une demande est faite de décrire un modèle de tâche gérée.
iot:GetJobDocument GetJobDocument tâche Représente l’autorisation d’obtenir le document de tâche correspondant à une tâche. L’autorisation iot:GetJobDocument est vérifiée chaque fois qu’une demande est faite d’obtenir un document de tâche.
iot:ListJobExecutionsForJob ListJobExecutionsForJob tâche Représente l’autorisation de répertorier les exécutions de tâche d’une tâche. L’autorisation iot:ListJobExecutionsForJob est vérifiée chaque fois qu’une demande est faite de répertorier les exécutions d’une tâche.
iot:ListJobExecutionsForThing ListJobExecutionsForThing thing Représente l’autorisation de répertorier les exécutions de tâche d’une tâche. L’autorisation iot:ListJobExecutionsForThing est vérifiée chaque fois qu’une demande est faite de répertorier les exécutions d’un objet.
iot:ListJobs ListJobs none Représente l’autorisation de répertorier les tâches. L’autorisation iot:ListJobs est vérifiée chaque fois qu’une demande est faite de répertorier les tâches.
iot:ListJobTemplates ListJobTemplates none Représente l’autorisation de répertorier les modèles de tâche. L’autorisation iot:ListJobTemplates est vérifiée chaque fois qu’une demande est faite répertorier les modèles de tâche.
iot:ListManagedJobTemplates ListManagedJobTemplates none Représente l’autorisation de répertorier les modèles de tâches gérées. L’autorisation iot:ListManagedJobTemplates est vérifiée chaque fois qu’une demande est faite répertorier les modèles de tâche gérée.
iot:UpdateJob UpdateJob tâche Représente l’autorisation de mettre à jour une tâche. L’autorisation iot:UpdateJob est vérifiée chaque fois qu’une demande est faite de mettre une tâche.
iot:TagResource TagResource
  • tâche

  • modèle de tâche

  • thing

Octroie l'autorisation de baliser une ressource spécifique.
iot:UntagResource UntagResource
  • tâche

  • modèle de tâche

  • thing

Octroie l'autorisation d'annuler le balisage d'une ressource spécifique.

L’exemple suivant illustre une politique IAM qui autorise l’utilisateur à effectuer les actions suivantes pour votre objet et groupe d’objets IoT.

Dans l'exemple, remplacez :

  • regionavec votre Région AWS, par exempleus-east-1.

  • account-idavec votre Compte AWS numéro, par exemple57EXAMPLE833.

  • thing-group-nameavec le nom de votre groupe d'objets IoT pour lequel vous ciblez des emplois, tel queFirmwareUpdateGroup.

  • thing-nameavec le nom de l'objet IoT pour lequel vous ciblez des emplois, par exempleMyIoTThing.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iot:CreateJobTemplate", "iot:CreateJob", ], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thinggroup/thing-group-name" }, { "Action": [ "iot:DescribeJob", "iot:CancelJob", "iot:DeleteJob", ], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:job/*" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region:account-id:thing/thing-name" "arn:aws:iot:region:account-id:job/*" ] } ] }

Vous pouvez empêcher les principaux d’effectuer des appels d’API vers le point de terminaison de votre plan de contrôle à partir d’adresses IP spécifiques. Pour spécifier les adresses IP qui peuvent être autorisées, dans l’élément Condition de votre politique IAM, utilisez la clé de condition globale aws:SourceIp.

L'utilisation de cette clé de condition peut également empêcher d'autres Service AWS personnes d'effectuer ces appels d'API en votre nom, par exemple AWS CloudFormation. Pour autoriser l'accès à ces services, utilisez la clé de condition aws:ViaAWSServiceglobale associée à la SourceIp clé aws :. Cela garantit que la restriction d’accès à l’adresse IP source s’applique uniquement aux requêtes faites directement par un principal. Pour plus d'informations, voir AWS: Refuse l'accès à AWS en fonction de l'adresse IP source.

L’exemple suivant montre comment autoriser uniquement une adresse IP spécifique qui peut effectuer des appels d’API vers le point de terminaison du plan de contrôle. La clé aws:ViaAWSService est définie sur true, ce qui permet aux autres services d’effectuer des appels d’API en votre nom.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:CreateJobTemplate", "iot:CreateJob" ], "Resource": ["*"], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } }, "Bool": {"aws:ViaAWSService": "true"} } ], }

Politiques IAM sur le plan de données

Les politiques IAM sur le plan de données utilisent le préfixe iotjobsdata: pour autoriser les opérations d’API de tâches que les utilisateurs peuvent effectuer. Sur le plan de données, vous pouvez autoriser un utilisateur à utiliser l’API DescribeJobExecution en utilisant l’action de politique iotjobsdata:DescribeJobExecution.

Avertissement

L’utilisation de politiques IAM sur le plan de données n’est pas recommandée lorsque vous ciblez des tâches AWS IoT pour vos appareils. Nous vous recommandons d’utiliser des politiques IAM sur le plan de contrôle pour que les utilisateurs puissent créer et gérer des tâches. Sur le plan de données, pour autoriser les appareils à récupérer les exécutions de tâches et à mettre à jour le statut d’exécution, utilisez AWS IoT Core politiques pour le protocole HTTPS.

Les opérations d’API qui doivent être autorisées sont généralement effectuées en tapant des commandes CLI. L’exemple suivant un exemple d’un utilisateur exécutant une opération DescribeJobExecution.

Dans l'exemple, remplacez :

  • regionavec votre Région AWS, par exempleus-east-1.

  • account-idavec votre Compte AWS numéro, par exemple57EXAMPLE833.

  • thing-nameavec le nom de l'objet IoT pour lequel vous ciblez des emplois, par exemplemyRegisteredThing.

  • job-id est l’identifiant unique de la tâche ciblée à l’aide de l’API.

aws iot-jobs-data describe-job-execution \ --endpoint-url "https://account-id.jobs.iot.region.amazonaws.com" \ --job-id jobID --thing-name thing-name

Un exemple de politique IAM autorisant cette action est présenté ci-dessous :

JSON
{ "Version": "2012-10-17", "Statement": { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thing/thing-name", } }

Vous pouvez empêcher les principaux d’effectuer des appels d’API vers le point de terminaison de votre plan de données à partir d’adresses IP spécifiques. Pour spécifier les adresses IP qui peuvent être autorisées, dans l’élément Condition de votre politique IAM, utilisez la clé de condition globaleaws:SourceIp.

L'utilisation de cette clé de condition peut également empêcher d'autres Service AWS personnes d'effectuer ces appels d'API en votre nom, par exemple AWS CloudFormation. Pour autoriser l’accès à ces services, utilisez la clé de condition globale aws:ViaAWSService avec la clé de condition aws:SourceIp. Cela garantit que la restriction d’accès à l’adresse IP ne s’applique qu’aux demandes directement effectuées par le principal. Pour plus d'informations, voir AWS: Refuse l'accès à AWS en fonction de l'adresse IP source.

L’exemple suivant montre comment autoriser uniquement une adresse IP spécifique qui peut effectuer des appels d’API vers le point de terminaison du plan de données.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iotjobsdata:*"], "Resource": ["*"], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } }, "Bool": {"aws:ViaAWSService": "false"} } ], }

L’exemple suivant montre comment empêcher des adresses IP ou des plages d’adresses spécifiques d’effectuer des appels d’API vers le point de terminaison du plan de données.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": ["iotjobsdata:*"], "Condition": { "IpAddress": { "aws:SourceIp": [ "123.45.167.89", "192.0.2.0/24", "203.0.113.0/24" ] } }, "Resource": ["*"], } ], }

Si vous effectuez une opération d’API à la fois sur le plan de contrôle et sur le plan de données, votre action de politique du plan de contrôle doit utiliser le préfixe iot:, et votre action de stratégie de plan de données doit utiliser le préfixe iotjobsdata:.

Par exemple, l’API DescribeJobExecution peut être utilisée à la fois dans le plan de contrôle et dans le plan de données. Sur le plan de contrôle, l'DescribeJobExecutionAPI est utilisée pour décrire l'exécution d'une tâche. Sur le plan de données, l' DescribeJobExecutionAPI est utilisée pour obtenir les détails de l'exécution d'une tâche.

La politique IAM suivante autorise un utilisateur à utiliser l’API DescribeJobExecution à la fois sur le plan de contrôle et sur le plan de données.

Dans l'exemple, remplacez :

  • regionavec votre Région AWS, par exempleus-east-1.

  • account-idavec votre Compte AWS numéro, par exemple57EXAMPLE833.

  • thing-nameavec le nom de l'objet IoT pour lequel vous ciblez des emplois, par exempleMyIoTThing.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thing/thing-name" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region:account-id:thing/thing-name" "arn:aws:iot:region:account-id:job/*" ] } ] }

Autoriser le balisage des ressources IoT

Pour mieux contrôler les tâches et les modèles de tâches que vous pouvez créer, modifier ou utiliser, vous pouvez associer des balises aux tâches ou aux modèles de tâches. Les balises vous aident également à identifier les propriétaires et à attribuer et répartir les coûts en les plaçant dans des groupes de facturation et en y attachant des balises.

Lorsqu'un utilisateur souhaite baliser ses tâches ou les modèles de tâches qu'il a créés à l'aide du AWS Management Console ou du AWS CLI, votre politique IAM doit autoriser l'utilisateur à les baliser. Pour accorder des autorisations, votre politique IAM doit utiliser l’action iot:TagResource.

Note

Si votre politique IAM n’inclut pas l’action iot:TagResource, toute CreateJob ou CreateJobTemplatecontenant une balise renverra une erreur AccessDeniedException.

Lorsque vous souhaitez étiqueter vos tâches ou les modèles de tâches que vous avez créés à l'aide du AWS Management Console ou du AWS CLI, votre politique IAM doit autoriser ces tâches. Pour accorder des autorisations, votre politique IAM doit utiliser l’action iot:TagResource.

Pour obtenir des informations générales sur le balisage des ressources, veuillez consulter Marquer vos ressources AWS IoT.

Reportez-vous aux exemples de politique IAM suivants octroyant des autorisations de balisage :

Exemple 1

Utilisateur qui exécute la commande suivante pour créer une tâche et l’associer à un environnement spécifique.

Dans cet exemple, remplacez :

  • regionavec votre Région AWS, par exempleus-east-1.

  • account-idavec votre Compte AWS numéro, par exemple57EXAMPLE833.

  • thing-nameavec le nom de l'objet IoT pour lequel vous ciblez des emplois, par exempleMyIoTThing.

aws iot create-job --job-id test_job --targets "arn:aws:iot:region:account-id:thing/thingOne" --document-source "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json" --description "test job description" --tags Key=environment,Value=beta

Pour cet exemple, vous devez utiliser la politique IAM suivante :

JSON
{ "Version": "2012-10-17", "Statement": { "Action": [ "iot:CreateJob", "iot:CreateJobTemplate", "iot:TagResource" ], "Effect": "Allow", "Resource": [ "arn:aws:iot:aws-region:account-id:job/*", "arn:aws:iot:aws-region:account-id:jobtemplate/*" ] } }