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 IAM politiques à la fois sur le plan de contrôle et sur le plan de données. Les politiques doivent être utilisées avec le HTTPS protocole et doivent utiliser l'authentification AWS Signature Version 4 (port 443) pour authentifier les utilisateurs.

Note

AWS IoT Core les politiques ne doivent pas être utilisées sur le plan de contrôle. Seules IAM les politiques 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.

IAMles politiques sont JSON des documents 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 plus d'informations, reportez-vous à la section Référence des éléments de IAM JSON politique dans le guide de IAM l'utilisateur.

Avertissement

Nous vous recommandons de ne pas utiliser d'autorisations génériques, comme "Action": ["iot:*"] dans vos IAM politiques ou AWS IoT Core politiques. 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.

IAMpolitiques sur le plan de contrôle

Sur le plan de contrôle, IAM les politiques utilisent le iot: préfixe associé à l'action pour autoriser l'APIopération des tâches correspondantes. Par exemple, l'action iot:CreateJob stratégique accorde à l'utilisateur l'autorisation d'utiliser le CreateJobAPI.

Le tableau suivant présente une liste des actions de IAM stratégie et des autorisations permettant d'utiliser ces API actions. 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.

IAMactions politiques sur le plan de contrôle
Actions de politique APIopération 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 montre une IAM politique qui autorise l'utilisateur à effectuer les actions suivantes pour votre objet et votre groupe d'objets IoT.

Dans l'exemple, remplacez :

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

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

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

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

{ "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 de passer des API appels 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 IAM politique, utilisez la clé de condition aws:SourceIpglobale.

L'utilisation de cette clé de condition peut également empêcher d'autres AWS service personnes de API passer ces appels 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 API appels vers le point de terminaison du plan de contrôle. La aws:ViaAWSService touche est réglée surtrue, ce qui permet aux autres services de passer des API appels en votre nom.

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

IAMpolitiques relatives au plan de données

IAMles politiques du plan de données utilisent le iotjobsdata: préfixe pour autoriser les tâches API que les utilisateurs peuvent effectuer. Sur le plan de données, vous pouvez autoriser un utilisateur à utiliser le DescribeJobExecutionAPIen utilisant l'action iotjobsdata:DescribeJobExecution de politique.

Avertissement

L'utilisation IAM de politiques sur le plan de données n'est pas recommandée lorsque vous ciblez des AWS IoT tâches pour vos appareils. Nous vous recommandons d'utiliser des IAM politiques sur le plan de contrôle pour permettre aux utilisateurs de créer et de 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 relatives au HTTPS protocole.

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

Dans l'exemple, remplacez :

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

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

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

  • job-idest l'identifiant unique de la tâche ciblée à l'aide duAPI.

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

Voici un exemple de IAM politique qui autorise cette action :

{ "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 de passer des API appels 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 IAM politique, utilisez la clé de condition aws:SourceIpglobale.

L'utilisation de cette clé de condition peut également empêcher d'autres AWS service personnes de API passer ces appels 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 API appels vers le point de terminaison du plan de données.

{ "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 API appels vers le point de terminaison du plan de données.

{ "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 API opération à 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 iot: préfixe, et votre action de stratégie de plan de données doit utiliser le iotjobsdata: préfixe.

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

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

Dans l'exemple, remplacez :

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

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

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

{ "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 étiqueter 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 IAM politique doit autoriser l'utilisateur à les baliser. Pour accorder des autorisations, votre IAM politique doit utiliser l'iot:TagResourceaction.

Note

Si votre IAM politique n'inclut pas l'iot:TagResourceaction, toute action CreateJobou toute action CreateJobTemplatecomportant une balise renverra une AccessDeniedException erreur.

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 IAM politique doit autoriser ces tâches. Pour accorder des autorisations, votre IAM politique doit utiliser l'iot:TagResourceaction.

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

Reportez-vous aux exemples de IAM politiques suivants accordant 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 :

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

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

  • thing-name avec 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/my-s3-bucket/job-document.json" --description "test job description" --tags Key=environment,Value=beta

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

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