Exemples de stratégie de publication/abonnement - 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.

Exemples de stratégie de publication/abonnement

La politique que vous utilisez dépend de la façon dont vous vous connectez AWS IoT Core. Vous pouvez vous connecter à AWS IoT Core l'aide d'un MQTT clientHTTP, ou WebSocket. Lorsque vous vous connectez à un MQTT client, vous vous authentifiez à l'aide d'un certificat X.509. Lorsque vous vous connectez via HTTP le WebSocket protocole, vous vous authentifiez avec Signature Version 4 et Amazon Cognito.

Note

Pour les appareils enregistrés, nous vous recommandons d'utiliser des variables de stratégie d'objet pour les Connect actions et d'attacher l'objet au principal utilisé pour la connexion.

Utilisation de caractères génériques dans les MQTT politiques AWS IoT Core

MQTTet AWS IoT Core les politiques comportent des caractères génériques différents et vous devez les choisir après mûre réflexion. DansMQTT, les caractères génériques + et # sont utilisés dans les filtres de MQTT sujets pour s'abonner à plusieurs noms de sujets. AWS IoT Core les politiques utilisent * et ? comme caractères génériques et respectent les conventions des IAMpolitiques. Dans un document de stratégie, le * représente n'importe quelle combinaison de caractères et un point d'interrogation ? représente n'importe quel caractère unique. Dans les documents de politique, les caractères MQTT génériques + et C # sont traités comme des caractères sans signification particulière. Pour décrire plusieurs noms de sujets et filtres de sujets dans l'resourceattribut d'une politique, utilisez les caractères ? génériques * et à la place des caractères MQTT génériques.

Lorsque vous choisissez les caractères génériques à utiliser dans un document de politique, considérez que le * caractère n'est pas limité à un seul niveau de sujet. Le + personnage est limité à un seul niveau de sujet dans un filtre de MQTT sujet. Pour limiter une spécification générique à un seul niveau de filtre de MQTT rubrique, pensez à utiliser plusieurs ? caractères. Pour plus d'informations sur l'utilisation de caractères génériques dans une ressource de politique et d'autres exemples de leurs correspondances, consultez la section Utilisation de caractères génériques dans une ressource. ARNs

Le tableau ci-dessous indique les différents caractères génériques utilisés MQTT et les AWS IoT Core politiques applicables aux MQTT clients.

Caractère générique Est un MQTT caractère joker Exemple dans MQTT Est-ce un caractère générique de la AWS IoT Core politique Exemple de AWS IoT Core politiques pour les MQTT clients
# Oui some/# Non N/A
+ Oui some/+/topic Non N/A
* Non N/A Oui

topicfilter/some/*/topic

topicfilter/some/sensor*/topic

? Non N/A Oui

topic/some/?????/topic

topicfilter/some/sensor???/topic

Politiques pour publier, s'abonner et recevoir des messages vers/depuis des rubriques spécifiques

Ce qui suit montre des exemples d'appareils enregistrés et non enregistrés pour publier, s'abonner et recevoir des messages vers/depuis le sujet nommé « some_special_topic ». Les exemples soulignent également cela Publish et Receive utilisent « topic » comme ressource, ainsi que « topicfilter » comme ressource.

Registered devices

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils dont le nom clientId correspond au nom d'un objet figurant dans le registre de se connecter. Il fournit également des autorisations Publish, Subscribe et des autorisations Receive pour l’objet nommé « some_special_topic ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic" ] } ] }
Unregistered devices

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils de se connecter en utilisant clientId 1, clientId 2 ou clientId 3. Il fournit également des autorisations Publish, Subscribe et des autorisations Receive pour l’objet nommé « some_special_topic ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic" ] } ] }

Politiques pour publier, s'abonner et recevoir des messages vers/depuis des rubriques avec un préfixe spécifique

Ce qui suit montre des exemples d'appareils enregistrés et non enregistrés pour publier, s'abonner et recevoir des messages vers/depuis des sujets préfixés par « topic_prefix ».

Note

Notez l'utilisation du caractère générique * dans cet exemple. Bien qu'il * soit utile de fournir des autorisations pour plusieurs noms de sujets dans une seule déclaration, cela peut avoir des conséquences imprévues en octroyant plus de privilèges aux appareils que ce qui est nécessaire. Nous vous recommandons donc de n'utiliser le caractère générique qu'*après mûre réflexion.

Registered devices

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils dont le nom clientId correspond au nom d'un objet figurant dans le registre de se connecter. Il fournit également des autorisations Publish, Subscribe et des autorisations Receive pour les sujets préfixés par « topic_prefix ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*" ] } ] }
Unregistered devices

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils de se connecter en utilisant clientId 1, clientId 2 ou clientId 3. Il fournit également des autorisations Publish, Subscribe et des autorisations Receive pour les sujets préfixés par « topic_prefix ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*" ] } ] }

Politiques pour publier, s'abonner et recevoir des messages vers/depuis des rubriques spécifiques à chaque appareil

Ce qui suit montre des exemples d'appareils enregistrés et non enregistrés pour publier, s'abonner et recevoir des messages vers/depuis des rubriques spécifiques à l'appareil donné.

Registered devices

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils dont le nom clientId correspond au nom d'un objet figurant dans le registre de se connecter. Il donne l'autorisation de publier sur de rubrique spécifique à l'objet (sensor/device/${iot:Connection.Thing.ThingName}), ainsi que de s'abonner et de recevoir du sujet spécifique à l'objet (command/device/${iot:Connection.Thing.ThingName}). Si le nom de l'objet dans le registre est « objet 1 », l'appareil pourra publier dans la rubrique « capteur/appareil/objet 1 ». L'appareil pourra également s'abonner à la rubrique « commande/appareil/objet1 » et recevoir des informations à partir de ce sujet.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}" ] } ] }
Unregistered devices

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils de se connecter en utilisant clientId 1, clientId 2 ou clientId 3. Il donne l'autorisation de publier sur de rubrique spécifique au client (sensor/device/${iot:ClientId}), ainsi que de s'abonner et de recevoir de rubrique spécifique au client (command/device/${iot:ClientId}). Si l'appareil se connecte en clientId tant que clientId 1, il pourra publier dans la rubrique « capteur/appareil/1"clientId. L'appareil pourra également s'abonner au sujet et en recevoirdevice/clientId1/command.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}" ] } ] }

Politiques pour publier, s'abonner et recevoir des messages vers/depuis des rubriques avec l'attribut objet dans le nom

Ce qui suit montre un exemple d'appareils enregistrés pour publier, s'abonner et recevoir des messages vers/depuis des rubriques dont les noms incluent des attributs d'objet.

Note

Les attributs d'objet n'existent que pour les appareils enregistrés dans AWS IoT Core le registre. Il n'existe pas d'exemple correspondant pour les appareils non enregistrés.

Registered devices

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils dont le nom clientId correspond au nom d'un objet figurant dans le registre de se connecter. Il donne l'autorisation de publier sur la rubrique (sensor/${iot:Connection.Thing.Attributes[version]}), de s'abonner et de recevoir de la rubrique (command/${iot:Connection.Thing.Attributes[location]}) où le nom inclut des attributs d'objet. Si le nom de l'objet indiqué dans le registre est « version=v1 et »location=Seattle, l'appareil pourra publier sur le sujet « sensor/v1 », s'abonner au sujet « Command/Seattle » et recevoir des informations à partir de ce sujet.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/sensor/${iot:Connection.Thing.Attributes[version]}" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/command/${iot:Connection.Thing.Attributes[location]}" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/command/${iot:Connection.Thing.Attributes[location]}" ] } ] }
Unregistered devices

Comme les attributs d'objet n'existent que pour les appareils enregistrés dans AWS IoT Core le registre, il n'existe aucun exemple correspondant pour les objets non enregistrés.

Politiques pour refuser la publication de messages dans les sous-thèmes d'un nom de la rubrique

Ce qui suit montre des exemples d'appareils enregistrés et non enregistrés pour publier des messages sur toutes les rubriques, à l'exception de certaines sous-rubriques.

Registered devices

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils dont le nom clientId correspond au nom d'un objet figurant dans le registre de se connecter. Il donne l'autorisation de publier sur tous les rubriques précédées du préfixe « department/ », mais pas sur la sous-rubrique « department/admins ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/department/*" ] }, { "Effect": "Deny", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/department/admins" ] } ] }
Unregistered devices

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils de se connecter en utilisant clientId 1, clientId 2 ou clientId 3. Il donne l'autorisation de publier sur tous les rubriques précédées du préfixe « department/ », mais pas sur la sous-rubrique « department/admins ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/department/*" ] }, { "Effect": "Deny", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/department/admins" ] } ] }

Politiques pour refuser la réception de messages provenant de sous-rubriques d'un nom d’objet

Ce qui suit montre des exemples d'appareils enregistrés et non enregistrés pour s'abonner et recevoir des messages de rubriques avec des préfixes spécifiques, à l'exception de certains sous-rubriques.

Registered devices

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils dont le nom clientId correspond au nom d'un objet figurant dans le registre de se connecter. La stratégie permet aux appareils de s'abonner à n'importe quel sujet portant le préfixe « topic_prefix ». En utilisant NotResource dans l'instruction pour iot:Receive, nous permettons à l'appareil de recevoir des messages de toutes les rubriques auxquels l'appareil est abonné, à l'exception des rubriques préfixées par « topic_prefix/restricted ». Par exemple, avec cette stratégie, les appareils peuvent s'abonner à « topic_prefix/topic1 » et même à « topic_prefix/restricted ». Cependant, ils ne recevront que les messages de la rubrique « topic_prefix/topic1 » et aucun message de la rubrique « topic_prefix/restricted ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*" }, { "Effect": "Allow", "Action": "iot:Receive", "NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*" } ] }
Unregistered devices

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils de se connecter en utilisant clientId 1, clientId 2 ou clientId 3. La stratégie permet aux appareils de s'abonner à n'importe quel sujet portant le préfixe « topic_prefix ». En utilisant NotResource dans l'instruction pour iot:Receive, nous permettons à l'appareil de recevoir des messages de toutes les rubriques auxquels l'appareil est abonné, à l'exception des rubriques préfixées par « topic_prefix/restricted ». Par exemple, avec cette politique, les appareils peuvent s'abonner à « topic_prefix/topic1 » et même à « topic_prefix/restricted ». Cependant, ils ne recevront que les messages du sujet « topic_prefix/topic1 » et aucun message du sujet « topic_prefix/restricted ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*" }, { "Effect": "Allow", "Action": "iot:Receive", "NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*" } ] }

Politiques relatives à l'abonnement à des sujets utilisant des MQTT caractères génériques

MQTTles caractères génériques + et # sont traités comme des chaînes littérales, mais ils ne sont pas traités comme des caractères génériques lorsqu'ils sont utilisés dans les politiques. AWS IoT Core InMQTT, + et # sont traités comme des caractères génériques uniquement lors de l'abonnement à un filtre de rubrique, mais comme une chaîne littérale dans tous les autres contextes. Nous vous recommandons de n'utiliser ces MQTT caractères génériques que dans le cadre des AWS IoT Core politiques après mûre réflexion.

Vous trouverez ci-dessous des exemples d'objets enregistrés et non enregistrés utilisant des MQTT caractères génériques dans AWS IoT Core les politiques. Ces caractères génériques sont traités comme des chaînes littérales.

Registered devices

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils dont le nom clientId correspond au nom d'un objet figurant dans le registre de se connecter. La stratégie permet aux appareils de s'abonner aux rubriques « département/+/employés » et « emplacement/# ». Dans la mesure où + et # sont traités comme des chaînes littérales dans AWS IoT Core les politiques, les appareils peuvent s'abonner à la rubrique « département/+/employés » mais pas à la rubrique « département/ingénierie/employés ». De même, les appareils peuvent s'abonner à la rubrique « location/# » mais pas à la rubrique « location/Seattle ». Cependant, une fois que l'appareil s'abonne à la rubrique « département/+/employés », la politique lui permettra de recevoir des messages de la rubrique « département/ingénierie/employés ». De même, une fois que l'appareil s'abonne à la rubrique « location/# », il recevra également des messages de la rubrique « location/Seattle ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-east-1:123456789012:topic/*" } ] }
Unregistered devices

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante permet aux appareils de se connecter en utilisant clientId 1, clientId 2 ou clientId 3. La stratégie permet aux appareils de s'abonner aux rubriques « département/+/employés » et « emplacement/# ». Dans la mesure où + et # sont traités comme des chaînes littérales dans AWS IoT Core les politiques, les appareils peuvent s'abonner à la rubrique « département/+/employés » mais pas à la rubrique « département/ingénierie/employés ». De même, les appareils peuvent s'abonner à la rubrique « location/# » mais pas « location/Seattle ». Cependant, une fois que l'appareil s'abonne à la rubrique « département/+/employés », la stratégie lui permettra de recevoir des messages de la rubrique « département/ingénierie/employés ». De même, une fois que l'appareil s'abonne à la rubrique « location/# », il recevra également des messages de la rubrique « location/Seattle ».

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-east-1:123456789012:topic/*" } ] }

Politiques pour HTTP et WebSocket clients

Lorsque vous vous connectez via HTTP le WebSocket protocole, vous vous authentifiez avec Signature Version 4 et Amazon Cognito. Les identités Amazon Cognito peuvent être authentifiées ou non. Les identités authentifiées appartiennent aux utilisateurs authentifiés par tout fournisseur d'identité pris en charge. Les identités non authentifiées appartiennent généralement à des utilisateurs invités qui ne s'authentifient pas auprès d'un fournisseur d'identité. Amazon Cognito fournit un identifiant unique et des informations d' AWS identification pour prendre en charge les identités non authentifiées. Pour de plus amples informations, veuillez consulter Autorisation avec les identités Amazon Cognito.

Pour les opérations suivantes, AWS IoT Core utilise AWS IoT Core les politiques associées aux identités Amazon Cognito via le. AttachPolicy API Cela permet de définir les autorisations associées au pool d'identités Amazon Cognito avec des identités authentifiées.

  • iot:Connect

  • iot:Publish

  • iot:Subscribe

  • iot:Receive

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Cela signifie qu'une identité Amazon Cognito doit être autorisée par la politique de IAM rôle et la AWS IoT Core politique. Vous attachez la politique de IAM rôle au pool et la AWS IoT Core politique à l'identité Amazon Cognito via le. AWS IoT Core AttachPolicy API

Les utilisateurs authentifiés et non authentifiés sont des types d'identité différents. Si vous n'associez aucune AWS IoT politique à l'identité Amazon Cognito, un utilisateur authentifié ne parvient pas à s'authentifier AWS IoT et n'a pas accès aux AWS IoT ressources et aux actions.

Note

Pour les autres AWS IoT Core opérations ou pour les identités non authentifiées, AWS IoT Core ne limite pas les autorisations associées au rôle de pool d'identités Amazon Cognito. Pour les identités authentifiées et non authentifiées, c'est la stratégie la plus permissive que nous vous recommandons d'attacher au rôle de réserve d'identités Amazon Cognito.

HTTP

Pour autoriser les identités Amazon Cognito non authentifiées à publier des messages HTTP sur un sujet spécifique à l'identité Amazon Cognito, associez la politique suivante IAM au rôle du pool d'identités Amazon Cognito :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"] } ] }

Pour autoriser les utilisateurs authentifiés, associez la politique précédente au rôle de pool Amazon Cognito Identity et à l'identité Amazon Cognito à l'aide du. AWS IoT Core AttachPolicyAPI

Note

Lorsque vous autorisez les identités Amazon Cognito AWS IoT Core , prenez en compte les deux politiques et accordez le minimum de privilèges spécifié. Une action n'est autorisée que si les deux stratégies autorisent l'action demandée. Si l'une des politiques empêche une action, cette action n'est pas autorisée.

MQTT

Pour autoriser les identités Amazon Cognito non authentifiées à MQTT publier des messages WebSocket sur un sujet spécifique à l'identité Amazon Cognito de votre compte, associez la politique suivante au rôle du pool IAM d'identités Amazon Cognito :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${cognito-identity.amazonaws.com:sub}"] } ] }

Pour autoriser les utilisateurs authentifiés, associez la politique précédente au rôle de pool Amazon Cognito Identity et à l'identité Amazon Cognito à l'aide du. AWS IoT Core AttachPolicyAPI

Note

Lorsque vous autorisez les identités Amazon Cognito AWS IoT Core , prenez en compte les deux et accordez le minimum de privilèges spécifié. Une action n'est autorisée que si les deux stratégies autorisent l'action demandée. Si l'une des politiques empêche une action, cette action n'est pas autorisée.