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 client MQTT, HTTP ou WebSocket. Lorsque vous vous connectez à un client MQTT, vous vous authentifiez avec un certificat X.509. Lorsque vous vous connectez via HTTP ou 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 MQTT et les politiques AWS IoT Core

Le MQTT et AWS IoT Core les politiques ont des caractères génériques différents et vous devez les choisir après mûre réflexion. Dans MQTT, les caractères génériques + et C # sont utilisés dans les filtres de sujets MQTT 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 politiques IAM. 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 stratégie, les caractères génériques MQTT + et # sont traités comme des caractères sans signification particulière. Pour décrire plusieurs noms de rubrique et filtres de rubrique dans l'attribut d'une stratégie resource, utilisez les caractères génériques * et ? à la place des caractères génériques MQTT.

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 sujet MQTT. Pour limiter une spécification générique à un seul niveau de filtre de rubrique MQTT, envisagez d'utiliser plusieurs caractères ?. Pour plus d’informations sur l’utilisation de caractères génériques dans une ressource de stratégie et d’autres exemples de ce à quoi ils correspondent, consultez Utilisation de caractères génériques dans les ARN de ressources.

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

Caractère générique Est-ce un caractère générique MQTT 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 clients MQTT
# 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 de se connecter avec un ClientiD qui correspond au nom d'un objet dans le registre. 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 ClientID1, ClientID2 ou ClientID3. 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 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 de se connecter avec un ClientiD qui correspond au nom d'un objet dans le registre. 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 ClientID1, ClientID2 ou ClientID3. 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 de se connecter avec un ClientiD qui correspond au nom d'un objet dans le registre. 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 en recevoir.

{ "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 ClientID1, ClientID2 ou ClientID3. 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 avec ClientID en tant que ClientID1, il pourra publier dans la rubrique « Sensor/Device/ClientID1". 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 de se connecter avec un ClientiD qui correspond au nom d'un objet dans le registre. 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 en recevoir.

{ "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 de se connecter avec un ClientiD qui correspond au nom d'un objet dans le registre. 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 ClientID1, ClientID2 ou ClientID3. 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 de se connecter avec un ClientiD qui correspond au nom d'un objet dans le registre. 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 ClientID1, ClientID2 ou ClientID3. 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 d'abonnement à des rubriques utilisant des caractères génériques MQTT

Les caractères génériques MQTT + et # sont traités comme des chaînes littérales, mais ils ne le sont pas lorsqu'ils sont utilisés dans des politiques. AWS IoT Core Dans MQTT, + et # sont traités comme des caractères génériques uniquement lors de l'abonnement à un filtre d’objet, mais comme une chaîne littérale dans tous les autres contextes. Nous vous recommandons de n'utiliser ces caractères génériques MQTT 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 caractères génériques MQTT dans les politiques. AWS IoT Core 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 de se connecter avec un ClientiD qui correspond au nom d'un objet dans le registre. 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 ClientID1, ClientID2 ou ClientID3. 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 relatives au protocole HTTP et WebSocket aux clients

Lorsque vous vous connectez via HTTP ou 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 plus d’informations, consultez Autorisation avec les identités Amazon Cognito.

Pour les opérations suivantes, AWS IoT Core utilise des AWS IoT Core politiques associées aux identités Amazon Cognito via l'AttachPolicyAPI. 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 rôle IAM et la politique. AWS IoT Core Vous attachez la politique de rôle IAM au pool et la AWS IoT Core politique à Amazon Cognito Identity via AWS IoT Core AttachPolicy l'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 via HTTP sur une rubrique spécifique à l'identité Amazon Cognito, attachez la politique IAM suivante au rôle de réserve 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 à Amazon Cognito Identity à l'aide de l'API. AWS IoT Core AttachPolicy

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 à publier des messages MQTT WebSocket sur un sujet spécifique à l'identité Amazon Cognito de votre compte, associez la politique IAM suivante 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}"] }, { "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 à Amazon Cognito Identity à l'aide de l'API. AWS IoT Core AttachPolicy

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.