

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.

# Autorisation
<a name="iot-authorization"></a>

L'autorisation est le processus d'octroi d'autorisations à une identité authentifiée. Vous accordez des autorisations d' AWS IoT Core utilisation AWS IoT Core et des politiques IAM. Cette rubrique couvre les stratégies AWS IoT Core . Pour plus d'informations sur les politiques IAM, consultez [Gestion des identités et des accès pour AWS IoT](security-iam.md) et [Comment AWS IoT fonctionne avec IAM](security_iam_service-with-iam.md).

AWS IoT Core les politiques déterminent ce que peut faire une identité authentifiée. Une identité authentifiée peut être utilisée par des appareils, des applications mobiles, des applications web et des applications de bureau. Une identité authentifiée peut même être un utilisateur qui saisit des commandes AWS IoT Core CLI. Une identité ne peut exécuter AWS IoT Core des opérations que si elle dispose d'une politique qui lui accorde l'autorisation de ces opérations.

Les AWS IoT Core politiques et les politiques IAM sont utilisées AWS IoT Core pour contrôler les opérations qu'une identité (également appelée *principal*) peut effectuer. Le type de politique que vous utilisez dépend du type d'identité que vous utilisez pour vous authentifier. AWS IoT Core

AWS IoT Core les opérations sont divisées en deux groupes : 
+ L'API de plan de contrôle vous permet d'effectuer des tâches administratives telles que la création ou la mise à jour de certificats, d'objets, de règles, etc.
+ L'API du plan de données vous permet d'envoyer des données vers et de recevoir des données depuis AWS IoT Core. 

Le type de stratégie que vous utilisez varie selon que vous utilisez l'API de plan de contrôle ou l'API de plan de données.

Le tableau suivant présente les différents types d'identité, les protocoles qu'ils utilisent, ainsi que les types de stratégie qui peuvent être utilisés à des fins d'autorisation.


**AWS IoT Core API de plan de données et types de politiques**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/iot-authorization.html)


**AWS IoT Core API et types de politiques du plan de contrôle**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/iot-authorization.html)

AWS IoT Core les politiques sont associées aux certificats X.509, aux identités Amazon Cognito ou aux groupes d'objets. Les politiques IAM sont attachées à un utilisateur, un groupe ou un rôle IAM. Si vous utilisez la AWS IoT console ou la AWS IoT Core CLI pour associer la politique (à un certificat, à Amazon Cognito Identity ou à un groupe d'objets), vous utilisez une AWS IoT Core stratégie. Dans le cas contraire, vous utilisez une politique IAM. AWS IoT Core les politiques associées à un groupe d'objets s'appliquent à tout élément de ce groupe d'objets. Pour que la AWS IoT Core politique entre en vigueur, le nom `clientId` et le nom de l'objet doivent correspondre.

L'autorisation basée sur la stratégie est un outil puissant. Elle vous permet de contrôler entièrement ce qu'un appareil, un utilisateur ou une application peut faire dans AWS IoT Core. Prenons l'exemple d'un appareil qui se connecte à l' AWS IoT Core aide d'un certificat. Vous pouvez autoriser l'appareil à accéder à toutes les rubriques MQTT ou limiter son accès à une seule rubrique. Autre exemple : imaginons le cas d'un utilisateur qui tape des commandes CLI dans la ligne de commande. En utilisant une politique, vous pouvez autoriser ou refuser l'accès à n'importe quelle commande ou AWS IoT Core ressource pour l'utilisateur. Vous pouvez également contrôler l'accès d'une application aux ressources AWS IoT Core .

Les modifications apportées à une stratégie peuvent prendre quelques minutes pour être effectives en raison de la façon dont AWS IoT met en cache les documents de stratégie. Autrement dit, l'accès à une ressource à laquelle l'accès a récemment été accordé peut prendre quelques minutes, et une ressource peut être accessible pendant plusieurs minutes après la révocation de son accès.

## AWS formation et certification
<a name="iot-authorization-training"></a>

Pour plus d'informations sur l'autorisation AWS IoT Core, suivez le cours [Deep Dive into AWS IoT Core Authentication and Authorization](https://www.aws.training/Details/Curriculum?id=42335) sur le site Web de AWS formation et de certification.

# AWS IoT Core politiques
<a name="iot-policies"></a>

AWS IoT Core les politiques sont des documents JSON. Elles suivent les mêmes conventions que les politiques IAM. AWS IoT Core prend en charge les politiques nommées afin que de nombreuses identités puissent faire référence au même document de politique. Les stratégies nommées comptent plusieurs versions afin de faciliter leur restauration.

AWS IoT Core les politiques vous permettent de contrôler l'accès au plan de AWS IoT Core données. Le plan de données AWS IoT Core comprend des opérations qui vous permettent de vous connecter au courtier de messages AWS IoT Core , d'envoyer et de recevoir des messages MQTT et d'obtenir ou de mettre à jour le Device Shadow d'un objet.

Une AWS IoT Core politique est un document JSON qui contient une ou plusieurs déclarations de politique. Chaque déclaration contient :
+ `Effect`, qui indique si l'action est autorisée ou refusée.
+ `Action`, qui indique l'action autorisée ou refusée par la stratégie.
+ `Resource`, qui spécifie la ou les ressources sur lesquelles l'action est autorisée ou refusée.

Les modifications apportées à une politique peuvent prendre entre 6 et 8 minutes pour entrer en vigueur en raison de la façon dont les documents de politique sont mis en AWS IoT cache. Autrement dit, l'accès à une ressource à laquelle l'accès a récemment été accordé peut prendre quelques minutes, et une ressource peut être accessible pendant plusieurs minutes après la révocation de son accès.

AWS IoT Core des politiques peuvent être associées aux certificats X.509, aux identités Amazon Cognito et aux groupes d'objets. Les politiques attachées à un groupe d'objets s'appliquent à tout élément de ce groupe. Pour que la stratégie prenne effet, le `clientId` et le nom de l'objet doivent correspondre. les stratégies AWS IoT Core suivent la même logique d’évaluation que les politiques IAM. Par défaut, toutes les politiques sont implicitement refusées. Une autorisation explicite dans toute stratégie basée sur l’identité ou sur les ressources remplace le comportement par défaut. Un refus explicite dans n'importe quelle stratégie remplace toutes les autorisations. Pour plus d’informations, consultez [Logique d’évaluation de la stratégie](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) dans le *Gestion des identités et des accès AWS Guide d’utilisateur*.

**Topics**
+ [AWS IoT Core actions politiques](iot-policy-actions.md)
+ [AWS IoT Core ressources d'action](iot-action-resources.md)
+ [AWS IoT Core variables de politique](iot-policy-variables.md)
+ [Prévention du cas de figure de l’adjoint désorienté entre services](cross-service-confused-deputy-prevention.md)
+ [AWS IoT Core exemples de politiques](example-iot-policies.md)
+ [Autorisation avec les identités Amazon Cognito](cog-iot-policies.md)

# AWS IoT Core actions politiques
<a name="iot-policy-actions"></a>

Les actions de stratégie suivantes sont définies par AWS IoT Core :Actions de stratégie MQTT

`iot:Connect`  
Représente l'autorisation de connexion au courtier de AWS IoT Core messages. L'autorisation `iot:Connect` est vérifiée chaque fois qu'une demande `CONNECT` est envoyée à l'agent. L'agent de messages n'autorise pas deux clients avec le même ID client à rester connectés en même temps. Une fois que le deuxième client se connecte, l'agent ferme la connexion existante. Utilisez l'autorisation `iot:Connect` pour garantir que seuls les clients autorisés utilisant un ID client spécifique peuvent se connecter.

`iot:DeleteConnection`  
Représente l'autorisation de déconnecter un client MQTT connecté. AWS IoT Core L'`iot:DeleteConnection`autorisation est vérifiée chaque fois qu'une demande est faite pour déconnecter de force un client. Lorsque vous déconnectez un client, AWS IoT Core fermez la connexion réseau du client et nettoyez éventuellement l'état de la session.

`iot:GetRetainedMessage`  
Représente l’autorisation d’obtenir le contenu d’un seul message conservé. Les messages conservés sont les messages publiés avec l'indicateur RETAIN défini et stockés par AWS IoT Core. Pour obtenir l'autorisation d'obtenir une liste de tous les messages conservés du compte, consultez [iot:ListRetainedMessages](#action_listretainedmessages).

`iot:ListRetainedMessages`  
Représente l'autorisation de récupérer des informations récapitulatives sur les messages conservés du compte, mais pas le contenu des messages. Les messages conservés sont les messages publiés avec l'indicateur RETAIN défini et stockés par AWS IoT Core. L'ARN de ressource spécifié pour cette action doit être `*`. Pour obtenir l'autorisation d'obtenir le contenu d'un seul message conservé, consultez [iot:GetRetainedMessage](#action_getretainpublish).

`iot:Publish`  
Représente l'autorisation de publier un sujet MQTT. Cette autorisation est vérifiée chaque fois qu'une demande PUBLISH est envoyée à l'agent. Vous pouvez l'utiliser pour permettre aux clients de publier sur des modèles de sujet spécifiques.  
Pour accorder l'autorisation `iot:Publish`, vous devez également accorder l'autorisation `iot:Connect`.

`iot:Receive`  
Représente l'autorisation de recevoir un message de AWS IoT Core. L'autorisation `iot:Receive` est confirmée chaque fois qu'un message est remis à un client. Cette autorisation étant vérifiée à chaque diffusion, vous pouvez l'utiliser pour révoquer les autorisations des clients actuellement abonnés à une rubrique.

`iot:RetainPublish`  
Représente l'autorisation de publier un message MQTT avec l'indicateur CONSERVER défini.  
Pour accorder l'autorisation `iot:RetainPublish`, vous devez également accorder l'autorisation `iot:Publish`.

`iot:Subscribe`  
Représente l'autorisation de s'abonner à un filtre de rubrique. Cette autorisation est vérifiée chaque fois qu'une demande SUBSCRIBE est envoyée à l'agent. Utilisez-le pour permettre aux clients de s'abonner à des rubriques qui correspondent à des modèles spécifiques.  
Pour accorder l'autorisation `iot:Subscribe`, vous devez également accorder l'autorisation `iot:Connect`.Actions de la stratégie Device Shadow

`iot:DeleteThingShadow`  
Représente l'autorisation de supprimer le Device Shadow d'un objet. L'autorisation `iot:DeleteThingShadow` est vérifiée chaque fois qu'une demande est faite pour supprimer le contenu Device Shadow d'un objet.

`iot:GetThingShadow`  
Représente l'autorisation de récupérer le Device Shadow d'un objet. L'autorisation `iot:GetThingShadow` est vérifiée chaque fois qu'une demande est faite pour récupérer le contenu Device Shadow d'un objet.

`iot:ListNamedShadowsForThing`  
Représente l'autorisation de répertorier les objets nommés Shadows. L'autorisation `iot:ListNamedShadowsForThing` est vérifiée chaque fois qu'une demande est faite pour répertorier un objet nommé Shadows.

`iot:UpdateThingShadow`  
Représente l'autorisation de mettre à jour un shadow d'appareil. L'autorisation `iot:UpdateThingShadow` est vérifiée chaque fois qu'une demande est faite pour mettre à jour le contenu Device Shadow d'un objet.

**Note**  
Les actions de stratégie d'exécution de tâche s'appliquent uniquement pour le point de terminaison HTTP TLS. Si vous utilisez le point de terminaison MQTT, vous devez utiliser les actions de stratégie MQTT définies dans cette rubrique.  
Pour un exemple de stratégie d'exécution de tâche qui illustre cela, consultez [Exemple de stratégie d'emploi de base](basic-jobs-example.md) qui fonctionne avec le protocole MQTT.Actions AWS IoT Core politiques relatives à l'exécution des tâches

`iotjobsdata:DescribeJobExecution`  
Représente l'autorisation de récupérer une exécution de tâche pour un objet donné. L'autorisation `iotjobsdata:DescribeJobExecution` est vérifiée chaque fois qu'une demande est faite d'obtenir une exécution de tâche.

`iotjobsdata:GetPendingJobExecutions`  
Représente l'autorisation de récupérer la liste des tâches qui ne sont pas à un statut terminal pour un objet. L'autorisation `iotjobsdata:GetPendingJobExecutions` est vérifiée chaque fois qu'une demande est faite de récupérer la liste. 

`iotjobsdata:UpdateJobExecution`  
Représente l'autorisation de mettre à jour une exécution de tâche. L'autorisation `iotjobsdata:UpdateJobExecution` est vérifiée chaque fois qu'une demande est faite de mettre à jour l'état d'une exécution de tâche.

`iotjobsdata:StartNextPendingJobExecution`  
Représente l'autorisation d'obtenir et de démarrer l'exécution de tâche en attente suivante pour un objet. (C'est-à-dire de mettre à jour une exécution de tâche en la faisant passer du statut QUEUED au statut IN\$1PROGRESS.) L'autorisation `iotjobsdata:StartNextPendingJobExecution` est vérifiée chaque fois qu'une demande est faite de démarrer l'exécution de tâche en attente suivante.AWS IoT Core Action en matière de politique des fournisseurs d'informations d'identification

`iot:AssumeRoleWithCertificate`  
Représente l'autorisation AWS IoT Core d'appeler le fournisseur d'informations d'identification pour assumer un rôle IAM avec une authentification basée sur des certificats. L'`iot:AssumeRoleWithCertificate`autorisation est vérifiée chaque fois qu'une demande est faite au fournisseur d' AWS IoT Core informations d'identification pour qu'il assume un rôle.

# AWS IoT Core ressources d'action
<a name="iot-action-resources"></a>

Pour spécifier une ressource pour une action AWS IoT Core de politique, utilisez l'Amazon Resource Name (ARN) de la ressource. Toutes les ressources ARNs suivent le format suivant :

```
arn:partition:iot:region:AWS-account-ID:Resource-type/Resource-name
```

Le tableau suivant indique la ressource à spécifier pour chaque type d'action. Les exemples d'ARN concernent l'ID du compte`123456789012`, dans la partition`aws`, et sont spécifiques à la région`us-east-1`. Pour plus d'informations sur les formats pour ARNs, consultez [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference-arns.html) dans le guide de Gestion des identités et des accès AWS l'utilisateur.


| Action | Type de ressource | Nom de la ressource | Exemples d’ARN  | 
| --- | --- | --- | --- | 
| iot:Connect | client |  L'identifiant client du client  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteConnection | client |  L'identifiant client du client  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteThingShadow | thing |  Le nom de l’objet et le nom de l'ombre, le cas échéant  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iotjobsdata:DescribeJobExecution | thing |  Le nom de l'objet  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iotjobsdata:GetPendingJobExecutions | thing |  Le nom de l'objet  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:GetRetainedMessage | topic |  Une rubrique de message conservé  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iot:GetThingShadow | thing |  Le nom de l’objet et le nom de l'ombre, le cas échéant  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:ListNamedShadowsForThing | Tous | Tous |  \$1 | 
| iot:ListRetainedMessages | Tous | Tous |  \$1 | 
| iot:Publish | topic |  Une chaîne de rubrique  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:Receive | topic |  Une chaîne de rubrique  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:RetainPublish | topic |  Une rubrique à publier avec l'indicateur CONSERVER défini  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iotjobsdata:StartNextPendingJobExecution | thing |  Le nom de l'objet  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:Subscribe | topicfilter | Une chaîne de filtre d'objet | arn:aws:iot:us-east-1:123456789012:topicfilter/myTopicFilter | 
| iotjobsdata:UpdateJobExecution | thing |  Le nom de l'objet  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:UpdateThingShadow | thing |  Le nom de l’objet et le nom de l'ombre, le cas échéant  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:AssumeRoleWithCertificate | rolealias |  Un alias de rôle qui pointe vers un rôle ARN  |  arn:aws:iot:us-east-1:123456789012:rolealias/CredentialProviderRole\$1alias | 

# AWS IoT Core variables de politique
<a name="iot-policy-variables"></a>

AWS IoT Core définit les variables de stratégie qui peuvent être utilisées dans AWS IoT Core les politiques du `Condition` bloc `Resource` or. Lorsqu'une stratégie est évaluée, ses variables sont remplacées par des valeurs réelles. Par exemple, si un appareil est connecté au courtier de AWS IoT Core messages avec un ID client 100-234-3456, la variable de politique est remplacée dans le document de `iot:ClientId` politique par 100-234-3456.

AWS IoT Core les politiques peuvent utiliser des caractères génériques et suivre une convention similaire à celle des politiques IAM. L'insertion d'un `*` (astérisque) dans la chaîne peut être traitée comme un caractère générique, correspondant à n'importe quel caractère. Par exemple, vous pouvez utiliser `*` pour décrire plusieurs noms de rubriques MQTT dans l'attribut d'une stratégie `Resource`. Les caractères `+` et `#` sont traités comme des chaînes littérales dans une stratégie. Pour obtenir un exemple de stratégie montrant comment utiliser les caractères génériques, consultez [Utilisation de caractères génériques dans le MQTT et les politiques AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

Vous pouvez également utiliser des variables de stratégie prédéfinies avec des valeurs fixes pour représenter des caractères qui autrement auraient une signification particulière. Ces caractères spéciaux incluent `$(*)`, `$(?)`, et `$($)`. Pour plus d'informations sur les variables de stratégie et les caractères spéciaux, consultez [Éléments de politique IAM : variables et balises](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) et [Création d'une condition avec plusieurs clés ou valeurs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html).

**Topics**
+ [Variables de AWS IoT Core politique de base](basic-policy-variables.md)
+ [Variables de stratégie d'objet](thing-policy-variables.md)
+ [Variables de AWS IoT Core politique de certificat X.509](cert-policy-variables.md)

# Variables de AWS IoT Core politique de base
<a name="basic-policy-variables"></a>

AWS IoT Core définit les variables de politique de base suivantes :
+ `aws:SourceIp`: adresse IP du client connecté au courtier de AWS IoT Core messages.
+ `iot:ClientId` : ID client utilisé pour se connecter à l'agent de messages AWS IoT Core .
+ `iot:DomainName`: nom de domaine du client connecté AWS IoT Core.

**Topics**
+ [Exemples `ClientId` et variables `SourceIp` de politique](#basic-policy-variables-example)
+ [Exemples de variable `iot:DomainName` de politique](#basic-policy-variables-example-domain)

## Exemples `ClientId` et variables `SourceIp` de politique
<a name="basic-policy-variables-example"></a>

La AWS IoT Core stratégie suivante montre une stratégie qui utilise des variables de stratégie. `aws:SourceIp`peut être utilisé dans l'élément Condition de votre politique pour permettre aux principaux de faire des demandes d'API uniquement dans une plage d'adresses spécifique. Pour obtenir des exemples, consultez [Autoriser les utilisateurs et les services cloud à utiliser Jobs AWS IoT](iam-policy-users-jobs.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "123.45.167.89"
				}
			}
		}
	]
}
```

Dans ces exemples, `${iot:ClientId}` il est remplacé par l'ID du client connecté au courtier de AWS IoT Core messages lorsque la politique est évaluée. Lorsque vous utilisez des variables de stratégie telles que `${iot:ClientId}`, vous pouvez ouvrir par inadvertance l'accès à des rubriques imprévues. Par exemple, si vous utilisez un stratégie qui utilise `${iot:ClientId}` pour spécifier un filtre de rubrique :

```
{
	"Effect": "Allow",
	"Action": [
		"iot:Subscribe"
	],
	"Resource": [
		"arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic"
	]
}
```

Un client peut se connecter en utilisant `+` comme ID de client. Cela permettrait à l'utilisateur de s'abonner à n'importe quelle rubrique correspondant au filtre de rubrique `my/+/topic`. Pour vous protéger contre de telles failles de sécurité, utilisez l'action de `iot:Connect` stratégie pour contrôler quel client IDs peut se connecter. Par exemple, cette stratégie autorise uniquement les clients dont l'ID client est `clientid1` à se connecter :

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid"
			]
		}
	]
}
```

**Note**  
L'utilisation de la variable de la stratégie `${iot:ClientId}` avec `Connect` n'est pas recommandée. Il n'y a pas de contrôle sur la valeur de `ClientId`, donc un attacheur avec un ID client différent peut valider mais provoquer une déconnexion. Étant donné que tout `ClientId` est autorisé, la définition d’un ID client aléatoire peut contourner les politiques de groupe d’objets.

## Exemples de variable `iot:DomainName` de politique
<a name="basic-policy-variables-example-domain"></a>

Vous pouvez ajouter la variable de `iot:DomainName` politique pour limiter les domaines autorisés à utiliser. L'ajout de la variable `iot:DomainName` de politique permet aux appareils de se connecter uniquement à des points de terminaison configurés spécifiques.

La politique suivante permet aux appareils de se connecter au domaine spécifié.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "AllowConnectionsToSpecifiedDomain",
		"Effect": "Allow",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

La politique suivante interdit aux appareils de se connecter au domaine spécifié.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "DenyConnectionsToSpecifiedDomain",
		"Effect": "Deny",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

Pour plus d'informations sur l'opérateur conditionnel de politique, voir [Éléments de stratégie IAM JSON : opérateurs de condition](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Pour plus d'informations sur les configurations de domaine, voir [Qu'est-ce qu'une configuration de domaine ?](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html) .

# Variables de stratégie d'objet
<a name="thing-policy-variables"></a>

Les variables de politique d'objet vous permettent d'écrire des AWS IoT Core politiques qui accordent ou refusent des autorisations en fonction des propriétés des objets, telles que les noms des objets, les types d'objets et les valeurs des attributs des objets. Vous pouvez utiliser les variables de politique des objets pour appliquer la même politique afin de contrôler de nombreux AWS IoT Core appareils. Pour plus d'informations sur la mise en service des appareils, veuillez consulter [Mise en service des appareils](iot-provision.html).

Si vous utilisez une association d'objets non exclusive, le même certificat peut être associé à plusieurs objets. Pour maintenir une association claire et éviter les conflits potentiels, vous devez associer votre identifiant client au nom de l'objet. Dans ce cas, vous obtenez le nom de l'objet à partir de l'ID du client dans le `Connect` message MQTT envoyé lorsqu'un objet se connecte à AWS IoT Core.

Gardez ce qui suit à l'esprit lorsque vous utilisez des variables de stratégie d'objet dans les stratégies AWS IoT Core .
+ Utilisez l'[AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API pour associer des certificats ou des principaux (identités Amazon Cognito authentifiées) à un objet.
+ Si une association d'objets non exclusive est en place, lorsque vous remplacez des noms d'objets par des variables de politique d'objets, la valeur de `clientId` dans le message de connexion MQTT ou dans la connexion TLS doit correspondre exactement au nom de l'objet.

Les variables de stratégie d'objet suivantes sont disponibles :
+ `iot:Connection.Thing.ThingName`

  Cela correspond au nom de l'objet dans le AWS IoT Core registre pour lequel la politique est évaluée. AWS IoT Core utilise le certificat présenté par l'appareil lorsqu'il s'authentifie pour déterminer quel élément utiliser pour vérifier la connexion. Cette variable de politique n'est disponible que lorsqu'un appareil se connecte via MQTT ou MQTT via le WebSocket protocole.
+ `iot:Connection.Thing.ThingTypeName`

  Cette variable est résolue en type d'objet associé à l'objet pour lequel la stratégie est évaluée. L'ID client de la WebSocket connexion MQTT/ doit être identique au nom de l'objet. Cette variable de politique n'est disponible que lors de la connexion via MQTT ou MQTT via le WebSocket protocole.
+ `iot:Connection.Thing.Attributes[attributeName]`

  Cette variable est résolue en valeur d'attribut spécifié associé à l'objet pour lequel la stratégie est évaluée. Un objet peut posséder jusqu'à 50 attributs. Chaque attribut est disponible en tant que variable de politique : `iot:Connection.Thing.Attributes[attributeName]` où *attributeName* est le nom de l'attribut ? L'ID client de la MQTT/WebSocket connexion doit être identique au nom de l'objet. Cette variable de politique n'est disponible que lors de la connexion via MQTT ou MQTT via le WebSocket protocole.
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]`impose que seuls les appareils enregistrés AWS IoT et attachés au principal puissent accéder aux autorisations définies dans la politique. Vous pouvez utiliser cette variable pour empêcher un appareil de se connecter AWS IoT Core s'il présente un certificat qui n'est pas associé à un objet IoT dans le AWS IoT Core registre. Cette variable contient des valeurs `true` ou `false` indique que l'objet de connexion est attaché au certificat ou à l'identité Amazon Cognito dans le registre à l'aide de l'API. [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) Le nom de l'objet est pris comme identifiant client. 

Si votre ID client correspond au nom de votre objet, ou si vous attachez votre certificat à un objet exclusivement, l'utilisation de variables de stratégie dans la définition de la stratégie peut simplifier la gestion des politiques. Au lieu de créer des politiques individuelles pour chaque objet IoT, vous pouvez définir une politique unique à l'aide des variables de politique de l'objet. Cette politique peut être appliquée dynamiquement à tous les appareils. Voici un exemple de politique illustrant son fonctionnement. Pour de plus amples informations, veuillez consulter [Associer un AWS IoT objet à une connexion client MQTT](exclusive-thing.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Condition": {
				"StringLike": {
					"iot:ClientId": "*${iot:Connection.Thing.Attributes[envType]}"
				}
			},
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/*"
		}
	]
}
```

Cet exemple de politique permet aux objets de se connecter AWS IoT Core si leur ID client se termine par la valeur de leur `envType` attribut. Seuls les objets présentant un modèle d'ID client correspondant seront autorisés à se connecter.

# Variables de AWS IoT Core politique de certificat X.509
<a name="cert-policy-variables"></a>

Les variables de politique de certificat X.509 facilitent l'écriture des AWS IoT Core politiques. Ces politiques accordent des autorisations en fonction des attributs du certificat X.509. Les sections suivantes décrivent comment utiliser ces variables de politique de certificat.

**Important**  
Si votre certificat X.509 n'inclut aucun attribut de certificat particulier mais que la variable de politique de certificat correspondante est utilisée dans votre document de stratégie, l'évaluation de la politique peut entraîner un comportement inattendu.

## CertificateId
<a name="cert-policy-variables-certid"></a>

Dans l'[RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html)API, le `certificateId` apparaît dans le corps de la réponse. Pour obtenir des informations sur votre certificat, utilisez le `certificateId` in [DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html).

## Attributs de l'émetteur
<a name="issuer-attributes"></a>

Les variables AWS IoT Core de politique suivantes permettent d'autoriser ou de refuser des autorisations, en fonction des attributs de certificat définis par l'émetteur du certificat.
+ `iot:Certificate.Issuer.DistinguishedNameQualifier`
+ `iot:Certificate.Issuer.Country`
+ `iot:Certificate.Issuer.Organization`
+ `iot:Certificate.Issuer.OrganizationalUnit`
+ `iot:Certificate.Issuer.State`
+ `iot:Certificate.Issuer.CommonName`
+ `iot:Certificate.Issuer.SerialNumber`
+ `iot:Certificate.Issuer.Title`
+ `iot:Certificate.Issuer.Surname`
+ `iot:Certificate.Issuer.GivenName`
+ `iot:Certificate.Issuer.Initials`
+ `iot:Certificate.Issuer.Pseudonym`
+ `iot:Certificate.Issuer.GenerationQualifier` 

## Attributs de l'objet
<a name="subject-attributes"></a>

Les variables AWS IoT Core de politique suivantes prennent en charge l'octroi ou le refus d'autorisations, en fonction des attributs du sujet du certificat définis par l'émetteur du certificat.
+ `iot:Certificate.Subject.DistinguishedNameQualifier`
+ `iot:Certificate.Subject.Country`
+ `iot:Certificate.Subject.Organization`
+ `iot:Certificate.Subject.OrganizationalUnit`
+ `iot:Certificate.Subject.State`
+ `iot:Certificate.Subject.CommonName`
+ `iot:Certificate.Subject.SerialNumber`
+ `iot:Certificate.Subject.Title`
+ `iot:Certificate.Subject.Surname`
+ `iot:Certificate.Subject.GivenName`
+ `iot:Certificate.Subject.Initials`
+ `iot:Certificate.Subject.Pseudonym`
+ `iot:Certificate.Subject.GenerationQualifier` 

Les certificats X.509 fournissent à ces attributs la possibilité de contenir une ou plusieurs valeurs. Par défaut, les variables de stratégie de chaque attribut à valeurs multiples renvoient la première valeur. Par exemple, l'attribut `Certificate.Subject.Country` peut contenir une liste de noms de pays, mais `iot:Certificate.Subject.Country` est remplacé par le nom du premier pays lorsqu'il est évalué dans une stratégie.

Vous pouvez demander une valeur d'attribut spécifique autre que la première valeur en utilisant un index de base un. Par exemple, `iot:Certificate.Subject.Country.1` est remplacé par le deuxième nom de pays dans l'attribut `Certificate.Subject.Country`. Si vous spécifiez une valeur d'index qui n'existe pas (par exemple, si vous demandez une troisième valeur alors qu'il n'y a que deux valeurs affectées à l'attribut), aucune substitution n'est effectuée et l'autorisation échoue. Vous pouvez utiliser le suffixe `.List` dans le nom de la variable de stratégie pour spécifier l'ensemble des valeurs de l'attribut.

## Attributs de nom alternatif d'émetteur
<a name="issuer-alternate-name-attributes"></a>

Les variables de AWS IoT Core politique suivantes prennent en charge l'octroi ou le refus d'autorisations, en fonction des attributs de nom alternatif de l'émetteur définis par l'émetteur du certificat.
+ `iot:Certificate.Issuer.AlternativeName.RFC822Name`
+ `iot:Certificate.Issuer.AlternativeName.DNSName`
+ `iot:Certificate.Issuer.AlternativeName.DirectoryName`
+ `iot:Certificate.Issuer.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Issuer.AlternativeName.IPAddress`

## Attributs de nom alternatif d'objet
<a name="subject-alternate-name-attributes"></a>

Les variables AWS IoT Core de politique suivantes prennent en charge l'octroi ou le refus d'autorisations, en fonction des attributs de nom alternatif du sujet définis par l'émetteur du certificat.
+ `iot:Certificate.Subject.AlternativeName.RFC822Name`
+ `iot:Certificate.Subject.AlternativeName.DNSName`
+ `iot:Certificate.Subject.AlternativeName.DirectoryName`
+ `iot:Certificate.Subject.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Subject.AlternativeName.IPAddress`

## Autres attributs
<a name="other-attributes"></a>

Vous pouvez l'utiliser `iot:Certificate.SerialNumber` pour autoriser ou refuser l'accès aux AWS IoT Core ressources, en fonction du numéro de série d'un certificat. La variable de stratégie `iot:Certificate.AvailableKeys` contient le nom de toutes les variables de stratégie de certificat contenant des valeurs.

# Utilisation de variables de politique de certificat X.509
<a name="use-policy-variables"></a>

Cette rubrique explique en détail comment utiliser les variables de politique de certificat. Les variables de politique de certificat X.509 sont essentielles lorsque vous créez des AWS IoT Core politiques qui accordent des autorisations basées sur les attributs du certificat X.509. Si votre certificat X.509 n'inclut aucun attribut de certificat particulier mais que la variable de politique de certificat correspondante est utilisée dans votre document de stratégie, l'évaluation de la politique peut entraîner un comportement inattendu. Cela est dû au fait que la variable de stratégie manquante n'est pas évaluée dans la déclaration de stratégie.

**Topics**
+ [Exemple de certificat X.509](#certificate-example)
+ [Utilisation des attributs de l'émetteur de certificats comme variables de politique de certificat](#issuer-attributes-policy)
+ [Utilisation des attributs du sujet du certificat comme variables de politique de certificat](#subject-attributes-policy)
+ [Utilisation des attributs de nom alternatif de l'émetteur du certificat comme variables de politique de certificat](#issuer-alternate-name-attributes-policy)
+ [Utilisation des attributs de nom alternatif du sujet du certificat comme variables de politique de certificat](#subject-alternate-name-attributes-policy)
+ [Utilisation d'un autre attribut de certificat comme variable de politique de certificat](#other-attributes-policy)
+ [Limitations applicables aux variables de stratégie de certificat X.509](#policy-limits)
+ [Exemples de politiques utilisant des variables de politique de certificat](#example-attributes-policy)

## Exemple de certificat X.509
<a name="certificate-example"></a>

Un certificat X.509 typique peut apparaître comme suit. Cet exemple de certificat inclut des attributs de certificat. Lors de l'évaluation des AWS IoT Core politiques, les attributs de certificat suivants seront renseignés sous forme de variables de politique de certificat : `Serial Number` `Issuer``Subject`,`X509v3 Issuer Alternative Name`,, et`X509v3 Subject Alternative Name`.

```
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            92:12:85:cb:b7:a5:e0:86
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=IoT Devices, OU=SmartHome, ST=WA, CN=IoT Devices Primary CA, 
				GN=Primary CA1/initials=XY/dnQualifier=Example corp,
				SN=SmartHome/ title=CA1/pseudonym=Primary_CA/generationQualifier=2/serialNumber=987		
        Validity
            Not Before: Mar 26 03:25:40 2024 GMT
            Not After : Apr 28 03:25:40 2025 GMT
        Subject: C=US, O=IoT Devices, OU=LightBulb, ST=NY, CN=LightBulb Device Cert, 
				GN=Bulb/initials=ZZ/dnQualifier=Bulb001, 
				SN=Multi Color/title=RGB/pseudonym=RGB Device/generationQualifier=4/serialNumber=123
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    << REDACTED >>
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name: 
                DNS:example.com, IP Address:1.2.3.4, URI:ResourceIdentifier001, email:device1@example.com, DirName:/C=US/O=IoT/OU=SmartHome/CN=LightBulbCert
            X509v3 Issuer Alternative Name: 
                DNS:issuer.com, IP Address:5.6.7.8, URI:PrimarySignerCA, email:primary@issuer.com, DirName:/C=US/O=Issuer/OU=IoT Devices/CN=Primary Issuer CA
    Signature Algorithm: sha256WithRSAEncryption
         << REDACTED >>
```

## Utilisation des attributs de l'émetteur de certificats comme variables de politique de certificat
<a name="issuer-attributes-policy"></a>

Le tableau suivant fournit des informations détaillées sur la manière dont les attributs de l'émetteur du certificat seront renseignés dans une AWS IoT Core politique.


**Attributs de l'émetteur à renseigner dans une politique**  

| Attributs de l'émetteur du certificat | Variables de politique de certificat | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/use-policy-variables.html)  | 

## Utilisation des attributs du sujet du certificat comme variables de politique de certificat
<a name="subject-attributes-policy"></a>

Le tableau suivant fournit des informations détaillées sur la manière dont les attributs du sujet du certificat seront renseignés dans une AWS IoT Core politique.


**Attributs du sujet à renseigner dans une politique**  

| Attributs du sujet du certificat | Variables de politique de certificat | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/use-policy-variables.html)  | 

## Utilisation des attributs de nom alternatif de l'émetteur du certificat comme variables de politique de certificat
<a name="issuer-alternate-name-attributes-policy"></a>

Le tableau suivant fournit des informations détaillées sur la manière dont les attributs de nom alternatif de l'émetteur du certificat seront renseignés dans une AWS IoT Core politique.


**Attributs du nom alternatif de l'émetteur à renseigner dans une politique**  

| Nom alternatif de l'émetteur X509v3 | Attribut dans une politique | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/use-policy-variables.html)  | 

## Utilisation des attributs de nom alternatif du sujet du certificat comme variables de politique de certificat
<a name="subject-alternate-name-attributes-policy"></a>

Le tableau suivant fournit des informations détaillées sur la manière dont les attributs du nom alternatif du sujet du certificat seront renseignés dans une AWS IoT Core politique.


**Attributs du nom alternatif du sujet à renseigner dans une politique**  

| Nom alternatif du sujet X509v3 | Attribut dans une politique | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/use-policy-variables.html)  | 

## Utilisation d'un autre attribut de certificat comme variable de politique de certificat
<a name="other-attributes-policy"></a>

Le tableau suivant fournit des informations détaillées sur la manière dont les autres attributs de certificat seront renseignés dans une AWS IoT Core politique.


**Autres attributs à renseigner dans une politique**  

| Autre attribut de certificat | Variable de politique de certificat | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## Limitations applicables aux variables de stratégie de certificat X.509
<a name="policy-limits"></a>

Les limitations suivantes s'appliquent aux variables de stratégie de certificat X.509 :

Variables de stratégie manquantes  
Si votre certificat X.509 n'inclut aucun attribut de certificat particulier mais que la variable de politique de certificat correspondante est utilisée dans votre document de stratégie, l'évaluation de la politique peut entraîner un comportement inattendu. Cela est dû au fait que la variable de stratégie manquante n'est pas évaluée dans la déclaration de stratégie.

 SerialNumber Format du certificat  
AWS IoT Core traite le numéro de série du certificat comme la représentation sous forme de chaîne d'un entier décimal. Par exemple, si une politique autorise uniquement les connexions dont l'ID client correspond au numéro de série du certificat, l'ID client doit être le numéro de série au format décimal.

Caractères génériques  
Si des caractères génériques sont présents dans les attributs du certificat, la variable de politique n'est pas remplacée par la valeur de l'attribut du certificat. Cela laissera le `${policy-variable}` texte dans le document de politique. Cela risque de provoquer un échec d'autorisation. Les caractères génériques suivants peuvent être utilisés : `*`, `$`, `+`, `?` et `#`.

Champs de tableau  
Les attributs de certificats qui contiennent des tableaux sont limités à cinq éléments. Les autres éléments sont ignorés.

String length  
Toutes les valeurs de chaîne sont limitées à 1 024 caractères. Si un attribut de certificat contient une chaîne de plus de 1024 caractères, la variable de politique n'est pas remplacée par la valeur de l'attribut de certificat. Cela les conservera `${policy-variable}` dans le document de politique. Cela risque de provoquer un échec d'autorisation.

Caractères spéciaux  
Tout caractère spécial, tel que `,`, `"`, `\`, `+`, `=`, `<`, `>` et `;` doit être préfixé par une barre oblique inverse (`\`) lorsqu'il est utilisé dans une variable de stratégie. Par exemple, `Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US` devient `Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US`.

## Exemples de politiques utilisant des variables de politique de certificat
<a name="example-attributes-policy"></a>

Le document de politique suivant autorise les connexions avec un ID client correspondant au numéro de série du certificat et la publication sur le sujet correspondant au modèle :`${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*`. 

**Important**  
Si votre certificat X.509 n'inclut aucun attribut de certificat particulier mais que la variable de politique de certificat correspondante est utilisée dans votre document de stratégie, l'évaluation de la politique peut entraîner un comportement inattendu. Cela est dû au fait que la variable de stratégie manquante n'est pas évaluée dans la déclaration de stratégie. Par exemple, si vous joignez le document de politique suivant à un certificat qui ne contient pas l'`iot:Certificate.Subject.Organization`attribut, les variables de politique de `iot:Certificate.Subject.Organization` certificat ne seront pas renseignées lors de l'évaluation de la politique.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Certificate.SerialNumber}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*"
			]
		}
	]
}
```

Vous pouvez également utiliser l'[opérateur de condition nulle](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) pour vous assurer que les variables de politique de certificat utilisées dans une politique sont renseignées lors de l'évaluation de la politique. Le document de politique suivant autorise `iot:Connect` les certificats uniquement lorsque les attributs du numéro de série du certificat et du nom commun de l'objet du certificat sont présents.

Toutes les variables de politique de certificat ont des valeurs de chaîne, de sorte que tous les [opérateurs de condition de chaîne](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String) sont pris en charge.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/*"
			],
			"Condition": {
				"Null": {
					"iot:Certificate.SerialNumber": "false",
					"iot:Certificate.Subject.CommonName": "false"
				}
			}
		}
	]
}
```

# Prévention du cas de figure de l’adjoint désorienté entre services
<a name="cross-service-confused-deputy-prevention"></a>

Le *problème de l’adjoint confus* est un problème de sécurité dans lequel une entité qui n’a pas l’autorisation d’effectuer une action peut contraindre une entité plus privilégiée à effectuer cette action. En AWS, l'usurpation d'identité interservices peut entraîner un problème de confusion chez les adjoints. L’usurpation d’identité entre services peut se produire lorsqu’un service (le *service appelant*) appelle un autre service (le *service appelé*). Le service appelant peut être manipulé pour utiliser ses autorisations afin d'agir sur les ressources d'un autre client de sorte qu'il n'y aurait pas accès autrement. Pour éviter cela, AWS fournit des outils qui vous aident à protéger vos données pour tous les services avec des principaux de service qui ont eu accès aux ressources de votre compte. 

Pour limiter les autorisations qui AWS IoT confèrent un autre service à la ressource, nous vous recommandons d'utiliser les clés contextuelles de condition [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)globale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)et les clés contextuelles dans les politiques de ressources. Si vous utilisez les deux clés de contexte de condition globale, la valeur `aws:SourceAccount` et le compte de la valeur `aws:SourceArn` doit utiliser le même ID de compte lorsqu’il est utilisé dans la même déclaration de stratégie.

Le moyen le plus efficace de se protéger contre le problème de l'adjoint confus est d'utiliser la clé de `aws:SourceArn` contexte de condition globale avec le nom de ressource Amazon (ARN) complet de la ressource. En AWS IoT effet, vous `aws:SourceArn` devez respecter le format : `arn:aws:iot:region:account-id:resource-type/resource-id` pour les autorisations spécifiques aux ressources ou`arn:aws:iot:region:account-id:*`. L'identifiant de ressource peut être le nom ou l'ID de la ressource autorisée, ou une déclaration générique de la ressource autorisée. IDs Assurez-vous que cela *region* correspond à votre AWS IoT région et à *account-id* votre numéro de compte client. 

L'exemple suivant montre comment éviter le problème de confusion des adjoints en utilisant les clés de contexte `aws:SourceArn` et de condition `aws:SourceAccount` globale dans la politique de confiance dans les AWS IoT rôles. Pour obtenir plus d’exemples, consultez [Exemples détaillés de prévention de la confusion chez les adjoints](#cross-service-confused-deputy-prevention-examples).

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:*"
        }
         }
      }
   ]
}
```

**Note**  
Si vous recevez des erreurs de refus d'accès, cela peut être dû au fait que l'intégration du service au AWS Security Token Service (STS) ne prend pas en charge les clés de `aws:SourceAccount` contexte `aws:SourceArn` et.

## Exemples détaillés de prévention de la confusion chez les adjoints
<a name="cross-service-confused-deputy-prevention-examples"></a>

**Cette section fournit des exemples détaillés de la manière de prévenir le problème de confusion des adjoints en utilisant les clés de contexte `aws:SourceArn` et les clés de contexte de condition `aws:SourceAccount` globale de la politique de confiance dans les AWS IoT rôles.**
+ [Mise en service de flotte](#cross-service-confused-deputy-prevention-fleet-provision)
+ [JITP](#cross-service-confused-deputy-prevention-JITP)
+ [Fournisseur d'informations d'identification](#cross-service-confused-deputy-prevention-credential-provider)

### Mise en service de flotte
<a name="cross-service-confused-deputy-prevention-fleet-provision"></a>

Vous pouvez configurer le [provisionnement du parc](https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html) à l'aide d'une ressource de modèle de provisionnement. Lorsqu'un modèle de provisionnement fait référence à un rôle de provisionnement, la politique de confiance de ce rôle peut inclure les clés de `aws:SourceAccount` condition `aws:SourceArn` et. Ces clés limitent les ressources pour lesquelles la configuration peut invoquer la `sts:AssumeRole` demande.

Le rôle associé à la politique de confiance suivante ne peut être assumé que par le principal IoT (`iot.amazonaws.com`) pour le modèle de provisionnement spécifié dans le`SourceArn`.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:provisioningtemplate/example_template"
        }
         }
      }
   ]
}
```

### JITP
<a name="cross-service-confused-deputy-prevention-JITP"></a>

Dans le cadre du [just-in-time provisionnement (JITP)](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html), vous pouvez soit utiliser le modèle de provisionnement en tant que ressource distincte de l'autorité de certification, soit définir le corps du modèle et le rôle dans le cadre de la configuration du certificat de l'autorité de certification. La valeur de la politique de confiance `aws:SourceArn` in the AWS IoT role dépend de la manière dont vous définissez le modèle de provisionnement.

#### Définition d'un modèle de provisionnement en tant que ressource distincte
<a name="cross-service-confused-deputy-prevention-JITP-template"></a>

Si vous définissez votre modèle de provisionnement en tant que ressource distincte, la valeur de `aws:SourceArn` peut être`"arn:aws:iot:region:account-id:provisioningtemplate/example_template"`. Vous pouvez utiliser le même exemple de politique dans[Mise en service de flotte](#cross-service-confused-deputy-prevention-fleet-provision).

#### Définition d'un modèle de provisionnement dans un certificat CA
<a name="cross-service-confused-deputy-prevention-JITP-CA"></a>

Si vous définissez votre modèle de provisionnement dans une ressource de certificat CA, la valeur de `aws:SourceArn` peut être `"arn:aws:iot:region:account-id:cacert/cert_id"` ou`"arn:aws:iot:region:account-id:cacert/*"`. Vous pouvez utiliser un caractère générique lorsque l'identifiant de la ressource, tel que l'ID d'un certificat CA, est inconnu au moment de la création.

Le rôle associé à la politique de confiance suivante ne peut être assumé que par le principal IoT (`iot.amazonaws.com`) pour le certificat CA spécifié dans le`SourceArn`.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e"
        }
         }
      }
   ]
}
```

Lorsque vous créez un certificat CA, vous pouvez faire référence à un rôle de provisionnement dans la configuration d'enregistrement. La politique de confiance du rôle de provisionnement peut être utilisée `aws:SourceArn` pour limiter les ressources pour lesquelles le rôle peut être assumé. [Toutefois, lors de l'CACertificateappel initial à Register pour enregistrer le certificat CA, vous n'auriez pas l'ARN du certificat CA à spécifier dans la `aws:SourceArn` condition.](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html)

Pour contourner ce problème, c'est-à-dire pour spécifier la politique de confiance du rôle d'approvisionnement pour le certificat CA spécifique enregistré auprès de celui-ci AWS IoT Core, vous pouvez effectuer les opérations suivantes :
+ Tout d'abord, appelez [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) sans fournir le `RegistrationConfig` paramètre.
+ Une fois le certificat CA enregistré auprès de celui-ci AWS IoT Core, appelez [Update CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) dessus.

  Dans l'CACertificate appel de mise à jour, fournissez une `RegistrationConfig` politique de confiance incluant le rôle d'approvisionnement, `aws:SourceArn` définie sur l'ARN du certificat CA récemment enregistré.

### Fournisseur d'informations d'identification
<a name="cross-service-confused-deputy-prevention-credential-provider"></a>

Pour le [fournisseur AWS IoT Core d'informations d'identification](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html), utilisez le même Compte AWS que celui que vous utilisez pour créer l'alias de rôle dans `aws:SourceAccount` et spécifiez une instruction qui correspond à l'ARN de ressource du type de ressource rolealias dans. `aws:SourceArn` Lorsque vous créez un rôle IAM à utiliser avec un fournisseur AWS IoT Core d'informations d'identification, vous devez inclure dans la `aws:SourceArn` condition tous les alias ARNs de rôle susceptibles d'avoir besoin d'assumer le rôle, autorisant ainsi la demande interservices. `sts:AssumeRole`

Le rôle soumis à la politique de confiance suivante ne peut être assumé que par le principal du fournisseur d' AWS IoT Core informations d'identification (`credentials.iot.amazonaws.com`) pour les RoleAlias spécifiés dans le. `SourceArn` Si un principal tente de récupérer les informations d'identification pour un alias de rôle autre que celui spécifié dans la `aws:SourceArn` condition, la demande sera refusée, même si cet autre alias de rôle fait référence au même rôle IAM.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "credentials.iot.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:rolealias/example_rolealias"
        }
      }
    }
  ]
}
```

# AWS IoT Core exemples de politiques
<a name="example-iot-policies"></a>

Les exemples de stratégies de cette section illustrent les documents utilisés pour effectuer les tâches courantes dans AWS IoT Core. Vous pouvez les utiliser comme exemples de départ lors de la création des politiques de vos solutions.<a name="example-iot-policies-elements"></a>

Les exemples de cette section utilisent ces éléments de stratégie :
+ [AWS IoT Core actions politiques](iot-policy-actions.md)
+ [AWS IoT Core ressources d'action](iot-action-resources.md)
+ [AWS IoT exemples de politiques basées sur l'identité](security_iam_id-based-policy-examples.md)
+ [Variables de AWS IoT Core politique de base](basic-policy-variables.md)
+ [Variables de AWS IoT Core politique de certificat X.509](cert-policy-variables.md)

**Topics**
+ [Exemples de stratégies de connexion](connect-policy.md)
+ [Exemples de stratégie de publication/abonnement](pub-sub-policy.md)
+ [Exemples de stratégies de connexion et de publication](connect-and-pub.md)
+ [Exemples de stratégies de messages conservés](retained-message-policy-examples.md)
+ [Exemples de stratégies de certificat](certificate-policy-examples.md)
+ [Exemples de stratégies d'objet](thing-policy-examples.md)
+ [Exemple de stratégie d'emploi de base](basic-jobs-example.md)

# Exemples de stratégies de connexion
<a name="connect-policy"></a>

La politique suivante refuse l'autorisation au client IDs `client1` et `client2` à la connexion AWS IoT Core, tout en autorisant les appareils à se connecter à l'aide d'un identifiant client. L'ID client correspond au nom d'un objet enregistré dans le AWS IoT Core registre et attaché au principal utilisé pour la connexion :

**Note**  
Pour les appareils enregistrés, nous vous recommandons d'utiliser [des variables de stratégie d'objet](thing-policy-variables.md) pour les `Connect` actions et d'attacher l'objet au principal utilisé pour la connexion.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1",
				"arn:aws:iot:us-east-1:123456789012:client/client2"
			]
		},
		{
			"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"
				}
			}
		}
	]
}
```

La politique suivante accorde l'autorisation de se connecter à l' AWS IoT Core aide de l'ID client`client1`. Cet exemple de stratégie concerne les appareils non enregistrés.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1"
			]
		}
	]
}
```

## Exemples de stratégies de sessions persistantes MQTT
<a name="persistent-sessions-examples"></a>

`connectAttributes` vous permettent de spécifier les attributs que vous souhaitez utiliser dans votre message de connexion dans vos politiques IAM telles que `PersistentConnect` et `LastWill`. Pour de plus amples informations, veuillez consulter [Utilisation de ConnectAttributes](mqtt.md#connect-attribute).

La stratégie suivante autorise la connexion avec la fonctionnalité`PersistentConnect` :

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

La stratégie suivante interdit `PersistentConnect`, d'autres fonctionnalités sont autorisées :

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringNotEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

La stratégie ci-dessus peut également être exprimée en utilisant `StringEquals`, toute autre fonctionnalité, y compris une nouvelle fonctionnalité, est autorisée :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1"
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

La stratégie suivante autorise la connexion à la fois par `PersistentConnect` et `LastWill`, toute autre nouvelle fonctionnalité n'est pas autorisée :

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		}
	]
}
```

La stratégie suivante autorise une connexion propre par les clients avec ou sans `LastWill`, aucune autre fonctionnalité ne sera autorisée :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iot:Connect"
        ],
        "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
        "Condition": {
            "StringEquals": {
                "iot:ConnectAttributes": "LastWill"
        }
        }
    }]
}
```

La stratégie suivante autorise uniquement la connexion à l'aide des fonctionnalités par défaut :

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

La stratégie suivante autorise la connexion uniquement avec `PersistentConnect`, toute nouvelle fonctionnalité est autorisée tant que la connexion utilise `PersistentConnect`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

La stratégie suivante stipule que la connexion doit avoir à la fois une utilisation `PersistentConnect` et `LastWill`, aucune nouvelle fonctionnalité n'est autorisée :

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

La stratégie suivante ne doit pas avoir `PersistentConnect` mais peut avoir `LastWill`, toute autre nouvelle fonctionnalité n'est pas autorisée :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "iot:ConnectAttributes": [
                        "LastWill"
                    ]
            }
        }
        }
    ]
}
```

La stratégie suivante autorise la connexion uniquement aux clients disposant de `LastWill` avec une une rubrique`"my/lastwill/topicName"`, toute fonctionnalité est autorisée tant qu'elle utilise la rubrique `LastWill`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        }
    ]
}
```

La stratégie suivante autorise uniquement une connexion propre à l'aide d'un fichier `LastWillTopic` spécifique, toute fonctionnalité est autorisée tant qu'elle utilise le `LastWillTopic`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

# Exemples de stratégie de publication/abonnement
<a name="pub-sub-policy"></a>

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](thing-policy-variables.md) pour les `Connect` actions et d'attacher l'objet au principal utilisé pour la connexion. 

**Topics**
+ [Utilisation de caractères génériques dans le MQTT et les politiques AWS IoT Core](#pub-sub-policy-cert)
+ [Politiques relatives à la publication, à l'abonnement et à la réception de messages sur to/from des sujets spécifiques](#pub-sub-specific-topic)
+ [Politiques relatives à la publication, à l'abonnement et à la réception de to/from sujets de messages avec un préfixe spécifique](#pub-sub-policy-specific-topic-prefix)
+ [Politiques relatives à la publication, à l'abonnement et à la réception de messages ( to/from sujets spécifiques à chaque appareil)](#pub-sub-specific-topic-device)
+ [Politiques relatives à la publication, à l'abonnement et à la réception de messages ( to/from sujets avec un attribut thing dans le nom du sujet)](#pub-sub-topic-attribute)
+ [Politiques pour refuser la publication de messages dans les sous-thèmes d'un nom de la rubrique](#pub-sub-deny-publish)
+ [Politiques pour refuser la réception de messages provenant de sous-rubriques d'un nom d’objet](#pub-sub-deny-receive)
+ [Politiques d'abonnement à des rubriques utilisant des caractères génériques MQTT](#pub-sub-topic-wildcard)
+ [Politiques pour HTTP et les WebSocket clients](#pub-sub-policy-cognito)

## Utilisation de caractères génériques dans le MQTT et les politiques AWS IoT Core
<a name="pub-sub-policy-cert"></a>

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](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html#topicfilters) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#policies-grammar-json). 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 politique et d'autres exemples de leurs correspondances, consultez la section [Utilisation de caractères génériques dans](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_resource.html#reference_policies_elements_resource_wildcards) une ressource. ARNs

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 | 
| --- | --- | --- | --- | --- | 
| \$1 | Oui | some/\$1 | Non | N/A | 
| \$1 | Oui | some/\$1/topic | Non | N/A | 
| \$1 | 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
<a name="pub-sub-specific-topic"></a>

Vous trouverez ci-dessous des exemples d'appareils enregistrés et non enregistrés pour publier, s'abonner et recevoir des messages dont to/from le sujet est intitulé « some\$1specific\$1topic ». 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\$1special\$1topic ».

****  

```
{
	"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\$1special\$1topic ».

****  

```
{
    "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
<a name="pub-sub-policy-specific-topic-prefix"></a>

Vous trouverez ci-dessous des exemples d'appareils enregistrés et non enregistrés permettant de publier, de s'abonner et de recevoir des messages dont le préfixe to/from est « topic\$1prefix ».

**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 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\$1prefix ».

****  

```
{
	"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\$1prefix ».

****  

```
{
    "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)
<a name="pub-sub-specific-topic-device"></a>

Vous trouverez ci-dessous des exemples d'appareils enregistrés et non enregistrés permettant de publier, de s'abonner et de recevoir des messages to/from sur des sujets spécifiques à l'appareil en question.

------
#### [ 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 « thing1", l'appareil pourra publier dans le sujet « sensor/device/thing1". The device will also be able to subscribe to and receive from the topic "command/device/thing 1".

****  

```
{
	"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 avec ClientID en tant que ClientID1, il pourra publier sur le sujet « 1". sensor/device/clientId L'appareil pourra également s'abonner au sujet et en recevoir`device/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 sujets avec un attribut thing dans le nom du sujet)
<a name="pub-sub-topic-attribute"></a>

Vous trouverez ci-dessous un exemple permettant aux appareils enregistrés de publier, de s'abonner et de recevoir des to/from sujets de messages dont le nom inclut 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 dans le registre contient un `version=v1` et`location=Seattle`, l'appareil pourra publier dans le sujet « sensor/v1", and subscribe to and receive from the topic "command/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: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
<a name="pub-sub-deny-publish"></a>

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 à l'aide de 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
<a name="pub-sub-deny-receive"></a>

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\$1prefix ». `NotResource`En utilisant dans l'instruction for`iot:Receive`, nous autorisons l'appareil à recevoir des messages provenant de tous les sujets auxquels il est abonné, à l'exception des sujets préfixés par « prefix/restricted". For example, with this policy, devices can subscribe to "topic\$1prefix/topic1" and even "topic\$1prefix/restricted", however, they will only receive messages from the topic "topic\$1prefix/topic1" and no messages from the topic "topic\$1prefix/restricted topic\$1 ».

****  

```
{
	"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\$1prefix ». `NotResource`En utilisant dans l'instruction for`iot:Receive`, nous autorisons l'appareil à recevoir des messages relatifs à tous les sujets auxquels il est abonné, à l'exception des sujets préfixés par « prefix/restricted". For example, with this policy, devices can subscribe to "topic\$1prefix/topic1" and even "topic\$1prefix/restricted". However, they will only receive messages from the topic "topic\$1prefix/topic1" and no messages from the topic "topic\$1prefix/restricted topic\$1 ».

****  

```
{
    "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
<a name="pub-sub-topic-wildcard"></a>

Les caractères génériques MQTT \$1 et \$1 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, \$1 et \$1 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 de 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/\$1/employés » et « emplacement/\$1 ». Dans la mesure où \$1 et \$1 sont traités comme des chaînes littérales dans AWS IoT Core les politiques, les appareils peuvent s'abonner à la rubrique « département/\$1/employés », mais pas à la rubrique « ». department/engineering/employees". Similarly, devices can subscribe to the topic "location/\$1" but not to the topic "location/Seattle". However, once the device subscribes to the topic "department/\$1/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/\$1", they will receive messages from the topic "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/\$1/employés » et « emplacement/\$1 ». Dans la mesure où \$1 et \$1 sont traités comme des chaînes littérales dans AWS IoT Core les politiques, les appareils peuvent s'abonner à la rubrique « département/\$1/employés », mais pas à la rubrique « ». department/engineering/employees". Similarly, devices can subscribe to the topic "location/\$1" but not "location/Seattle". However, once the device subscribes to the topic "department/\$1/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/\$1", they will receive messages from the topic "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 les WebSocket clients
<a name="pub-sub-policy-cognito"></a>

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 de plus amples informations, veuillez consulter [Autorisation avec les identités Amazon Cognito](cog-iot-policies.md).

Pour les opérations suivantes, AWS IoT Core utilise des AWS IoT Core politiques associées aux identités Amazon Cognito via l'`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 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](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**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](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**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.

# Exemples de stratégies de connexion et de publication
<a name="connect-and-pub"></a>

Pour les appareils enregistrés en tant qu'objets dans le AWS IoT Core registre, la politique suivante autorise la connexion à l' AWS IoT Core aide d'un ID client correspondant au nom de l'objet et limite le périphérique à la publication sur un sujet MQTT spécifique à un ID client ou à un nom d'objet. Pour qu'une connexion soit réussie, le nom de l'objet doit être enregistré dans le AWS IoT Core registre et authentifié à l'aide d'une identité ou d'un principal attaché à l'objet :

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
      ]
    }
  ]
}
```

Pour les appareils qui ne sont pas enregistrés en tant qu'objets dans le AWS IoT Core registre, la politique suivante autorise la connexion à AWS IoT Core l'aide de l'ID client `client1` et limite l'appareil à publier sur un sujet MQTT spécifique à l'identifiant du client :

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/client1"
      ]
    }
  ]
}
```

# Exemples de stratégies de messages conservés
<a name="retained-message-policy-examples"></a>

L’utilisation des [messages conservés](mqtt.md#mqtt-retain) nécessite des politiques spécifiques. Les messages conservés sont des messages MQTT publiés avec l'indicateur RETAIN défini et stockés par AWS IoT Core. Cette section présente des exemples de politiques qui permettent des utilisations courantes des messages conservés.

**Topics**
+ [Stratégie de connexion et de publication des messages conservés](#retained-message-policy-examples-publish)
+ [Stratégie de connexion et de publication des messages Will conservés](#retained-message-policy-examples-publish-lwt)
+ [Stratégie pour répertorier et obtenir les messages conservés](#retained-message-policy-examples-list-get)

## Stratégie de connexion et de publication des messages conservés
<a name="retained-message-policy-examples-publish"></a>

Pour qu'un appareil publie des messages conservés, il doit être capable de se connecter, de publier (n'importe quel message MQTT) et de publier des messages MQTT conservés. La stratégie suivante accorde ces autorisations pour la rubrique : `device/sample/configuration` au client **device1**. Pour un autre exemple qui accorde l'autorisation de se connecter, consultez [Exemples de stratégies de connexion et de publication](connect-and-pub.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/device/sample/configuration"
			]
		}
	]
}
```

## Stratégie de connexion et de publication des messages Will conservés
<a name="retained-message-policy-examples-publish-lwt"></a>

Les clients peuvent configurer un message qui AWS IoT Core sera publié lorsqu'ils se déconnecteront de façon inattendue. MQTT appelle un tel message un [*message* Will](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Will_Flag). Un client doit avoir une condition supplémentaire ajoutée à son autorisation de connexion pour les inclure. 

Le document de stratégie suivant accorde à tous les clients l'autorisation de se connecter et de publier un message Will, identifié par sa rubrique, `will`, que AWS IoT Core conservera également.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			],
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/will"
			]
		}
	]
}
```

## Stratégie pour répertorier et obtenir les messages conservés
<a name="retained-message-policy-examples-list-get"></a>

Les services et applications peuvent accéder aux messages conservés sans avoir besoin de prendre en charge un client MQTT en appelant [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html) et [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html). Les services et applications qui appellent ces actions doivent être autorisés à l’aide d’une stratégie telle que l’exemple suivant.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:ListRetainedMessages"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/device1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetRetainedMessage"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/foo"
            ]
        }
    ]
}
```

# Exemples de stratégies de certificat
<a name="certificate-policy-examples"></a>

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante autorise la connexion à l' AWS IoT Core aide d'un ID client correspondant au nom d'un objet et la publication sur une rubrique dont le nom est égal à celui `certificateId` du certificat utilisé par l'appareil pour s'authentifier :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante autorise la connexion AWS IoT Core avec le client IDs, `client1``client2`, `client3` et la publication sur une rubrique dont le nom est égal à celui `certificateId` du certificat utilisé par l'appareil pour s'authentifier :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante autorise la connexion à l' AWS IoT Core aide d'un ID client correspondant au nom de l'objet et la publication dans une rubrique dont le nom est égal au `CommonName` champ du sujet du certificat utilisé par l'appareil pour s'authentifier :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

**Note**  
Dans cet exemple, le nom commun de l'objet du certificat est utilisé comme identifiant de rubrique, en supposant que le nom commun de l'objet est unique pour chaque certificat enregistré. Si les certificats sont partagés entre plusieurs appareils, le nom commun de l'objet est le même pour tous les appareils qui partagent ce certificat, ce qui autorise la publication dans la même rubrique à partir de plusieurs appareils (non recommandé).

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante autorise la connexion AWS IoT Core avec le client IDs`client1`,`client2`, `client3` et la publication sur une rubrique dont le nom est égal au `CommonName` champ du sujet du certificat utilisé par l'appareil pour s'authentifier :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

**Note**  
Dans cet exemple, le nom commun de l'objet du certificat est utilisé comme identifiant de rubrique, en supposant que le nom commun de l'objet est unique pour chaque certificat enregistré. Si les certificats sont partagés entre plusieurs appareils, le nom commun de l'objet est le même pour tous les appareils qui partagent ce certificat, ce qui autorise la publication dans la même rubrique à partir de plusieurs appareils (non recommandé).

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante autorise la connexion à l' AWS IoT Core aide d'un ID client correspondant au nom de l'objet et la publication dans une rubrique dont le nom est préfixé `admin/` lorsque le `Subject.CommonName.2` champ du certificat utilisé pour authentifier l'appareil est défini sur : `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante accorde l'autorisation de se connecter au AWS IoT Core client IDs `client1` `client3` et de publier sur une rubrique dont le nom est préfixé `admin/` lorsque le `Subject.CommonName.2` champ du certificat utilisé pour authentifier l'appareil est défini sur : `client2` `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante permet à un appareil d'utiliser son nom d'objet pour publier sur un sujet spécifique, `admin/` suivi du `ThingName` moment où l'un des `Subject.CommonName` champs du certificat utilisé pour authentifier l'appareil est défini sur : `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/${iot:Connection.Thing.ThingName}"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante autorise la connexion AWS IoT Core au client IDs `client1` `client3` et la publication dans la rubrique `admin` lorsque l'un des `Subject.CommonName` champs du certificat utilisé pour authentifier l'appareil est défini sur : `client2` `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

# Exemples de stratégies d'objet
<a name="thing-policy-examples"></a>

La politique suivante permet à un appareil de se connecter si le certificat utilisé pour s'authentifier AWS IoT Core est attaché à l'objet pour lequel la politique est évaluée :

****  

```
{  
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {  
            "Effect":"Allow",
            "Action":["iot:Connect"],
            "Resource":[ "*" ],
            "Condition": {
                "Bool": {
                    "iot:Connection.Thing.IsAttached": ["true"]
            }
        }
        }
    ]
}
```

La stratégie suivante autorise un appareil à publier si le certificat est attaché à un objet avec un type d'objet particulier et celui-ci a un attribut `attributeName` avec une valeur `attributeValue`. Pour plus d'informations sur les variables de stratégie d'objet, consultez [Variables de stratégie d'objet](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/device/stats",
      "Condition": {
        "StringEquals": {
          "iot:Connection.Thing.Attributes[attributeName]": "attributeValue",
          "iot:Connection.Thing.ThingTypeName": "Thing_Type_Name"
        },
        "Bool": {
          "iot:Connection.Thing.IsAttached": "true"
        }
      }
    }
  ]
}
```

La stratégie suivante permet à un appareil de publier sur une rubrique qui commence par un attribut de l'objet. Si le certificat de périphérique n'est pas associé à l'objet, cette variable ne sera pas résolue et entraînera une erreur d'accès refusé. Pour plus d'informations sur les variables de stratégie d'objet, consultez [Variables de stratégie d'objet](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.Attributes[attributeName]}/*"
    }
  ]
}
```

# Exemple de stratégie d'emploi de base
<a name="basic-jobs-example"></a>

Cet exemple montre les déclarations de stratégie requises pour qu'une cible de tâche qui est un appareil unique reçoive une demande de tâche et communique l'état d'exécution de la tâche avec AWS IoT.

Remplacez-le *us-west-2:57EXAMPLE833* par votre Région AWS, deux points (:)) et votre Compte AWS numéro à 12 chiffres, puis remplacez *uniqueThingName* par le nom de l'objet dans AWS IoT lequel la ressource représente le périphérique.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iotjobsdata:DescribeJobExecution",
                "iotjobsdata:GetPendingJobExecutions",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName"
            ]
        }
    ]
}
```

# Autorisation avec les identités Amazon Cognito
<a name="cog-iot-policies"></a>

Il existe deux types d'identités Amazon Cognito : non authentifiées et authentifiées. Si votre application prend en charge les identités Amazon Cognito non authentifiées, aucune authentification n'est effectuée, vous ne sauriez donc pas qui est l'utilisateur. 

**Unauthenticated Identities :** Pour les identités Amazon Cognito non authentifiées, vous accordez des autorisations en attachant un rôle IAM à une réserve d'identités non authentifiées. Nous vous recommandons d'accorder uniquement l'accès aux ressources que vous souhaitez rendre accessibles aux utilisateurs inconnus.

**Important**  
Pour les utilisateurs non authentifiés d'Amazon Cognito qui se connectent AWS IoT Coreà, nous vous recommandons de donner accès à des ressources très limitées dans les politiques IAM.

**Identités authentifiées** : pour les identités Amazon Cognito authentifiées, vous devez spécifier les autorisations à deux endroits : 
+ Attachez une Politique IAM au réserve d'identités Amazon Cognito authentifié et
+ Associez une AWS IoT Core politique à l'identité Amazon Cognito (utilisateur authentifié).

## Exemples de politiques pour les utilisateurs authentifiés et non authentifiés d'Amazon Cognito qui se connectent à AWS IoT Core
<a name="cog-iot-policies-auth-unauth-examples"></a>

L'exemple suivant montre les autorisations dans la Politique IAM et IoT d'une identité Amazon Cognito. L'utilisateur authentifié souhaite publier sur un sujet spécifique à l'appareil (par exempledevice/DEVICE\$1ID/status).

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/Client_ID"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/device/Device_ID/status"
            ]
        }
    ]
}
```

L'exemple suivant montre les autorisations dans une Politique IAM d'un rôle non authentifié Amazon Cognito. L'utilisateur non authentifié souhaite publier sur des rubriques non spécifiques à un appareil qui ne nécessitent pas d'authentification.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/non_device_specific_topic"
            ]
        }
    ]
}
```

## GitHub exemples
<a name="cog-iot-policies-github"></a>

Les exemples d'applications Web suivants GitHub montrent comment intégrer l'attachement aux politiques des utilisateurs authentifiés dans le processus d'inscription et d'authentification des utilisateurs.
+ [Application Web MQTT publish/subscribe React utilisant AWS Amplify et Kit SDK des appareils AWS IoT pour JavaScript](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp)
+ [Application Web MQTT publish/subscribe React utilisant AWS AmplifyKit SDK des appareils AWS IoT pour JavaScript, la et une fonction Lambda](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda)

Amplify est un ensemble d'outils et de services qui vous aident à créer des applications Web et mobiles qui s'intègrent aux AWS services. Pour plus d’informations sur Amplify, consultez [Documentation du Cadre Amplify,](https://docs.amplify.aws/).

Les deux exemples effectuent les étapes suivantes.

1. Lorsqu'un utilisateur crée un compte, l'application crée un groupe d'utilisateurs et une identité Amazon Cognito.

1. Lorsqu'un utilisateur s'authentifie, l'application crée et attache une stratégie à l'identité. Cela donne à l'utilisateur des autorisations de publication et d'abonnement.

1. L'utilisateur peut utiliser l'application pour publier et s'abonner à des rubriques MQTT.

Le premier exemple utilise l’opération API `AttachPolicy` directement dans l’opération d’authentification. L'exemple suivant montre comment implémenter cet appel d'API dans une application Web React qui utilise Amplify et le Kit SDK des appareils AWS IoT pour JavaScript.

```
function attachPolicy(id, policyName) {
    var Iot = new AWS.Iot({region: AWSConfiguration.region, apiVersion: AWSConfiguration.apiVersion, endpoint: AWSConfiguration.endpoint});
    var params = {policyName: policyName, target: id};

    console.log("Attach IoT Policy: " + policyName + " with cognito identity id: " + id);
    Iot.attachPolicy(params, function(err, data) {
         if (err) {
               if (err.code !== 'ResourceAlreadyExistsException') {
                  console.log(err);
               }
          }
         else  {
            console.log("Successfully attached policy with the identity", data);
         }
     });
}
```

Ce code apparaît dans le fichier [AuthDisplay.js.](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp/blob/d1c307b36357be934db9dda020140fa337709cd9/src/AuthDisplay.js#L45)

Le deuxième exemple implémente l'opération API `AttachPolicy` dans une fonction Lambda. L'exemple suivant montre comment Lambda utilise cet appel d'API.

```
iot.attachPolicy(params, function(err, data) {
     if (err) {
           if (err.code !== 'ResourceAlreadyExistsException') {
              console.log(err);
              res.json({error: err, url: req.url, body: req.body});
           }
      }
     else  {
        console.log(data);
        res.json({success: 'Create and attach policy call succeed!', url: req.url, body: req.body});
     }
 });
```

Ce code apparaît à l'intérieur de la fonction `iot.GetPolicy` dans le fichier [app.js](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda/blob/e493039581d2aff0faa3949086deead20a2c5385/amplify/backend/function/amplifyiotlambda/src/app.js#L50).

**Note**  
Lorsque vous appelez la fonction avec les AWS informations d'identification que vous obtenez via les pools Amazon Cognito Identity, l'objet de contexte de votre fonction Lambda contient une valeur pour. `context.cognito_identity_id` Pour plus d’informations, consultez les rubriques suivantes.   
[AWS Lambda objet de contexte dans Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)
[AWS Lambda objet de contexte en Python](https://docs.aws.amazon.com/lambda/latest/dg/python-context.html)
[AWS Lambda objet de contexte dans Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-context.html)
[AWS Lambda objet de contexte en Java](https://docs.aws.amazon.com/lambda/latest/dg/java-context.html)
[AWS Lambda objet de contexte dans Go](https://docs.aws.amazon.com/lambda/latest/dg/golang-context.html)
[AWS Lambda objet de contexte en C\$1](https://docs.aws.amazon.com/lambda/latest/dg/csharp-context.html)
[AWS Lambda objet de contexte dans PowerShell](https://docs.aws.amazon.com/lambda/latest/dg/powershell-context.html)

# Autoriser les appels directs vers des AWS services à l'aide d'un fournisseur AWS IoT Core d'informations d'identification
<a name="authorizing-direct-aws"></a>

Les appareils peuvent utiliser des certificats X.509 pour se connecter à AWS IoT Core l'aide des protocoles d'authentification mutuelle TLS. AWS Les autres services ne prennent pas en charge l'authentification par certificat, mais ils peuvent être appelés à l'aide AWS d'informations d'identification au format [AWS Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). L'[algorithme Signature Version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) exige normalement que l'appelant dispose d'un identifiant de clé d'accès et d'une clé d'accès secrète. AWS IoT Core dispose d'un fournisseur d'informations d'identification qui vous permet d'utiliser le [certificat X.509](x509-client-certs.html) intégré comme identité unique de l'appareil pour AWS authentifier les demandes. Ainsi, vous n'avez plus besoin de stocker un ID de clé d'accès et une clé d'accès secrète sur votre appareil.

Le fournisseur d'informations d'identification authentifie un mandataire en utilisant un certificat X.509 et émet un jeton de sécurité temporaire à privilèges limités. Le jeton peut être utilisé pour signer et authentifier n'importe quelle AWS demande. Pour authentifier vos AWS demandes, vous devez créer et configurer un [rôle Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) et associer les politiques IAM appropriées au rôle afin que le fournisseur d'informations d'identification puisse assumer le rôle en votre nom. Pour plus d'informations sur AWS IoT Core IAM, consultez [Gestion des identités et des accès pour AWS IoT](security-iam.md).

 AWS IoT exige que les appareils envoient l'[extension SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) au protocole TLS (Transport Layer Security) et fournissent l'adresse complète du point de terminaison sur le `host_name` terrain. Le champ `host_name` doit contenir le point de terminaison que vous appelez, et il doit être :
+ L’`endpointAddress` renvoyée par `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:CredentialProvider`.

Les connexions tentées par des appareils sans la valeur `host_name` correcte échoueront.

Le schéma suivant illustre le flux de travail du fournisseur d'informations d'identification.

![\[AWS IoT Core flux de travail du fournisseur d'informations d'identification\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/credentials-provider-diagram.png)


1. L' AWS IoT Core appareil envoie une demande HTTPS au fournisseur d'informations d'identification pour obtenir un jeton de sécurité. La demande inclut le certificat X.509 de l'appareil pour l'authentification.

1. Le fournisseur d'informations d'identification transmet la demande au module AWS IoT Core d'authentification et d'autorisation pour valider le certificat et vérifier que l'appareil est autorisé à demander le jeton de sécurité.

1. Si le certificat est valide et est autorisé à demander un jeton de sécurité, le module AWS IoT Core d'authentification et d'autorisation indique la réussite. Dans le cas contraire, il envoie une exception à l'appareil.

1. Une fois que le fournisseur d'informations d'identification a validé le certificat, il appelle [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) pour endosser le rôle IAM que vous avez créé à son intention.

1. AWS STS renvoie un jeton de sécurité temporaire à privilèges limités au fournisseur d'informations d'identification.

1. Le fournisseur d'informations d'identification renvoie le jeton de sécurité à l'appareil.

1. L'appareil utilise le jeton de sécurité pour signer une AWS demande avec AWS Signature Version 4.

1. Le service demandé invoque IAM à valider la signature et à autoriser la demande par rapport aux stratégies d'accès attachées au rôle IAM que vous avez créé pour le fournisseur d'informations d'identification.

1. Si IAM valide la signature avec succès et autorise la demande, celle-ci aboutit. Sinon, IAM envoie une exception.

La section suivante explique comment utiliser un certificat pour obtenir un jeton de sécurité. Elle est rédigée en partant du principe que vous avez déjà [enregistré un appareil](register-device.html) et [créé, puis activé votre propre certificat](device-certs-your-own.html) pour celui-ci.

## Comment utiliser un certificat pour obtenir un jeton de sécurité
<a name="authorizing-direct-aws.walkthrough"></a>

1. Configurez le rôle IAM que le fournisseur d'informations d'identification endosse au nom de votre appareil. Attachez la stratégie d'approbation suivante au rôle.   
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Service": "credentials.iot.amazonaws.com"},
           "Action": "sts:AssumeRole"
       }
   }
   ```

   Pour chaque AWS service que vous souhaitez appeler, associez une politique d'accès au rôle. Le fournisseur d'informations d'identification prend en charge les variables de stratégie suivantes :
   + `credentials-iot:ThingName`
   + `credentials-iot:ThingTypeName`
   + `credentials-iot:AwsCertificateId`

   Lorsque l'appareil fournit le nom d'objet dans sa demande adressée à un service AWS , le fournisseur d'informations d'identification ajoute `credentials-iot:ThingName` et `credentials-iot:ThingTypeName` en tant que variables de contexte au jeton de sécurité. Le fournisseur d'informations d'identification fournit `credentials-iot:AwsCertificateId` en tant que variable de contexte, même si l'appareil ne fournit pas le nom d'objet dans la demande. Vous transmettez le nom d'objet comme valeur de l'en-tête de la demande HTTP `x-amzn-iot-thingname`.

   Ces trois variables opèrent uniquement pour les stratégies IAM, et non pour les stratégies AWS IoT Core .

1. Vérifiez que l'utilisateur qui effectue l'étape suivante (création d'un alias de rôle) est autorisé à transmettre le rôle nouvellement créé à AWS IoT Core. La politique suivante accorde à la fois `iam:GetRole` des `iam:PassRole` autorisations et des autorisations à un AWS utilisateur. L'autorisation `iam:GetRole` autorise l'utilisateur à obtenir des informations sur le rôle que vous venez de créer. L'`iam:PassRole`autorisation permet à l'utilisateur de transmettre le rôle à un autre AWS service.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "iam:GetRole",
               "iam:PassRole"
           ],
           "Resource": "arn:aws:iam::123456789012:role/your role name"
       }
   }
   ```

1. Créez un alias de AWS IoT Core rôle. L'appareil qui va passer des appels directs aux AWS services doit savoir quel rôle ARN utiliser lors de la connexion AWS IoT Core. Coder en dur l'ARN de rôle n'est pas une bonne solution, car cela vous contraint de mettre à jour l'appareil chaque fois que l'ARN de rôle est modifié. Il vaut mieux utiliser l'API `CreateRoleAlias` pour créer un alias de rôle qui pointe vers l'ARN de rôle. Si l'ARN de rôle est modifié, il vous suffit de mettre à jour l'alias de rôle. Aucune modification n'est nécessaire sur l'appareil. Cette API accepte les paramètres suivants :  
`roleAlias`  
Obligatoire. Chaîne arbitraire qui identifie l'alias de rôle. Elle fait office de clé primaire dans le modèle de données d'alias de rôle. Elle contient entre 1 et 128 caractères et doit se composer uniquement de caractères alphanumériques et de symboles =, @ et -. Les caractères alphabétiques majuscules et minuscules sont autorisés. Les noms d'alias de rôle distinguent les majuscules et minuscules.  
`roleArn`  
Obligatoire. ARN du rôle auquel l'alias de rôle fait référence.  
`credentialDurationSeconds`  
Facultatif. Durée de validité (en secondes) des informations d'identification. La valeur minimale est de 900 secondes (15 minutes). La valeur maximale est de 43 200 secondes (12 heures). La valeur par défaut est de 3 600 secondes (1 heure).   
Le fournisseur AWS IoT Core d'identifiants peut délivrer un identifiant dont la durée de vie maximale est de 43 200 secondes (12 heures). Le fait que les informations d'identification soient valides jusqu'à 12 heures peut contribuer à réduire le nombre d'appels au fournisseur d'informations d'identification en mettant les informations d'identification en cache plus longtemps.  
La valeur `credentialDurationSeconds` doit être inférieure ou égale à la durée maximale de session du rôle IAM auquel l'alias de rôle fait référence. Pour plus d'informations, consultez la section [Modification de la durée maximale de session (AWS API) d'un rôle](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-api.html#roles-modify_max-session-duration-api) dans le guide de l'utilisateur d' AWS Identity and Access Management.

   Pour plus d'informations sur cette API, consultez [CreateRoleAlias](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateRoleAlias.html). 

1. Attachez une stratégie au certificat de l'appareil. La stratégie attachée au certificat de l'appareil doit accorder à l'appareil l'autorisation d'assumer le rôle. Pour ce faire, vous devez accorder une autorisation à l'alias de rôle pour l'action `iot:AssumeRoleWithCertificate`, comme dans l'exemple suivant.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iot:AssumeRoleWithCertificate",
               "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/your role alias"
           }
       ]
   }
   ```

1. Adressez une demande HTTPS au fournisseur d'informations d'identification pour obtenir un jeton de sécurité. Fournissez les informations suivantes :
   + *Certificate* : s'agissant d'une demande HTTP avec authentification mutuelle TLS, vous devez fournir le certificat et la clé privée à votre client lorsque vous faites la demande. Utilisez le même certificat et la même clé privée que ceux que vous avez utilisés lors de l'enregistrement de votre certificat AWS IoT Core.

     Pour vous assurer que votre appareil communique avec lui AWS IoT Core (et non avec un service se faisant passer pour lui), consultez [Authentification du serveur](x509-client-certs.html#server-authentication), suivez les liens pour télécharger les certificats CA appropriés, puis copiez-les sur votre appareil.
   + *RoleAlias*: nom de l'alias de rôle que vous avez créé pour le fournisseur d'informations d'identification. Les noms d'alias de rôle distinguent les majuscules et minuscules et doivent correspondre à l'alias de rôle créé dans AWS IoT Core.
   + *ThingName*: nom d'objet que vous avez créé lors de l'enregistrement de votre AWS IoT Core objet. Celui-ci est transmis comme valeur de l'en-tête HTTP `x-amzn-iot-thingname`. Cette valeur n'est requise que si vous utilisez des attributs d'objet comme variables de stratégie dans AWS IoT Core les politiques IAM.
**Note**  
Le nom *ThingName*que vous fournissez `x-amzn-iot-thingname` doit correspondre au nom de la ressource d' AWS IoT objet affectée à un certificat. Si cela ne correspond pas, une erreur 403 est renvoyée.

   Exécutez la commande suivante dans le AWS CLI pour obtenir le point de terminaison du fournisseur d'informations d'identification pour votre Compte AWS. Pour plus d'informations sur cette API, consultez [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html). Pour les points de terminaison compatibles FIPS, voir. [AWS IoT Core- points de terminaison du fournisseur d'informations d'identification](iot-connect-fips.md#iot-connect-fips-credential)

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   L'objet JSON ci-dessous est un exemple de sortie de la commande **describe-endpoint**. Il contient le paramètre `endpointAddress` que vous utilisez pour demander un jeton de sécurité.

   ```
   {
       "endpointAddress": "your_aws_account_specific_prefix.credentials.iot.your region.amazonaws.com"
   }
   ```

   Utilisez le point de terminaison pour adresser une demande HTTPS au fournisseur d'informations d'identification pour qu'il renvoie un jeton de sécurité. L'exemple de commande suivant utilise `curl`, mais vous pouvez utiliser n'importe quel client HTTP.
**Note**  
Le nom *RoleAlias* distingue les majuscules et minuscules et doit correspondre à l'alias de rôle créé dans. AWS IoT

   ```
   curl --cert your certificate --key your private key -H "x-amzn-iot-thingname: your thing name" --cacert AmazonRootCA1.pem https://your endpoint /role-aliases/your role alias/credentials
   ```

   Cette commande renvoie un objet de jeton de sécurité qui contient les éléments `accessKeyId`, `secretAccessKey`, `sessionToken`, ainsi qu'un délai d'expiration. L'objet JSON ci-dessous est un exemple de sortie de la commande `curl`.

   ```
       {"credentials":{"accessKeyId":"access key","secretAccessKey":"secret access key","sessionToken":"session token","expiration":"2018-01-18T09:18:06Z"}}
   ```

   Vous pouvez ensuite utiliser les `sessionToken` valeurs `accessKeyId``secretAccessKey`, et pour signer les demandes adressées aux AWS services. Pour une end-to-end démonstration, consultez l'article [Comment éliminer le besoin d'informations d' AWS identification codées en dur sur les appareils en utilisant le billet de blog du fournisseur AWS IoT d'informations d'identification](https://aws.amazon.com/blogs/security/how-to-eliminate-the-need-for-hardcoded-aws-credentials-in-devices-by-using-the-aws-iot-credentials-provider/) sur le blog sur la *AWS sécurité*.

# Accès intercompte avec IAM
<a name="cross-account-access"></a>

AWS IoT Core vous permet d'autoriser un directeur à publier ou à s'abonner à un sujet défini dans un sujet qui Compte AWS n'appartient pas au principal. Vous configurez l'accès entre comptes en créant une politique IAM et un rôle IAM, puis en attachant la stratégie au rôle.

Tout d'abord, créez une politique IAM gérée par le client (voir [Création de stratégies IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html), comme vous le feriez pour d'autres utilisateurs et certificats de votre Compte AWS. 

Pour les appareils enregistrés dans le AWS IoT Core registre, la politique suivante autorise les appareils à se connecter à AWS IoT Core l'aide d'un identifiant client correspondant au nom de l'objet de l'appareil et à publier sur le site `my/topic/thing-name ` où se *thing-name* trouve le nom de l'objet de l'appareil :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:Connection.Thing.ThingName}"
            ]
        }
    ]
}
```

Pour les appareils non enregistrés dans le AWS IoT Core registre, la politique suivante autorise un appareil à utiliser le nom d'objet `client1` enregistré dans le AWS IoT Core registre de votre compte (123456789012) pour se connecter AWS IoT Core et publier sur une rubrique spécifique à l'identifiant client dont le nom est préfixé par : `my/topic/`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
            ]
        }
    ]
}
```

Suivez ensuite les étapes décrites dans [Création d'un rôle pour déléguer des autorisations à un utilisateur IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html). Saisissez l'ID du compte Compte AWS avec lequel vous souhaitez partager l'accès. Puis, dans la dernière étape, attachez la stratégie que vous venez de créer au rôle. Si, ultérieurement, vous avez besoin de modifier l'ID de compte AWS auquel vous accordez l'accès, vous pouvez utiliser le format de stratégie d'approbation suivant à cet effet : 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::567890123456:user/MyUser"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```