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.
Publish/Subscribe exemples de politiques
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 à l'aide d'un X.509 certificat. Lorsque vous vous connectez via HTTP ou via le WebSocket protocole, vous vous authentifiez avec Signature Version 4 et Amazon Cognito.
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 AWS IoT Core politiques
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 # sont utilisés dans + les filtres thématiques MQTT pour s'abonner à plusieurs noms de sujets. AWS IoT Core les politiques utilisent * et ? comme caractères génériques et suivent 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, tenez compte du fait que le * caractère n'est pas limité à un seul niveau de rubrique. Le + personnage est limité à un seul niveau de sujet dans un filtre thématique 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 que AWS IoT Core la politique est un caractère générique |
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 relatives à la publication, à l'abonnement et à la réception de messages sur to/from des sujets spécifiques
Vous trouverez ci-dessous des exemples d'appareils enregistrés et non enregistrés pour publier, s'abonner et recevoir des messages sur to/from la rubrique intitulée « some_specific_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 identifiant client correspondant au nom d'un élément du 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 à l'aide de 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 relatives à la publication, à l'abonnement et à la réception de to/from sujets de messages avec un préfixe spécifique
Vous trouverez ci-dessous des exemples d'appareils enregistrés et non enregistrés pour publier, s'abonner et recevoir des to/from sujets de messages préfixés par « topic_prefix ».
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 instruction, cela peut avoir des conséquences imprévues en accordant plus de privilèges que nécessaire aux appareils. 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 identifiant client correspondant au nom d'un élément du 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 à l'aide de 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 relatives à la publication, à l'abonnement et à la réception de messages, to/from sujets spécifiques à chaque appareil
Vous trouverez ci-dessous des exemples d'appareils enregistrés et non enregistrés pour publier, s'abonner et recevoir des to/from sujets de messages 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 identifiant client correspondant au nom d'un élément du 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 « thing1 », l'appareil pourra publier dans la rubrique « sensor/device /thing1 ». L'appareil pourra également s'abonner à la rubrique « command/device /thing1 » et recevoir des informations à 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 à l'aide de 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 à ClientID en tant que ClientId1, il pourra publier dans la rubrique « /ClientId1 ». sensor/device L'appareil pourra également s'abonner au sujet et recevoir des informations à ce sujetdevice/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 relatives à la publication, à l'abonnement et à la réception de messages to/from avec un attribut thing dans le nom du sujet
Voici un exemple permettant aux appareils enregistrés de publier, d'abonner et de recevoir des to/from sujets de messages dont les noms incluent des attributs d'objet.
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 identifiant client correspondant au nom d'un élément du 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 dans le registre comporte « version=v1 et »location=Seattle, l'appareil pourra publier dans la rubrique sensor/v1 « », s'abonner à la rubrique « command/Seattle » et recevoir des informations à 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'objets n'existent que pour les appareils enregistrés dans AWS IoT Core le registre, il n'existe pas d'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 identifiant client correspondant au nom d'un élément du registre. Il permet de publier sur tous les sujets dont le préfixe est « département/ », mais pas sur le sous-thème « 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 à l'aide de ClientID1, ClientID2 ou ClientID3. Il permet de publier sur tous les sujets dont le préfixe est « département/ », mais pas sur le sous-thème « 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 identifiant client correspondant au nom d'un élément du registre. La stratégie permet aux appareils de s'abonner à n'importe quel sujet portant le préfixe « topic_prefix ». NotResourceEn utilisant dans l'instruction foriot:Receive, nous autorisons l'appareil à recevoir des messages provenant de tous les sujets auxquels l'appareil est abonné, à l'exception des sujets préfixés par « topic_prefix/restricted ». Par exemple, avec cette politique, les appareils peuvent s'abonner à topic_prefix/topic1 « » et même à topic_prefix/restricted « », mais ils ne recevront que des 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/${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 à l'aide de ClientID1, ClientID2 ou ClientID3. La stratégie permet aux appareils de s'abonner à n'importe quel sujet portant le préfixe « topic_prefix ». NotResourceEn utilisant dans l'instruction foriot:Receive, nous autorisons l'appareil à recevoir des messages provenant de tous les sujets auxquels l'appareil est abonné, à l'exception des sujets préfixés 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 des 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 sont pas traités comme des caractères génériques lorsqu'ils sont utilisés dans les 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 dans le cadre de vos AWS IoT Core politiques qu'après mûre réflexion.
Vous trouverez ci-dessous des exemples d'éléments 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 identifiant client correspondant au nom d'un élément du registre. La stratégie permet aux appareils de s'abonner aux rubriques « département/+/employés » et « emplacement/# ». Comme + et # sont traités comme des chaînes littérales dans AWS IoT Core les politiques, les appareils peuvent s'abonner à la rubrique « department/+/employees » mais pas à la rubrique « /employees ». department/engineering De même, les appareils peuvent s'abonner à la rubrique « localisation/# » mais pas à la rubrique « »location/Seattle. Cependant, une fois que l'appareil est abonné à la rubrique « département/+/employés », la politique lui permet de recevoir des messages provenant de la rubrique « /employés ». department/engineering De même, une fois que l'appareil est abonné à la rubrique « localisation/# », il reçoit également des messages provenant 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 à l'aide de ClientID1, ClientID2 ou ClientID3. La stratégie permet aux appareils de s'abonner aux rubriques « département/+/employés » et « emplacement/# ». Comme + et # sont traités comme des chaînes littérales dans AWS IoT Core les politiques, les appareils peuvent s'abonner à la rubrique « department/+/employees » mais pas à la rubrique « /employees ». department/engineering De même, les appareils peuvent s'abonner à la rubrique « localisation/# » mais pas à « location/Seattle ». Cependant, une fois que l'appareil est abonné à la rubrique « département/+/employés », la politique lui permet de recevoir des messages provenant de la rubrique « /employés ». department/engineering De même, une fois que l'appareil est abonné à la rubrique « localisation/# », il reçoit également des messages provenant 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 via 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 et des informations d' AWS identification uniques 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 des AWS IoT Core politiques associées aux identités Amazon Cognito via l'AttachPolicyAPI. Cela limite 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 a besoin de l'autorisation de la politique de rôle IAM et de la AWS IoT Core politique. Vous associez la politique de rôle IAM au pool et la AWS IoT Core politique à Amazon Cognito Identity via l' AWS IoT Core
AttachPolicyAPI.
Les utilisateurs authentifiés et non authentifiés sont des types d'identité différents. Si vous n'associez aucune AWS IoT politique à Amazon Cognito Identity, un utilisateur authentifié ne parvient pas à s'authentifier AWS IoT et n'a pas accès aux AWS IoT ressources et aux actions.
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
Lorsque vous autorisez les identités Amazon Cognito, tenez AWS IoT Core compte des deux politiques et accordez le minimum de privilèges spécifiés. 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 dans votre compte, associez la politique IAM suivante au rôle de pool Amazon Cognito Identity :
-
{
"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
Lorsque vous autorisez les identités Amazon Cognito, prenez en AWS IoT Core compte les deux et accordez le moins de privilèges spécifiés. 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.