

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.

# Sécurité dans AWS IoT
<a name="security"></a>

La sécurité du cloud AWS est la priorité absolue. En tant que AWS client, vous bénéficiez d'un centre de données et d'une architecture réseau conçus pour répondre aux exigences des entreprises les plus sensibles en matière de sécurité.

La sécurité est une responsabilité partagée entre vous AWS et vous. Le [modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) décrit cette notion par les termes sécurité *du* cloud et sécurité *dans* le cloud :
+ **Sécurité du cloud** : AWS est chargée de protéger l'infrastructure qui exécute les AWS services dans le AWS cloud. AWS vous fournit également des services que vous pouvez utiliser en toute sécurité. Des auditeurs tiers testent et vérifient régulièrement l’efficacité de notre sécurité dans le cadre des [programmes de conformitéAWS](https://aws.amazon.com/compliance/programs/). Pour en savoir plus sur les programmes de conformité qui s'appliquent à AWS IoT, consultez la section [AWS Services concernés par programme de conformité](https://aws.amazon.com/compliance/services-in-scope/).
+ **Sécurité dans le cloud** — Votre responsabilité est déterminée par le AWS service que vous utilisez. Vous êtes également responsable d’autres facteurs, y compris la sensibilité de vos données, les exigences de votre entreprise, ainsi que la législation et la réglementation applicables. 

Cette documentation vous aide à comprendre comment appliquer le modèle de responsabilité partagée lors de son utilisation AWS IoT. Les rubriques suivantes expliquent comment procéder à la configuration AWS IoT pour atteindre vos objectifs de sécurité et de conformité. Vous apprendrez également à utiliser d'autres AWS services qui vous aident à surveiller et à sécuriser vos AWS IoT ressources. 

**Topics**
+ [AWS IoT sécurité](iot-security.md)
+ [Authentification](authentication.md)
+ [Autorisation](iot-authorization.md)
+ [Protection des données dans AWS IoT Core](data-protection.md)
+ [Gestion des identités et des accès pour AWS IoT](security-iam.md)
+ [Journalisation et surveillance](security-logging.md)
+ [Validation de conformité pour AWS IoT Core](compliance.md)
+ [La résilience au cœur de AWS l'IoT](disaster-recovery-resiliency.md)
+ [Utilisation AWS IoT Core avec les points de terminaison VPC de l'interface](IoTCore-VPC.md)
+ [Sécurité de l'infrastructure dans AWS IoT](infrastructure-security.md)
+ [Surveillance de la sécurité des flottes de production ou des appareils avec Core AWS IoT](security-monitoring.md)
+ [Bonnes pratiques de sécurité dans AWS IoT Core](security-best-practices.md)
+ [AWS formation et certification](#iot-security-training)

# AWS IoT sécurité
<a name="iot-security"></a>

Chaque appareil ou client connecté doit disposer d'informations d'identification pour interagir avec AWS IoT. Tout le trafic en provenance et à destination AWS IoT est envoyé de manière sécurisée via le protocole TLS (Transport Layer Security). AWS les mécanismes de sécurité du cloud protègent les données lorsqu'elles passent AWS IoT d'un AWS service à un autre.

![\[AWS IoT les flux de travail de sécurité, y compris les informations d'identification avec lesquelles interagir AWS IoT, la sécurité de la couche de transport pour sécuriser la connexion et les mécanismes de sécurité du AWS cloud pour protéger les données.\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/thunderball-overview.png)

+ Vous êtes responsable de la gestion des informations d'identification des appareils (certificats X.509, informations d'identification, Amazon Cognito, identités AWS , identités fédérées ou jetons d'authentification personnalisés) et des politiques dans AWS IoT. Vous êtes également responsable de l'attribution d'identités uniques à chaque appareil et de la gestion des autorisations pour chaque appareil ou groupe d'appareils.
+ Vos appareils se connectent à AWS IoT l'aide de certificats X.509 ou d'identités Amazon Cognito via une connexion TLS sécurisée. Au cours de la recherche et du développement, et pour certaines applications qui effectuent des appels ou utilisent des API WebSockets, vous pouvez également vous authentifier à l'aide d'utilisateurs et de groupes IAM ou de jetons d'authentification personnalisés. Pour de plus amples informations, veuillez consulter [Utilisateurs, groupes et rôles IAM](iam-users-groups-roles.md).
+ Lorsque vous utilisez l' AWS IoT authentification, le courtier de messages est chargé d'authentifier vos appareils, d'ingérer en toute sécurité les données des appareils et d'accorder ou de refuser les autorisations d'accès que vous spécifiez pour vos appareils à l'aide AWS IoT de politiques.
+ Lorsque vous utilisez l'authentification personnalisée, un autorisateur personnalisé est chargé d'authentifier vos appareils et d'accorder ou de refuser les autorisations d'accès que vous spécifiez pour vos appareils en utilisant les politiques AWS IoT IAM.
+ Le moteur de AWS IoT règles transmet les données des appareils à d'autres appareils ou à d'autres AWS services conformément aux règles que vous définissez. Il permet Gestion des identités et des accès AWS de transférer des données en toute sécurité vers leur destination finale. Pour de plus amples informations, veuillez consulter [Gestion des identités et des accès pour AWS IoT](security-iam.md).

# Authentification
<a name="authentication"></a>

L'authentification est un mécanisme permettant de vérifier l'identité d'un client ou d'un serveur. L'authentification du serveur est le processus par lequel les appareils ou autres clients s'assurent qu'ils communiquent avec un point de AWS IoT terminaison réel. L'authentification des clients est le processus par lequel les appareils ou d'autres clients s'authentifient. AWS IoT

## Présentation des certificats X.509
<a name="x509-certificate-overview"></a>

Les certificats X.509 sont des certificats numériques qui font appel à la [norme d'infrastructure de clé publique X.509](https://en.wikipedia.org/wiki/X.509) pour associer une clé publique à une identité contenue dans un certificat. Les certificats X.509 sont émis par une entité de confiance appelée autorité de certification (CA). Celle-ci gère un ou plusieurs certificats spéciaux appelés certificats d'autorité de certification, qu'elle utilise pour émettre des certificats X.509. Seule l'autorité de certification a accès aux certificats d'autorité de certification (CA). Les chaînes de certificats X.509 sont utilisées à la fois pour l'authentification du serveur par les clients et pour l'authentification du client par le serveur.

# Authentification du serveur
<a name="server-authentication"></a>

Lorsque votre appareil ou un autre client tente de se connecter AWS IoT Core, le AWS IoT Core serveur envoie un certificat X.509 que votre appareil utilise pour authentifier le serveur. L'authentification a lieu au niveau de la couche TLS par le biais de la validation de la chaîne du [certificat X.509](x509-client-certs.md). Il s'agit de la même méthode que celle utilisée par votre navigateur lorsque vous visitez une URL HTTPS. Si vous souhaitez utiliser des certificats de votre propre autorité de certification, veuillez consulter [Gestion de vos certificats d’autorité de certification](manage-your-CA-certs.md).

Lorsque vos appareils ou d'autres clients établissent une connexion TLS avec un point de AWS IoT Core terminaison, AWS IoT Core présente une chaîne de certificats que les appareils utilisent pour vérifier qu'ils communiquent avec eux AWS IoT Core et qu'aucun autre serveur ne se fait passer AWS IoT Core pour un autre serveur. La chaîne présentée dépend de la combinaison du type de point de terminaison auquel l'appareil se connecte et de la [suite de chiffrement](transport-security.md) AWS IoT Core négociée par le client lors de la prise de contact TLS.

## Types de point de terminaison
<a name="endpoint-types"></a>

AWS IoT Core soutient`iot:Data-ATS`. `iot:Data-ATS`les points de terminaison présentent un certificat de serveur signé par une autorité de certification [Amazon Trust Services](https://www.amazontrust.com/repository/).

Les certificats présentés par les points de terminaison ATS ont été signés par Starfield (signature croisée). Certaines mises en œuvre de client TLS nécessitent la validation de la racine de confiance et exigent que les certificats d'autorité de certification Starfield soient installés dans les magasins d'approbations du client.

**Avertissement**  
L'utilisation d'une méthode d'épinglage de certificat qui hache l'ensemble du certificat (y compris le nom de l'émetteur, etc.) n'est pas recommandée car cela entraînera l'échec de la vérification du certificat, étant donné que les certificats ATS que nous fournissons sont signés par Starfield (signature croisée) et ont un nom d'émetteur différent.

**Important**  
Utilisez des `iot:Data-ATS` points de terminaison. Les certificats Symantec et Verisign sont devenus obsolètes et ne sont plus pris en charge par. AWS IoT Core

Vous pouvez utiliser la commande `describe-endpoint` pour créer votre point de terminaison ATS.

```
aws iot describe-endpoint --endpoint-type iot:Data-ATS
```

Cette commande `describe-endpoint` renvoie un point de terminaison au format suivant.

```
account-specific-prefix.iot.your-region.amazonaws.com
```

**Note**  
La première fois que la commande `describe-endpoint` est appelée, un point de terminaison est créé. Tous les appels suivants de `describe-endpoint` renvoient le même point de terminaison.

**Note**  
Pour afficher votre `iot:Data-ATS` point de terminaison dans la AWS IoT Core console, choisissez **Paramètres**. La console affiche uniquement le point de terminaison `iot:Data-ATS`.

### Création d'un `IotDataPlaneClient` avec le AWS SDK pour Java
<a name="java-client"></a>

Pour créer une annonce `IotDataPlaneClient` utilisant un `iot:Data-ATS` point de terminaison, vous devez effectuer les opérations suivantes. 
+ Créez un `iot:Data-ATS` point de terminaison à l'aide de l'[DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html)API.
+ Spécifiez ce point de terminaison lorsque vous créez le `IotDataPlaneClient`.

L'exemple suivant exécute ces deux opérations.

```
public void setup() throws Exception {
        IotClient client = IotClient.builder().credentialsProvider(CREDENTIALS_PROVIDER_CHAIN).region(Region.US_EAST_1).build();
        String endpoint = client.describeEndpoint(r -> r.endpointType("iot:Data-ATS")).endpointAddress();
        iot = IotDataPlaneClient.builder()
                                .credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
                                .endpointOverride(URI.create("https://" + endpoint))
                                .region(Region.US_EAST_1)
                                .build();
}
```

## Certificats d'autorité de certification pour l'authentification du serveur
<a name="server-authentication-certs"></a>

Selon le type de point de terminaison de données que vous utilisez et la suite de chiffrement que vous avez négociée, les certificats d'authentification AWS IoT Core du serveur sont signés par l'un des certificats d'autorité de certification racine suivants :

**Points de terminaison Amazon Trust Services (préférés)**

**Note**  
Vous devrez peut-être faire un clic droit sur ces liens et sélectionner **Enregistrer le lien sous...** pour enregistrer ces certificats sous forme de fichiers.
+ Clé RSA 2048 bits : [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem)
+ Clé RSA 4096 bits : Amazon Root CA 2 Réservé pour un usage futur.
+ Clé ECC 256 bits : [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem)
+ Clé ECC 384 bits : Amazon Root CA 4 Réservé pour un usage futur.

Ces certificats sont tous signés (signature croisée) par le [certificat d'autorité de certification racine Starfield](https://www.amazontrust.com/repository/SFSRootCAG2.pem). Toutes les nouvelles AWS IoT Core régions, à compter du lancement de AWS IoT Core la région Asie-Pacifique (Mumbai) le 9 mai 2018, ne proposent que des certificats ATS.

**VeriSign Points de terminaison (anciens)**
+ Clé RSA 2048 bits : certificat CA [VeriSign racine G5 public principal de classe 3](https://www.digicert.com/kb/digicert-root-certificates.htm)

## Instructions d'authentification du serveur
<a name="server-authentication-guidelines"></a>

De nombreuses variables peuvent affecter la capacité d'un appareil à valider le certificat d'authentification du serveur AWS IoT Core . Par exemple, les appareils peuvent être trop limités en mémoire pour contenir tous les certificats d'autorité de certification racine possibles, ou les appareils peuvent mettre en œuvre une méthode non standard de validation de certificat. Pour ces raisons, nous suggérons de suivre les instructions suivantes :
+ Nous vous recommandons d'utiliser votre point de terminaison ATS et d'installer tous les certificats Amazon Root CA pris en charge.
+ Si vous ne pouvez pas stocker tous ces certificats sur votre appareil et si vos appareils n'utilisent pas la validation basée sur ECC, vous pouvez omettre les certificats [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem) et [https://www.amazontrust.com/repository/AmazonRootCA4.pem](https://www.amazontrust.com/repository/AmazonRootCA4.pem) ECC. Si vos appareils ne mettent pas en œuvre la validation de certificats basée sur RSA, vous pouvez omettre les certificats RSA [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem) et [https://www.amazontrust.com/repository/AmazonRootCA2.pem](https://www.amazontrust.com/repository/AmazonRootCA2.pem). Vous devrez peut-être faire un clic droit sur ces liens et sélectionner **Enregistrer le lien sous...** pour enregistrer ces certificats sous forme de fichiers.
+ Si vous rencontrez des problèmes de validation de certificat de serveur lorsque vous vous connectez à votre point de terminaison ATS, essayez d'ajouter le certificat d'autorité de certification racine Amazon à signature croisée pertinent à votre magasin d'approbations. Vous devrez peut-être faire un clic droit sur ces liens et sélectionner **Enregistrer le lien sous...** pour enregistrer ces certificats sous forme de fichiers.
  + [Dument Signé Amazon Root CA 1](https://www.amazontrust.com/repository/G2-RootCA1.pem)
  + [Dument Signé Amazon Root CA 2](https://www.amazontrust.com/repository/G2-RootCA2.pem) - Réservé pour une utilisation ultérieure.
  + [Dument Signé Amazon Root CA 3](https://www.amazontrust.com/repository/G2-RootCA3.pem)
  + [Dument Signé ](https://www.amazontrust.com/repository/G2-RootCA4.pem) - Réservé pour une utilisation ultérieure.
+ Si vous rencontrez des problèmes de validation de certificat de serveur, votre appareil devra peut-être explicitement approuver l'autorité de certification racine. Essayez d'ajouter [https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) à votre boutique de confiance.
+ Si vous rencontrez toujours des problèmes après avoir exécuté les étapes ci-dessus, contactez [AWS l’assistance aux développeurs](https://aws.amazon.com/premiumsupport/plans/developers/). 

**Note**  
Les certificats CA ne peuvent pas être utilisés au-delà de leur date d'expiration pour valider un certificat de serveur. Les certificats CA peuvent devoir être remplacés avant leur date d'expiration. Vérifiez que vous pouvez mettre à jour les certificats d’autorité de certification racine sur tous vos appareils ou vos clients afin d'assurer une connectivité permanente et la conformité aux bonnes pratiques de sécurité du moment.

**Note**  
Lorsque vous vous connectez AWS IoT Core au code de votre appareil, transmettez le certificat à l'API que vous utilisez pour vous connecter. L'API que vous utilisez varie selon le kit SDK. Pour plus d'informations, consultez la section [AWS IoT Core Appareil SDKs](iot-sdks.md).

# Authentification client
<a name="client-authentication"></a>

AWS IoT prend en charge trois types de principes d'identité pour l'authentification des appareils ou des clients :
+ [Certificats client X.509](x509-client-certs.md)
+ [Utilisateurs, groupes et rôles IAM](iam-users-groups-roles.md)
+ [Identités Amazon Cognito](cognito-identities.md)

Ces identités peuvent être utilisées avec des appareils et des applications mobiles, Web ou de bureau. Ils peuvent même être utilisés par un utilisateur qui saisit des commandes d'interface de ligne de AWS IoT commande (CLI). Généralement, AWS IoT les appareils utilisent des certificats X.509, tandis que les applications mobiles utilisent les identités Amazon Cognito. Les applications Web et de bureau utilisent IAM ou des identités fédérées. Les commandes AWS CLI utilisent IAM. Pour plus d'informations sur les identités IAM, consultez [Gestion des identités et des accès pour AWS IoT](security-iam.md).

# Certificats client X.509
<a name="x509-client-certs"></a>

Les certificats X.509 permettent AWS IoT d'authentifier les connexions entre les clients et les appareils. Les certificats clients doivent être enregistrés pour AWS IoT qu'un client puisse communiquer avec lui AWS IoT. Un certificat client peut être enregistré en plusieurs Compte AWS exemplaires Région AWS pour faciliter le déplacement d'appareils entre vos appareils Compte AWS situés dans la même région. Pour plus d’informations, consultez [Utilisation de certificats client X.509 dans plusieurs Compte AWS s avec enregistrement multi-comptes](#multiple-account-cert). 

Nous vous recommandons d’attribuer à chaque appareil ou client un certificat unique de manière à permettre des actions de gestion des clients bien définies, y compris la révocation de certificats. Les appareils et les clients doivent également prendre en charge la rotation et le remplacement des certificats afin d'aider à assurer un bon fonctionnement à l'expiration de ces derniers.

Pour de plus amples informations sur l'utilisation des certificats X.509 pour la prise en charge d’un grand nombre d’appareils, veuillez consulter [Mise en service des appareils](iot-provision.md) pour prendre connaissance des différentes options de gestion des certificats et de mise en service prises en charge par AWS IoT .

**AWS IoT prend en charge les types de certificats clients X.509 suivants :**
+  Certificats X.509 générés par AWS IoT
+  Certificats X.509 signés par une autorité de certification enregistrée auprès AWS IoT de.
+  Certificats X.509 signés par une autorité de certification non enregistrée auprès d’ AWS IoT.

Cette section décrit comment gérer les certificats X.509 dans AWS IoT. Vous pouvez utiliser la AWS IoT console ou AWS CLI effectuer les opérations de certificat suivantes :
+ [Création de certificats AWS IoT clients](device-certs-create.md)
+ [Création de vos propres certificats clients](device-certs-your-own.md)
+ [Enregistrement d’un certificat client](register-device-cert.md)
+ [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md)
+ [Révocation d’un certificat client](revoke-ca-cert.md)

Pour plus d'informations sur les AWS CLI commandes qui exécutent ces opérations, consultez la section [Référence de la AWS IoT CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

## Utilisation des certificats clients X.509
<a name="x509-client-cert-basics"></a>

Les certificats X.509 authentifient les connexions des clients et des appareils à. AWS IoT Les certificats X.509 offrent plusieurs avantages par rapport à d'autres mécanismes d'identification et d'authentification. Les certificats X.509 activent des clés asymétriques à utiliser avec les appareils. Par exemple, vous pouvez graver des clés privées dans un stockage sécurisé sur un appareil afin que le matériel cryptographique sensible ne quitte jamais l'appareil. Les certificats X.509 offrent une authentification du client plus fiable que d'autres méthodes, telles que le nom d'utilisateur et le mot de passe ou les jetons de porteur, car la clé privée ne quitte jamais l'appareil.

AWS IoT authentifie les certificats clients en utilisant le mode d'authentification client du protocole TLS. La prise en charge de TLS est disponible dans de nombreux langages de programmation et systèmes d'exploitation ; ce protocole est couramment utilisée pour le chiffrement des données. Dans le cadre de l'authentification client TLS, AWS IoT demande un certificat client X.509 et valide le statut du certificat par Compte AWS rapport à un registre de certificats. Il demande ensuite au client de prouver qu'il est propriétaire de la clé privée correspondant à la clé publique contenue dans le certificat. AWS IoT oblige les clients à envoyer l'[extension SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) au protocole TLS (Transport Layer Security). Pour de plus amples informations sur la configuration de l'extension SNI, veuillez consulter [Sûreté des transports dans AWS IoT Core](transport-security.md).

Pour faciliter une connexion client sécurisée et cohérente au AWS IoT cœur, un certificat client X.509 doit posséder les éléments suivants :
+ Enregistré dans AWS IoT Core. Pour de plus amples informations, veuillez consulter [Enregistrement d’un certificat client](register-device-cert.md).
+ Avoir un état de statut de`ACTIVE`. Pour de plus amples informations, veuillez consulter [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md).
+ Pas encore atteint la date d'expiration du certificat.

Vous pouvez créer des certificats clients qui utilisent Amazon Root CA et vous pouvez utiliser vos propres certificats clients signés par une autre autorité de certification (CA). Pour plus d'informations sur l'utilisation de la AWS IoT console pour créer des certificats utilisant l'autorité de certification Amazon Root, consultez[Création de certificats AWS IoT clients](device-certs-create.md). Pour plus d'informations sur l'utilisation de vos propres certificats X.509, consultez [Création de vos propres certificats clients](device-certs-your-own.md).

La date et l'heure d'expiration des certificats signés par un certificat d'autorité de certification sont définies au moment de la création du certificat. Les certificats X.509 générés par AWS IoT expirent à minuit UTC le 31 décembre 2049 (2049-12-31T 23:59:59 Z).

AWS IoT Device Defender peut effectuer des audits sur votre appareil Compte AWS et sur vos appareils conformément aux meilleures pratiques courantes en matière de sécurité de l'IoT. Cela inclut la gestion des dates d'expiration des certificats X.509 signés par votre autorité de certification ou par l'autorité Amazon Root CA. Pour plus d'informations sur la gestion de la date d'expiration d'un certificat, consultez les sections [Expiration du certificat de l'appareil et expiration](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html) du [certificat CA](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html).

Sur le AWS IoT blog officiel, vous trouverez une analyse plus approfondie de la gestion de la rotation des certificats des appareils et des meilleures pratiques en matière de sécurité dans la section [Comment gérer la rotation des certificats des appareils IoT à l'aide](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/) de AWS IoT.

## Utilisation de certificats client X.509 dans plusieurs Compte AWS s avec enregistrement multi-comptes
<a name="multiple-account-cert"></a>

L'inscription à plusieurs comptes permet de déplacer des appareils entre vos Compte AWS dans la même région ou dans des régions différentes. Avec cela, vous pouvez enregistrer, tester et configurer un appareil dans un compte de préproduction, puis enregistrer et utiliser le même appareil et le même certificat d'appareil dans un compte de production. Vous pouvez également enregistrer le certificat client sur l'appareil ou les certificats de l'appareil sans qu'une autorité de certification soit enregistrée auprès de celle-ci AWS IoT. Pour plus d'informations, voir [Enregistrer un certificat client signé par une autorité de certification (CLI) non enregistrée](manual-cert-registration.md#manual-cert-registration-noca-cli).

**Note**  
Les certificats utilisés pour l'enregistrement de plusieurs comptes sont pris en charge sur `iot:Data-ATS` les types `iot:Data` (anciens), `iot:Jobs`, et de point de terminaison `iot:CredentialProvider`. Pour plus d'informations sur les points de terminaison des AWS IoT appareils, consultez[AWS IoT données de l'appareil et points de terminaison de service](iot-connect-devices.md#iot-connect-device-endpoints).

Les appareils qui utilisent l'enregistrement multi-comptes doivent envoyer l'[extension SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) au protocole TLS (Transport Layer Security) et fournir l'adresse complète du point de terminaison `host_name` sur le terrain, lorsqu'ils se connectent à. AWS IoT AWS IoT utilise l'adresse du point de terminaison `host_name` pour acheminer la connexion vers le AWS IoT compte approprié. Les périphériques existants qui n'envoient pas d'adresse de point de terminaison valide dans `host_name` continueront de fonctionner, mais ils ne pourront pas utiliser les fonctionnalités qui nécessitent ces informations. Pour de plus amples informations sur l'extension SNI et pour savoir comment identifier l'adresse du point de terminaison pour le champ `host_name`, veuillez consulter [Sûreté des transports dans AWS IoT Core](transport-security.md). 

**Pour utiliser l'enregistrement de plusieurs comptes**

1. Vous pouvez enregistrer les certificats d’appareil auprès d'une autorité de certification. Vous pouvez enregistrer l'autorité de certification signataire dans plusieurs comptes en `SNI_ONLY` mode et utiliser cette autorité de certification pour enregistrer le même certificat client sur plusieurs comptes. Pour de plus amples informations, veuillez consulter [Enregistrer un certificat CA en mode SNI\$1ONLY (CLI) - Recommandé](manage-your-CA-certs.md#register-CA-cert-SNI-cli).

1. Vous pouvez enregistrer les certificats d’appareil sans autorité de certification. Consultez [Enregistrement d’un certificat client signé par une autorité de certification non enregistrée (CLI)​](manual-cert-registration.md#manual-cert-registration-noca-cli). L'enregistrement d'une autorité de certification est facultatif. Vous n'êtes pas obligé d'enregistrer l'autorité de certification auprès de laquelle les certificats de l'appareil ont été signés AWS IoT.

## Algorithmes de signature de certificats supportés par AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT prend en charge les algorithmes de signature de certificats suivants :
+ SHA256AVEC RSA
+ SHA384AVEC RSA
+ SHA512AVEC RSA
+ SHA256WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA512WITHRSAANDMGF1 (RSASSA-PSS)
+ DSA\$1AVEC\$1 SHA256
+ ECDSA-AVEC- SHA256
+ ECDSA-AVEC- SHA384
+ ECDSA-AVEC- SHA512

Pour plus d'informations sur l'authentification et la sécurité des certificats, consultez la section [Qualité de la clé de certificat de l'appareil](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html).

**Note**  
La demande de signature de certificat (CSR) doit inclure une clé publique. La clé peut être soit une clé RSA d'une longueur d'au moins 2 048 bits, soit une clé ECC issue des courbes NIST P-256, NIST P-384 ou NIST P-521. Pour plus d'informations, consultez [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html) dans le *Guide de référence des API AWS IoT *.

## Algorithmes clés pris en charge par AWS IoT
<a name="x509-cert-key-algorithms"></a>

Le tableau ci-dessous montre comment les algorithmes clés sont pris en charge :


****  

| Algorithme clé | Algorithme de signature de certificat | Version de TLS | Pris en charge ? Oui ou Non | 
| --- | --- | --- | --- | 
| RSA avec une taille de clé d'au moins 2 048 bits | Tous | TLS 1.2 TLS 1.3 | Oui | 
| ECC NIST P-256/P-384/P-521 | Tous | TLS 1.2 TLS 1.3 | Oui | 
| RSA-PSS avec une taille de clé d'au moins 2048 bits | Tous | TLS 1.2 | Non | 
| RSA-PSS avec une taille de clé d'au moins 2048 bits | Tous | TLS 1.3 | Oui | 

Pour créer un certificat à l'aide du [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html), vous pouvez utiliser un algorithme de clé pris en charge pour générer une clé publique pour votre CSR. Pour enregistrer votre propre certificat à l'aide de [RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html)notre autorité de [RegisterCertificateWithoutcertification](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html), vous pouvez utiliser un algorithme de clé pris en charge afin de générer une clé publique pour le certificat.

Pour plus d'informations, consultez la section [Politiques de sécurité](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table).

# Création de certificats AWS IoT clients
<a name="device-certs-create"></a>

AWS IoT fournit des certificats clients signés par l'autorité de certification Amazon Root (CA).

Cette rubrique décrit comment créer un certificat client signé par l'autorité de certification racine Amazon et télécharger les fichiers de certificat. Après avoir créé les fichiers de certificat client, vous devez les installer sur le client.

**Note**  
Chaque certificat client X.509 fourni par AWS IoT contient les attributs d'émetteur et de sujet que vous avez définis au moment de la création du certificat. Les attributs du certificat ne sont immuables qu'une fois le certificat créé.

Vous pouvez utiliser la AWS IoT console ou le AWS CLI pour créer un AWS IoT certificat signé par l'autorité de certification Amazon Root.

## Création d'un AWS IoT certificat (console)
<a name="device-certs-create-console"></a>

**Pour créer un AWS IoT certificat à l'aide de la AWS IoT console**

1. Connectez-vous à la [AWS IoT console AWS Management Console et ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation, choisissez successivement **Sécurité**, **Certificats** puis **Créer**.

1. Choisissez **Création d'un certificat en un clic (recommandé)** - **Créer un certificat**.

1. À partir de la page **Certificat créé**, téléchargez les fichiers du certificat client pour l’objet, la clé publique et privée sur un emplacement sécurisé. Ces certificats générés par ne AWS IoT sont disponibles que pour une utilisation avec AWS IoT les services.

   Si vous avez également besoin du fichier de certificat Amazon Root CA, cette page contient également le lien vers la page où vous pouvez le télécharger.

1. Un certificat client est désormais créé et enregistré auprès d’ AWS IoT. Vous devez activer le certificat avant de l'utiliser dans un client.

    Pour activer le certificat client maintenant, choisissez **Activer**. Si vous ne souhaitez pas activer le certificat maintenant, consultez [Activation d’un certificat client (console)](activate-or-deactivate-device-cert.md#activate-device-cert-console) la section pour savoir comment activer le certificat ultérieurement.

   

1. Si vous souhaitez attacher une politique au certificat, choisissez **Attacher une Politique**.

   Si vous ne souhaitez pas attacher de stratégie maintenant, choisissez **Terminé**. Vous pouvez attacher une stratégie ultérieurement.

Après avoir terminé la procédure, installez les fichiers de certificat sur le client.

## Création d'un AWS IoT certificat (CLI)
<a name="device-certs-create-cli"></a>

 AWS CLI Fournit la **[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)** commande permettant de créer des certificats clients signés par l'autorité de certification Amazon Root. Toutefois, cette commande ne télécharge pas le fichier de certificat de l’autorité de certification racine Amazon. Vous pouvez télécharger le fichier de certificat de l'autorité de certification racine Amazon à partir de [Certificats d'autorité de certification pour l'authentification du serveur](server-authentication.md#server-authentication-certs). 

Cette commande crée des fichiers de clé privée, de clé publique et de certificat X.509, enregistre et active le certificat avec AWS IoT.

```
aws iot create-keys-and-certificate \
    --set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```

Si vous ne souhaitez pas activer le certificat lorsque vous le créez et l'enregistrez, cette commande crée les fichiers de clé privée, de clé publique et de certificat X.509, enregistre le certificat, mais ne l'active pas. [Activation d’un certificat client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) décrit comment activer le certificat ultérieurement.

```
aws iot create-keys-and-certificate \
    --no-set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```



Installez les fichiers de certificat sur le client.

# Création de vos propres certificats clients
<a name="device-certs-your-own"></a>

AWS IoT prend en charge les certificats clients signés par n'importe quelle autorité de certification racine ou intermédiaire (CA). AWS IoT utilise des certificats CA pour vérifier la propriété des certificats. Pour utiliser des certificats d'appareil signés par une autorité de certification autre que l'autorité de certification d'Amazon, le certificat de l'autorité de certification doit être enregistré auprès de l'autorité de certification AWS IoT afin que nous puissions vérifier la propriété du certificat de l'appareil.

AWS IoT prend en charge plusieurs méthodes pour apporter vos propres certificats (BYOC) : 
+ Tout d’abord, enregistrez l’autorité de certification utilisée pour signer les certificats clients, puis enregistrez les certificats clients individuels. Si vous souhaitez enregistrer l'appareil ou le client sur son certificat client lors de sa première connexion AWS IoT (également appelé [provisionnement juste à temps), vous devez enregistrer l'autorité](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html) de certification signataire auprès AWS IoT de laquelle il se connecte et activer l'enregistrement automatique.
+ Si vous ne pouvez pas enregistrer l'autorité de certification signataire, vous pouvez choisir d'enregistrer les certificats clients sans l'autorité de certification. Pour les appareils enregistrés sans autorité de certification, vous devez présenter [une indication du nom du serveur (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) lorsque vous les AWS IoT connectez.

**Note**  
Pour enregistrer des certificats clients à l'aide de l'autorité de certification, vous devez enregistrer l'autorité de certification signataire AWS IoT, et non auprès d'une autre autorité de certification CAs dans la hiérarchie.

**Note**  
Un certificat d'autorité de certification peut être enregistré en mode `DEFAULT` que par un seul compte dans une région. Un certificat d'autorité de certification peut être enregistré en mode `SNI_ONLY` que par plusieurs comptes dans une région. 

Pour plus d'informations sur l'utilisation des certificats X.509 pour la prise en charge de plusieurs appareils, veuillez consulter [Mise en service des appareils](iot-provision.md) pour prendre connaissance des différentes options de gestion et de mise en service des certificats prises en charge par AWS IoT .

**Topics**
+ [Gestion de vos certificats d’autorité de certification](manage-your-CA-certs.md)
+ [Création d’un certificat client à l'aide de votre certificat d’autorité de certification](create-device-cert.md)

# Gestion de vos certificats d’autorité de certification
<a name="manage-your-CA-certs"></a>

Cette section décrit les tâches courantes de gestion de vos propres certificats d'autorité de certification.

Vous pouvez enregistrer votre autorité de certification (CA) auprès de laquelle AWS IoT vous utilisez des certificats clients signés par une autorité de AWS IoT certification non reconnue.

Si vous souhaitez que les clients enregistrent automatiquement leurs certificats clients AWS IoT lors de leur première connexion, l'autorité de certification qui a signé les certificats clients doit être enregistrée auprès de l'autorité de certification AWS IoT. Sinon, vous n'avez pas besoin d'enregistrer le certificat de l'autorité de certification qui a signé les certificats clients.

**Note**  
Un certificat d'autorité de certification peut être enregistré en mode `DEFAULT` que par un seul compte dans une région. Un certificat d'autorité de certification peut être enregistré en mode `SNI_ONLY` que par plusieurs comptes dans une région.

**Topics**
+ [Création d’un certificat d’autorité de certification](#create-your-CA-cert)
+ [Enregistrement de votre certificat d’autorité de certification](#register-CA-cert)
+ [Désactivation d'un certificat d'autorité de certification](#deactivate-ca-cert)

## Création d’un certificat d’autorité de certification
<a name="create-your-CA-cert"></a>

Si vous ne disposez pas de certificat CA, vous pouvez utiliser les outils [OpenSSL v1.1.1i](https://www.openssl.org/) pour en créer un.

**Note**  
Vous ne pouvez pas exécuter cette procédure dans la AWS IoT console.

**Pour créer un certificat CA à l'aide des outils [OpenSSL v1.1.1i](https://www.openssl.org/)**

1. Générez une paire de clés.

   ```
   openssl genrsa -out root_CA_key_filename.key 2048
   ```

1. Utilisez la clé privée de la paire de clés pour générer un certificat CA.

   ```
   openssl req -x509 -new -nodes \
       -key root_CA_key_filename.key \
       -sha256 -days 1024 \
       -out root_CA_cert_filename.pem
   ```

## Enregistrement de votre certificat d’autorité de certification
<a name="register-CA-cert"></a>

Ces procédures décrivent comment enregistrer un certificat auprès d'une autorité de certification (CA) autre que l'autorité de certification d'Amazon. AWS IoT Core utilise des certificats CA pour vérifier la propriété des certificats. Pour utiliser des certificats d'appareil signés par une autorité de certification autre que celle d'Amazon, vous devez enregistrer le certificat auprès de l'autorité de certification AWS IoT Core afin qu'elle puisse vérifier la propriété du certificat de l'appareil.

### Enregistrement d’un certificat d'autorité de certification (console)
<a name="register-CA-cert-console"></a>

**Note**  
Pour enregistrer un certificat CA dans la console, commencez par [enregistrer le certificat CA](https://console.aws.amazon.com//iot/home#/create/cacertificate) dans la console. Vous pouvez enregistrer votre autorité de certification en mode multi-comptes, sans avoir à fournir de certificat de vérification ni d’accéder à la clé privée. Une autorité de certification peut être enregistrée en mode multi-comptes par plusieurs Comptes AWS dans un même Région AWS. Vous pouvez enregistrer votre autorité de certification en mode compte unique en fournissant un certificat de vérification et une preuve de propriété de la clé privée de l'autorité de certification.

### Enregistrement d’un certificat d'autorité de certification (CLI)
<a name="register-CA-cert-cli"></a>

Vous pouvez enregistrer un certificat CA en mode `DEFAULT` ou en mode `SNI_ONLY`. Une autorité de certification peut être enregistrée en `DEFAULT` mode une Compte AWS par une Région AWS. Une autorité de certification peut être enregistrée en `SNI_ONLY` mode par plusieurs Comptes AWS dans le même mode Région AWS. Pour en savoir plus sur les certificats CA, veuillez consulter [Modecertificat](https://docs.aws.amazon.com//iot/latest/apireference/API_CACertificateDescription.html#iot-Type-CACertificateDescription-certificateMode).

**Note**  
Nous vous recommandons d'enregistrer une autorité de certification en mode `SNI_ONLY`. Vous n'avez pas besoin de fournir de certificat de vérification ni d'accès à la clé privée, et vous pouvez enregistrer l'autorité de certification par plusieurs Comptes AWS fois Région AWS.

#### Enregistrer un certificat CA en mode SNI\$1ONLY (CLI) - Recommandé
<a name="register-CA-cert-SNI-cli"></a>

**Conditions préalables**

Vérifiez que les éléments suivants sont disponibles sur votre ordinateur avant de continuer :
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous le nom `root_CA_cert_filename.pem`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) ou version ultérieure

**Pour enregistrer un certificat CA en `SNI_ONLY` mode à l'aide du AWS CLI**

1. Enregistrez le certificat CA auprès de AWS IoT. À l'aide de la commande **register-ca-certificate**, entrez le nom du fichier du certificat CA. Pour plus d’informations, consultez [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) dans la *Référence des commandes de l’AWS CLI *.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --certificate-mode SNI_ONLY
   ```

   En cas de succès, cette commande renvoie le*certificateId*.

1. À ce stade, le certificat CA a été enregistré AWS IoT mais il est inactif. Le certificat de l'autorité de certification doit être actif avant que vous puissiez enregistrer les certificats clients qu'il a signés.​

   Cette étape active le certificat de l'autorité de certification.

   Pour activer le certificat CA, utilisez la commande **update-certificate** comme suit. Pour plus d'informations, consultez [mettre à jour-le certificat](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) dans la *AWS CLI Référence des commandes*.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Utilisez la commande **describe-ca-certificate** pour voir le statut du certificat CA. Pour plus d’informations, consultez [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) dans la *Référence des commandes de l’AWS CLI *.

#### Enregistrement d’un certificat CA en `DEFAULT` mode (CLI)
<a name="register-CA-cert-default-cli"></a>

**Conditions préalables**

Vérifiez que les éléments suivants sont disponibles sur votre ordinateur avant de continuer :
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous le nom `root_CA_cert_filename.pem`)
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) ou version ultérieure

**Pour enregistrer un certificat CA en `DEFAULT` mode à l'aide du AWS CLI**

1. Pour obtenir un code d'enregistrement auprès de AWS IoT, utilisez**get-registration-code**. Enregistrez le `registrationCode` renvoyé à utiliser en tant que `Common Name` du certificat de vérification de clé privée. Pour plus d’informations, consultez [get-registration-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-registration-code.html) dans la *Référence des commandes de l’AWS CLI *.

   ```
   aws iot get-registration-code
   ```

1. Générez une paire de clés pour le certificat de vérification de clé privée :

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Créez une demande de signature de certificat (CSR) pour le certificat de vérification de clé privée. Dans le champ `Common Name` du certificat, indiquez la valeur `registrationCode` renvoyée par **get-registration-code**.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Vous êtes invité à entrer certaines informations, notamment le `Common Name` du certificat.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Utilisez la CSR pour créer un certificat de vérification de clé privée :

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Enregistrez le certificat CA auprès de AWS IoT. Transmettez le nom de fichier de certificat CA et le nom du fichier de certificat de vérification de clé privée à la commande **register-ca-certificate**, comme suit. Pour plus d’informations, consultez [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) dans la *Référence des commandes de l’AWS CLI *.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --verification-cert file://verification_cert_filename.pem
   ```

   Cette commande renvoie le*certificateId*, en cas de succès.

1. À ce stade, le certificat CA a été enregistré AWS IoT mais n'est pas actif. Le certificat CA doit être actif avant que vous puissiez enregistrer les certificats clients qu'il a signés.

   Cette étape active le certificat de l'autorité de certification.

   Pour activer le certificat CA, utilisez la commande **update-certificate** comme suit. Pour plus d'informations, consultez [mettre à jour-le certificat](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) dans la *AWS CLI Référence des commandes*.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Utilisez la commande **describe-ca-certificate** pour voir le statut du certificat CA. Pour plus d’informations, consultez [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) dans la *Référence des commandes de l’AWS CLI *.

### Créez un certificat de vérification CA pour enregistrer le certificat CA dans la console
<a name="create-CA-verification-cert"></a>

**Note**  
Cette procédure est uniquement destinée à être utilisée si vous enregistrez un certificat CA depuis la AWS IoT console.  
Si vous n'avez pas accédé à cette procédure depuis la AWS IoT console, lancez le processus d'enregistrement du certificat CA dans la console à l'adresse [Enregistrer le certificat CA](https://console.aws.amazon.com//iot/home#/create/cacertificate). 

Vérifiez que les éléments suivants sont disponibles sur le même ordinateur avant de continuer :
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous le nom `root_CA_cert_filename.pem`)
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) ou version ultérieure

**Pour utiliser l'interface de ligne de commande pour créer un certificat de vérification CA afin d'enregistrer votre certificat CA dans la console**

1. `verification_cert_key_filename.key`Remplacez-le par le nom du fichier clé du certificat de vérification que vous souhaitez créer (par exemple,**verification\$1cert.key**). Exécutez ensuite cette commande pour générer une paire de clés pour le certificat de vérification de clé privée :

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Remplacez `verification_cert_key_filename.key` par le nom du fichier de clé que vous avez créé à l'étape 1.​

   Remplacez `verification_cert_csr_filename.csr` par le nom du fichier de demande de signature du certificat (CSR) que vous souhaitez créer. Par exemple, **verification\$1cert.csr**.

   Exécutez cette commande pour créer le fichier CSR.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   La commande vous invite à saisir des informations supplémentaires qui seront expliquées plus loin.

1. Dans la AWS IoT console, dans le conteneur du **certificat de vérification**, copiez le code d'enregistrement.

1. Les informations que la commande **openssl** vous demande de saisir sont présentées dans l'exemple suivant. À l'exception du champ `Common Name`, vous pouvez saisir vos propres valeurs ou les laisser vides.

   Dans le champ `Common Name`, collez le code d'enregistrement que vous avez copié à l'étape précédente.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

   Une fois que vous avez terminé, la commande crée le fichier CSR.

1. Remplacez la `verification_cert_csr_filename.csr` par la `verification_cert_csr_filename.csr` que vous avez utilisée à l'étape précédente.

   Remplacez `root_CA_cert_filename.pem` par le nom de fichier du certificat CA que vous souhaitez enregistrer.

   Remplacez `root_CA_key_filename.key` par le nom du fichier de clé privée du certificat CA.

   Remplacez `verification_cert_filename.pem` par le nom de fichier du certificat de vérification que vous souhaitez créer.​ Par exemple, **verification\$1cert.pem**.

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Une fois la commande OpenSSL terminée, vous devriez avoir ces fichiers prêts à être utilisés lorsque vous revenez à la console.
   + Votre fichier de certificat CA (`root_CA_cert_filename.pem` utilisé dans la commande précédente)
   + Le certificat de vérification que vous avez créé à l'étape précédente (*verification\$1cert\$1filename.pem*utilisé dans la commande précédente)

## Désactivation d'un certificat d'autorité de certification
<a name="deactivate-ca-cert"></a>

Lorsqu'un certificat d'autorité de certification (CA) est activé pour l'enregistrement automatique des certificats clients, AWS IoT vérifie le certificat de l'autorité de certification pour s'assurer que l'autorité de certification l'est`ACTIVE`. Si le certificat CA l'est`INACTIVE`, AWS IoT cela n'autorise pas l'enregistrement du certificat client.

En définissant le certificat de l'autorité de certification sur `INACTIVE`, vous empêchez l'enregistrement automatique de tout nouveau certificat client émis par l'autorité de certification.

**Note**  
Les certificats clients enregistrés qui ont été signés par le certificat d'autorité de certification compromis continuent de fonctionner jusqu’à ce que vous les révoquiez explicitement.

### Désactivation d'un certificat d'autorité de certification (console)
<a name="deactivate-ca-cert-console"></a>

**Pour désactiver un certificat CA à l'aide de la console AWS IoT**

1. Connectez-vous à la [AWS IoT console AWS Management Console et ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Secure**, choisissez **CAs**.

1. Dans la liste des autorités de certification, recherchez celle que vous souhaitez désactiver et choisissez l'icône de points de suspension pour ouvrir le menu d'options.

1. Dans le menu d'options, choisissez **Désactiver**.

L'autorité de certification doit apparaître comme **Inactive** dans la liste.

**Note**  
La AWS IoT console ne permet pas de répertorier les certificats signés par l'autorité de certification que vous avez désactivée. Pour connaître l’option d’ AWS CLI permettant de répertorier ces certificats, veuillez consulter [Désactivation d'un certificat d'autorité de certification (CLI)](#deactivate-ca-cert-cli).

### Désactivation d'un certificat d'autorité de certification (CLI)
<a name="deactivate-ca-cert-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)commande permettant de désactiver un certificat CA.

```
aws iot update-ca-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html) pour obtenir la liste de tous les certificats clients enregistrés qui ont été signés par l'autorité de certification spécifiée. Pour chaque certificat client signé par le certificat d’autorité de certification spécifié, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) pour révoquer le certificat client afin d'empêcher son utilisation.

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) pour voir le statut du certificat d'autorité de certification.

# Création d’un certificat client à l'aide de votre certificat d’autorité de certification
<a name="create-device-cert"></a>

Vous pouvez utiliser votre propre autorité de certification pour créer des certificats clients. Le certificat client doit être enregistré AWS IoT avant de pouvoir être utilisé. Pour de plus amples informations sur les options d'enregistrement pour vos certificats clients, veuillez consulter [Enregistrement d’un certificat client](register-device-cert.md).

## Création d’un certificat client (CLI)
<a name="create-device-cert-cli"></a>

**Note**  
Vous ne pouvez pas exécuter cette procédure dans la AWS IoT console.

**Pour créer un certificat client à l'aide du AWS CLI**

1. Générez une paire de clés.

   ```
   openssl genrsa -out device_cert_key_filename.key 2048
   ```

1. Créez une demande de signature de certificat (CSR) pour le certificat client.

   ```
   openssl req -new \
       -key device_cert_key_filename.key \
       -out device_cert_csr_filename.csr
   ```

   Vous êtes invité à entrer certaines informations, comme illustré ici :

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Créez un certificat client à partir de la CSR.

   ```
   openssl x509 -req \
       -in device_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out device_cert_filename.pem \
       -days 500 -sha256
   ```

 À ce stade, le certificat client a été créé, mais il n'a pas encore été enregistré auprès de celui-ci AWS IoT. Pour de plus amples informations sur la façon et le moment d'enregistrer le certificat client, veuillez consulter [Enregistrement d’un certificat client](register-device-cert.md). 

# Enregistrement d’un certificat client
<a name="register-device-cert"></a>

Les certificats clients doivent être enregistrés AWS IoT pour permettre les communications entre le client et AWS IoT. Vous pouvez enregistrer chaque certificat client manuellement ou configurer les certificats client pour qu'ils s'enregistrent automatiquement lorsque le client se connecte AWS IoT pour la première fois.

 Si vous souhaitez que vos clients et appareils enregistrent leurs certificats clients lors de leur première connexion, vous devez utiliser [Enregistrement de votre certificat d’autorité de certification](manage-your-CA-certs.md#register-CA-cert) pour signer le certificat client auprès d’ AWS IoT dans les régions où vous souhaitez l'utiliser. L'autorité de certification Amazon Root est automatiquement enregistrée auprès de AWS IoT. 

Les certificats clients peuvent être partagés par Comptes AWS et par régions. Les procédures décrites dans ces rubriques doivent être effectuées dans chaque compte et chaque région où vous souhaitez utiliser le certificat client. L'enregistrement d'un certificat client dans un compte ou une région n'est pas automatiquement reconnu par un autre compte ou une autre région.

**Note**  
Les clients qui utilisent le protocole TLS (Transport Layer Security) pour se connecter à AWS IoT doivent prendre en charge l'[extension SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) de TLS. Pour de plus amples informations, veuillez consulter [Sûreté des transports dans AWS IoT Core](transport-security.md).

**Topics**
+ [Enregistrement manuel d’un certificat client](manual-cert-registration.md)
+ [Enregistrer un certificat client lorsque le client se connecte à l' AWS IoT just-in-time enregistrement (JITR)](auto-register-device-cert.md)

# Enregistrement manuel d’un certificat client
<a name="manual-cert-registration"></a>

Vous pouvez enregistrer un certificat client manuellement à l'aide de la AWS IoT console et AWS CLI.

La procédure d'enregistrement à utiliser dépend du fait que le certificat sera partagé ou non par Compte AWS les régions. L'enregistrement d'un certificat client dans un compte ou une région n'est pas automatiquement reconnu par un autre compte ou une autre région.

Les procédures décrites dans cette rubrique doivent être effectuées dans chaque compte et chaque région où vous souhaitez utiliser le certificat client. Les certificats clients peuvent être partagés par Compte AWS s et par régions. 

## Enregistrement d’un certificat client signé par une autorité de certification enregistrée (console)
<a name="manual-cert-registration-console"></a>

**Note**  
Avant d'exécuter cette procédure, assurez-vous que vous disposez du fichier .pem du certificat client et que le certificat client a été signé par une autorité de certification auprès de laquelle vous vous êtes [enregistré](manage-your-CA-certs.md#register-CA-cert). AWS IoT

**Pour enregistrer un certificat existant à AWS IoT l'aide de la console**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le panneau de navigation, sous la section **Gérer**, choisissez **Sécurité**, puis **Certificats**.

1. Sur la page **Certificats** de la boîte de dialogue **Certificats**, choisissez **Ajouter un certificat**, puis **Enregistrer les certificats**.

1. Sur la page **Enregistrer le certificat** de la boîte de dialogue **Certificats à télécharger**, procédez comme suit :
   + Choisissez **CA est enregistré auprès de AWS IoT**.
   + Dans **Choisir un certificat CA**, sélectionnez votre **autorité de certification**. 
     + Choisissez **Enregistrer une nouvelle autorité de certification** pour enregistrer une nouvelle **autorité de certification** qui n'est pas enregistrée auprès de celle-ci AWS IoT.
     + Laissez le champ **Choisir un certificat CA** vide si **l'autorité de certification Amazon Root** est votre autorité de certification.
   + Sélectionnez jusqu'à 10 certificats à télécharger et à enregistrer AWS IoT.
     + Utilisez les fichiers de certificat que vous avez créés dans [Création de certificats AWS IoT clients](device-certs-create.md) et[Création d’un certificat client à l'aide de votre certificat d’autorité de certification](create-device-cert.md).
   + Choisissez **Activer** ou **Désactiver**. Si vous choisissez **Désactiver**, [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md) explique comment activer votre certificat après l'avoir enregistré.
   + Choisissez **S’inscrire**.

Sur la page **Certificats** de la boîte de dialogue **Certificats**, vos certificats enregistrés apparaissent désormais.

## Enregistrement d’un certificat client signé par une autorité de certification non enregistrée (console)​
<a name="manual-cert-registration-console-noca"></a>

**Note**  
Avant d'effectuer cette procédure, assurez-vous de disposer du fichier .pem du certificat client.

**Pour enregistrer un certificat existant à AWS IoT l'aide de la console**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez successivement **Sécurité**, **Certificats** et **Créer**.

1. Dans **Créer un certificat**, recherchez l'entrée **Utiliser mon certificat**, puis choisissez **Commencer**.

1. Dans **Sélectionner une autorité de certification**, choisissez **Suivant**.

1.  Dans **Enregistrer des certificats d'appareils existants**, choisissez **Sélectionner les certificats** et sélectionnez jusqu'à 10 fichiers de certificats à enregistrer. 

1.  Après avoir fermé la boîte de dialogue du fichier, indiquez si vous souhaitez activer ou révoquer les certificats clients lorsque vous les enregistrez.

   Si vous n'activez pas un certificat lors de son enregistrement, [Activation d’un certificat client (console)](activate-or-deactivate-device-cert.md#activate-device-cert-console) décrit comment l'activer ultérieurement. 

   Si un certificat est révoqué lors de son enregistrement, il ne peut pas être activé ultérieurement.

   Après avoir sélectionné les fichiers de certificat à enregistrer et sélectionné les actions à effectuer après l'enregistrement, sélectionnez **Enregistrer les certificats**.

Les certificats clients enregistrés apparaissent dans la liste des certificats.

## Enregistrement d’un certificat client signé par une autorité de certification enregistrée (CLI)
<a name="manual-cert-registration-cli"></a>

**Note**  
Avant d'effectuer cette procédure, assurez-vous de disposer du fichier .pem de l'autorité de certification et du fichier .pem du certificat client. Le certificat client doit être signé par une autorité de certification (CA) [auprès de laquelle vous vous êtes enregistré AWS IoT](manage-your-CA-certs.md#register-CA-cert).

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html) pour enregistrer un certificat client sans l’activer.

```
aws iot register-certificate \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Le certificat client est enregistré auprès de AWS IoT, mais il n'est pas encore actif. Veuillez consulter [Activation d’un certificat client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) pour de plus amples informations sur la façon de l'activer ultérieurement.

Vous pouvez également activer le certificat client lorsque vous l'enregistrez à l'aide de cette commande.

```
aws iot register-certificate \
    --set-as-active \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Pour plus d'informations sur l'activation du certificat afin qu'il puisse être utilisé pour se connecter à AWS IoT, voir [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md)

## Enregistrement d’un certificat client signé par une autorité de certification non enregistrée (CLI)​
<a name="manual-cert-registration-noca-cli"></a>

**Note**  
Avant d'effectuer cette procédure, assurez-vous de disposer du fichier .pem du certificat.

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html) pour enregistrer un certificat client sans l’activer.

```
aws iot register-certificate-without-ca \
    --certificate-pem file://device_cert_filename.pem
```

Le certificat client est enregistré auprès de AWS IoT, mais il n'est pas encore actif. Veuillez consulter [Activation d’un certificat client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) pour de plus amples informations sur la façon de l'activer ultérieurement.

Vous pouvez également activer le certificat client lorsque vous l'enregistrez à l'aide de cette commande.

```
aws iot register-certificate-without-ca \
    --status ACTIVE \
    --certificate-pem file://device_cert_filename.pem
```

Pour plus d'informations sur l'activation du certificat afin qu'il puisse être utilisé pour se connecter AWS IoT, consultez[Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md).

# Enregistrer un certificat client lorsque le client se connecte à l' AWS IoT just-in-time enregistrement (JITR)
<a name="auto-register-device-cert"></a>

Vous pouvez configurer un certificat CA pour permettre aux certificats clients qu'il a signés de s'enregistrer AWS IoT automatiquement lors de la première connexion du client AWS IoT.

Pour enregistrer des certificats client lorsqu'un client se connecte AWS IoT pour la première fois, vous devez activer le certificat CA pour l'enregistrement automatique et configurer la première connexion du client afin de fournir les certificats requis.

## Configuration d’un certificat d'autorité de certification pour la prise en charge de l'enregistrement automatique (console)
<a name="enable-auto-registration-console"></a>

**Pour configurer un certificat CA afin de prendre en charge l'enregistrement automatique des certificats clients à l'aide de la AWS IoT console**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Secure**, choisissez **CAs**.

1. Dans la liste des autorités de certification, recherchez celle pour laquelle vous souhaitez activer l'enregistrement automatique et ouvrez le menu d'options à l'aide de l'icône représentant des points de suspension.

1. Dans le menu d'options, choisissez **Activer l'enregistrement automatique**.

**Note**  
Le statut d'enregistrement automatique n'apparaît pas dans la liste des autorités de certification. Pour voir le statut d'enregistrement automatique d'une autorité de certification, vous devez ouvrir la page **Détails** de l'autorité de certification.

## Configuration d’un certificat d'autorité de certification pour la prise en charge de l'enregistrement automatique (CLI)
<a name="enable-auto-registration-cli"></a>

Si vous avez déjà enregistré votre certificat CA auprès de AWS IoT, utilisez la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)commande pour définir `autoRegistrationStatus` le certificat CA sur`ENABLE`.

```
aws iot update-ca-certificate \
--certificate-id caCertificateId \
--new-auto-registration-status ENABLE
```

Si vous souhaitez activer `autoRegistrationStatus` lors de l'enregistrement du certificat d'autorité de certification, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html).

```
aws iot register-ca-certificate \
--allow-auto-registration  \
--ca-certificate file://root_CA_cert_filename.pem \
--verification-cert file://verification_cert_filename.pem
```

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) pour voir le statut du certificat d'autorité de certification.

## Configuration de la première connexion par un client pour l'enregistrement automatique
<a name="configure-auto-reg-first-connect"></a>

Lorsqu'un client tente de se connecter AWS IoT pour la première fois, le certificat client signé par votre certificat CA doit être présent sur le client lors de la prise de contact TLS (Transport Layer Security).

Lorsque le client se connecte à AWS IoT, utilisez le certificat client que vous avez créé dans [Créer des certificats AWS IoT clients](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html) ou [Créez vos propres certificats clients](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html). AWS IoT reconnaît le certificat CA en tant que certificat CA enregistré, enregistre le certificat client et définit son statut sur`PENDING_ACTIVATION`. Cela signifie que le certificat client a été enregistré automatiquement et qu'il est en attente d'activation. L'état du certificat client doit être `ACTIVE` avant de pouvoir être utilisé pour la connexion à AWS IoT. Consultez [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md) pour plus d'informations sur l'activation d'un certificat client.

**Note**  
Vous pouvez approvisionner des appareils à l'aide de la fonction AWS IoT Core just-in-time d'enregistrement (JITR) sans avoir à envoyer l'intégralité de la chaîne de confiance lors de la première connexion des appareils à. AWS IoT Core La présentation du certificat CA est facultative, mais l'appareil doit envoyer l'extension [SNI (Server Name Indication)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) lors de la connexion.

Lors de l'enregistrement AWS IoT automatique d'un certificat ou lorsqu'un client présente un certificat avec le `PENDING_ACTIVATION` statut, AWS IoT publie un message sur la rubrique MQTT suivante :

`$aws/events/certificates/registered/caCertificateId`

Où `caCertificateId` est l'ID du certificat d’autorité de certification ayant émis le certificat client.

Le message publié sur cette rubrique a la structure suivante :

```
{
        "certificateId": "certificateId",
        "caCertificateId": "caCertificateId",
        "timestamp": timestamp,
        "certificateStatus": "PENDING_ACTIVATION",
        "awsAccountId": "awsAccountId",
        "certificateRegistrationTimestamp": "certificateRegistrationTimestamp"
}
```

Vous pouvez créer une règle qui écoute cette rubrique et effectue certaines actions. Nous vous recommandons de créer une règle Lambda qui vérifie que le certificat client ne figure pas sur une liste de révocation de certificats (CRL), active le certificat, puis crée et attache une politique au certificat. La stratégie détermine les ressources auxquelles le client peut accéder. Si la politique que vous créez nécessite l'ID client des appareils connectés, vous pouvez utiliser la fonction clientid () de la règle pour récupérer l'ID client. Voici un exemple de définition de règle :

```
SELECT *,
   clientid() as clientid
from $aws/events/certificates/registered/caCertificateId
```

Dans cet exemple, la règle s'abonne à la rubrique JITR `$aws/events/certificates/registered/caCertificateID` et utilise la fonction clientid () pour récupérer l'identifiant du client. La règle ajoute ensuite l'ID client à la charge utile JITR. Pour plus d'informations sur la fonction clientid () de la règle, consultez [clientid](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid) ().

Pour plus d'informations sur la création d'une règle Lambda qui écoute le `$aws/events/certificates/registered/caCertificateID` sujet et exécute ces actions, consultez la section [just-in-time Enregistrement des certificats clients](https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/) sur. AWS IoT

Si une erreur ou une exception survient lors de l'enregistrement automatique des certificats clients, AWS IoT envoie des événements ou des messages à vos journaux de CloudWatch connexion. Pour plus d'informations sur la configuration des journaux de votre compte, consultez la [ CloudWatch documentation Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/).

# Gérer les certificats clients
<a name="manage-device-cert"></a>

AWS IoT fournit des fonctionnalités vous permettant de gérer les certificats clients.

**Topics**
+ [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md)
+ [Attacher un objet ou une stratégie à un certificat client](attach-to-cert.md)
+ [Révocation d’un certificat client](revoke-ca-cert.md)
+ [Transférer un certificat vers un autre compte](transfer-cert.md)

# Activation ou désactivation d’un certificat client
<a name="activate-or-deactivate-device-cert"></a>

AWS IoT vérifie qu'un certificat client est actif lorsqu'il authentifie une connexion.

Vous pouvez créer et enregistrer des certificats clients sans les activer afin qu'ils ne puissent pas être utilisés tant que vous ne le souhaitez pas. Vous pouvez également désactiver temporairement des certificats clients actifs. Enfin, vous pouvez révoquer des certificats clients pour empêcher toute future utilisation. 

## Activation d’un certificat client (console)
<a name="activate-device-cert-console"></a>

**Pour activer un certificat client à l'aide de la AWS IoT console**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat que vous souhaitez activer et ouvrez le menu d'options à l'aide de l'icône représentant des points de suspension.

1. Dans le menu d'options, choisissez **Activer**.

Le certificat doit apparaître comme **Active** dans la liste des certificats.

## Désactivation d’un certificat client (console)
<a name="deactivate-device-cert-console"></a>

**Pour désactiver un certificat client à l'aide de la console AWS IoT**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat que vous souhaitez désactiver et ouvrez le menu d'options à l'aide de l'icône représentant des points de suspension.

1. Dans le menu d'options, choisissez **Désactiver**.

Le certificat doit apparaître comme **Inactive** dans la liste des certificats.

## Activation d’un certificat client (CLI)
<a name="activate-device-cert-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)commande permettant d'activer un certificat.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status ACTIVE
```

Si la commande aboutit, le statut du certificat devient `ACTIVE`. Exécutez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) pour voir le statut du certificat.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

## Désactivation d’un certificat client (CLI)
<a name="deactivate-device-cert-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)commande permettant de désactiver un certificat.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Si la commande aboutit, le statut du certificat devient `INACTIVE`. Exécutez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) pour voir le statut du certificat.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Attacher un objet ou une stratégie à un certificat client
<a name="attach-to-cert"></a>

Lorsque vous créez et enregistrez un certificat distinct d'un AWS IoT objet, il ne comporte aucune politique autorisant AWS IoT des opérations et ne sera associé à aucun AWS IoT objet. Cette section décrit comment ajouter ces relations à un certificat enregistré.

**Important**  
Pour effectuer ces procédures, vous devez avoir déjà créé l’objet ou la stratégie que vous souhaitez attacher au certificat.

Le certificat authentifie un appareil AWS IoT afin qu'il puisse se connecter. L'attachement du certificat à une ressource d'objet établit la relation entre l’appareil (par le biais du certificat) et la ressource de l'objet. Pour autoriser l'appareil à effectuer AWS IoT des actions, telles que l'autoriser à se connecter et à publier des messages, une politique appropriée doit être attachée au certificat de l'appareil. 

## Attacher un objet à un certificat client (console)
<a name="attach-to-cert-thing-console"></a>

Vous aurez besoin du nom de l'objet d’objet pour réaliser cette procédure.

**Pour attacher un objet d’objet à un certificat enregistré**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat auquel vous souhaitez attacher une stratégie, ouvrez le menu d'options du certificat en choisissant l'icône représentant trois points de suspension, puis choisissez **Attacher un objet**.

1. Dans la fenêtre contextuelle, recherchez le nom de l’objet à attacher au certificat, cochez sa case et choisissez **Attacher**..

L'objet d’objet doit désormais apparaître dans la liste des objets sur la page de détails du certificat.

## Attacher une stratégie à un certificat client (console)
<a name="attach-to-cert-policy-console"></a>

Vous aurez besoin du nom de l'objet de stratégie pour réaliser cette procédure.

**Pour attacher un objet de stratégie à un certificat enregistré**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat auquel vous souhaitez attacher une stratégie, ouvrez le menu d'options du certificat en choisissant l'icône représentant trois points de suspension, puis choisissez **Attacher une stratégie**. 

1. Dans la fenêtre contextuelle, recherchez le nom de la stratégie à attacher au certificat, cochez sa case et choisissez **Attacher**.

L'objet de stratégie doit désormais apparaître dans la liste des stratégies de la page de détails du certificat.

## Attacher un objet à un certificat client (interface de ligne de commande)
<a name="attach-to-cert-thing-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html)commande permettant d'associer un objet à un certificat.

```
aws iot attach-thing-principal \
    --principal certificateArn \
    --thing-name thingName
```

## Attacher une stratégie à un certificat client (interface de ligne de commande)
<a name="attach-to-cert-policy-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html)commande permettant d'associer un objet de politique à un certificat.

```
aws iot attach-policy \
    --target certificateArn \
    --policy-name policyName
```

# Révocation d’un certificat client
<a name="revoke-ca-cert"></a>

Si vous détectez une activité suspecte sur un certificat client enregistré, vous pouvez révoquer celui-ci afin qu'il ne puisse plus être utilisé.

**Note**  
Une fois qu'un certificat est révoqué, son statut ne peut pas être modifié. En d'autres termes, le statut du certificat ne peut pas être `Active` remplacé par un autre statut.

## Révocation d’un certificat client (console)
<a name="revoke-device-cert-console"></a>

**Pour révoquer un certificat client à l'aide de la console AWS IoT**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat que vous souhaitez révoquer et ouvrez le menu d'options à l'aide de l'icône représentant des points de suspension.

1. Dans le menu d'options, choisissez **Révoquer**.

Si la révocation aboutit, il s'affichera comme **Revoked (Révoqué)** dans la liste des certificats.

## Révocation d’un certificat client (CLI)
<a name="revoke-device-cert-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)commande permettant de révoquer un certificat.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status REVOKED
```

Si la commande aboutit, le statut du certificat devient `REVOKED`. Exécutez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) pour voir le statut du certificat.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Transférer un certificat vers un autre compte
<a name="transfer-cert"></a>

Les certificats X.509 appartenant à l'un Compte AWS peuvent être transférés vers un autre Compte AWS.

**Pour transférer un certificat X.509 de l'un Compte AWS à l'autre**

1. [Commencer un transfert de certificat](#transfer-cert-init)

   Le certificat doit être désactivé et détaché de toutes les politiques et autres éléments avant de lancer le transfert.

1. [Accepter ou refuser un transfert de certificat](#transfer-cert-accept)

   Le compte destinataire doit explicitement accepter ou rejeter le certificat transféré. Une fois que le compte destinataire a accepté le certificat, celui-ci doit être activé avant utilisation.

1. [Annuler un transfert de certificat](#transfer-cert-cancel)

   Le compte d'origine peut annuler un transfert si le certificat n'a pas été accepté.

## Commencer un transfert de certificat
<a name="transfer-cert-init"></a>

Vous pouvez commencer à transférer un certificat vers un autre Compte AWS en utilisant la [AWS IoT console](https://console.aws.amazon.com/iot/home) ou le AWS CLI.

### Commencer un transfert de certificat (console)
<a name="transfer-cert-init-console"></a>

Pour effectuer cette procédure, vous avez besoin de l'ID du certificat que vous souhaitez transférer.

Effectuez cette procédure depuis le compte avec le certificat à transférer.

**Pour commencer à transférer un certificat vers un autre Compte AWS**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

   Choisissez le certificat avec le statut **actif** ou **inactif** que vous souhaitez transférer et ouvrez sa page détails.

1. Sur la page **Détails** du certificat, dans le menu **Actions**, si l'option **Désactiver** est disponible, choisissez l'option **Désactiver** pour désactiver le certificat.

1. Sur la page **Détails** du certificat, dans le menu de gauche, sélectionnez **Politiques**.

1. Sur la page **Stratégie** du certificat, si des stratégies sont associées au certificat, détachez-les en ouvrant le menu des options de la stratégie et en choisissant **Détacher**.

   Le certificat ne doit contenir aucune politique attachée avant de continuer.

1. Sur la page **Politiques** du certificat, dans le menu de gauche, sélectionnez **Objets**.

1. Sur la page **Objets** du certificat, si des éléments sont associés au certificat, détachez-les en ouvrant le menu des options de l’objet et en choisissant **Détacher**.

   Le certificat ne doit contenir aucun objet attaché avant de continuer.

1. Sur la page **Objets** du certificat, dans le menu de gauche, sélectionnez **Détails**.

1. Sur la page **Détails** du certificat, dans le menu **Actions**, choisissez **Démarrer le transfert** pour ouvrir la boîte de dialogue **Démarrer le transfert**.

1. Dans la boîte de dialogue **Démarrer le transfert**, entrez le Compte AWS numéro du compte qui recevra le certificat et un court message facultatif.

1. Choisissez **Démarrer le transfert** pour transférer le certificat.

La console doit afficher un message qui indique la réussite ou l'échec du transfert. Si le transfert a été lancé, le statut du certificat passe à **Transféré**.

### Commencer un transfert de certificat (CLI)
<a name="transfer-cert-init-cli"></a>

Pour effectuer cette procédure, vous aurez besoin du *certificateId* et *certificateArn* du certificat que vous souhaitez transférer.

Effectuez cette procédure depuis le compte avec le certificat à transférer.

**Pour commencer à transférer un certificat vers un autre AWS compte**

1. Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) pour désactiver le certificat.

   ```
   aws iot update-certificate --certificate-id certificateId --new-status INACTIVE
   ```

1. Détachez toutes les politiques.

   1. Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html) pour répertorier les politiques associées au certificat.

      ```
      aws iot list-attached-policies --target certificateArn
      ```

   1. Pour chaque stratégie attachée, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html) pour la détacher.

      ```
      aws iot detach-policy --target certificateArn --policy-name policy-name
      ```

1. Répertoriez tous les objets.

   1. Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html) pour répertorier les objets associés au certificat.

      ```
      aws iot list-principal-things --principal certificateArn
      ```

   1. Pour chaque objet attaché, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html) pour le détacher.

      ```
      aws iot detach-thing-principal --principal certificateArn --thing-name thing-name
      ```

1. Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html) pour démarrer le transfert du certificat.

   ```
   aws iot transfer-certificate --certificate-id certificateId --target-aws-account account-id
   ```

## Accepter ou refuser un transfert de certificat
<a name="transfer-cert-accept"></a>

Vous pouvez accepter ou rejeter un certificat qui vous Compte AWS a été transféré Compte AWS par un autre en utilisant la [AWS IoT console](https://console.aws.amazon.com/iot/home) ou le AWS CLI.

### Accepter ou refuser un transfert de certificat (console)
<a name="transfer-cert-accept-console"></a>

Pour effectuer cette procédure, vous avez besoin de l'ID du certificat qui a été transféré sur votre compte.

Effectuez cette procédure depuis le compte recevant le certificat qui a été transféré.

**Pour accepter ou rejeter un certificat qui a été transféré à votre Compte AWS**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

   Choisissez le certificat avec un statut **transfert en attente** que vous souhaitez accepter ou rejeter et ouvrez sa page détails.

1. Sur la page **Détails** du certificat, dans le menu **Actions**,
   + Pour accepter le certificat, choisissez **Accepter le transfert**.
   + Pour ne pas accepter le certificat, choisissez **Rejeter le transfert**.

### Accepter ou refuser un transfert de certificat (CLI)
<a name="transfer-cert-accept-cli"></a>

Pour terminer cette procédure, vous aurez besoin *certificateId* du transfert de certificat que vous souhaitez accepter ou refuser.

Effectuez cette procédure depuis le compte recevant le certificat qui a été transféré.

**Pour accepter ou rejeter un certificat qui a été transféré à votre Compte AWS**

1. Pour accepter le certificat, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html).

   ```
   aws iot accept-certificate-transfer --certificate-id certificateId
   ```

1. Pour refuser le certificat, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html).

   ```
   aws iot reject-certificate-transfer --certificate-id certificateId
   ```

## Annuler un transfert de certificat
<a name="transfer-cert-cancel"></a>

Vous pouvez annuler un transfert de certificat avant qu'il ne soit accepté à l'aide de la [AWS IoT console](https://console.aws.amazon.com/iot/home) ou du AWS CLI.

### Annuler un transfert de certificat (console)
<a name="transfer-cert-cancel-console"></a>

Pour effectuer cette procédure, vous aurez besoin de l'ID du transfert de certificat que vous souhaitez annuler.​

Effectuez cette procédure à partir du compte qui a initié le transfert du certificat.

**Pour annuler un transfert de certificat**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

   Choisissez le certificat avec le statut **Transféré** dont vous souhaitez annuler le transfert et ouvrez son menu d'options.

1. Dans le menu des options du certificat, choisissez l'option **Révoquer le transfert** pour annuler le transfert du certificat.
**Important**  
Veuillez à ne pas confondre l'option **Révoquer le transfert** avec l'option **Révoquer**.  
L'option **Révoquer le transfert** annule le transfert du certificat, tandis que l'option **Révoquer** rend le certificat irréversiblement inutilisable par AWS IoT. 

### Annuler un transfert de certificat (CLI)
<a name="transfer-cert-cancel-cli"></a>

Pour terminer cette procédure, vous aurez besoin *certificateId* du transfert de certificat que vous souhaitez annuler.

Effectuez cette procédure à partir du compte qui a initié le transfert du certificat.

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html) pour annuler le transfert du certificat.

```
aws iot cancel-certificate-transfer --certificate-id certificateId
```

# Validation des certificats client personnalisés
<a name="customize-client-auth"></a>

AWS IoT Core prend en charge la validation personnalisée des certificats client pour les certificats client X.509, ce qui améliore la gestion de l'authentification des clients. Cette méthode de validation des certificats est également connue sous le nom de vérifications de certificats de pré-authentification, dans lesquelles vous évaluez les certificats clients en fonction de vos propres critères (définis dans une fonction Lambda) et révoquez les certificats clients ou le certificat d'autorité de signature (CA) des certificats pour empêcher les clients de se connecter à. AWS IoT Core Par exemple, vous pouvez créer vos propres contrôles de révocation des certificats qui valident le statut des certificats par rapport aux autorités de validation qui prennent [en charge les points de terminaison du protocole OCSP (Online Certificate Status Protocol)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) ou des [listes de révocation de certificats (CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list), et qui empêchent les clients dont les certificats ont été révoqués de se connecter. Les critères utilisés pour évaluer les certificats clients sont définis dans une fonction Lambda (également appelée Lambda de pré-authentification). Vous devez utiliser les points de terminaison définis dans les configurations de domaine et le [type d'authentification](protocols.md#connection-protocol-auth-mode) doit être le certificat X.509. En outre, les clients doivent fournir l'extension [SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) lorsqu'ils se connectent à AWS IoT Core.

**Note**  
Cette fonctionnalité n'est pas prise en charge dans les AWS GovCloud (US) régions.

**Topics**
+ [Étape 1 : enregistrez vos certificats clients X.509 auprès de AWS IoT Core](#client-auth-cert-verification)
+ [Étape 2 : création d’une fonction Lambda](#customize-client-auth-lambda)
+ [Étape 3 : Autoriser AWS IoT l'appel de votre fonction Lambda](#customize-client-configuration-grant-permission)
+ [Étape 4 : définir la configuration de l'authentification pour un domaine](#customize-client-configuration)

## Étape 1 : enregistrez vos certificats clients X.509 auprès de AWS IoT Core
<a name="client-auth-cert-verification"></a>

Si ce n'est pas déjà fait, enregistrez et activez vos [certificats clients X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) avec AWS IoT Core. Sinon, passez à l’étape suivante.

Pour enregistrer et activer vos certificats clients auprès de AWS IoT Core, procédez comme suit :

1. Si vous [créez des certificats clients directement avec AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Ces certificats clients seront automatiquement enregistrés auprès de AWS IoT Core.

1. Si vous [créez vos propres certificats clients](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), suivez [ces instructions pour les enregistrer auprès](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html) de AWS IoT Core.

1. Pour activer vos certificats clients, suivez [ces instructions](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html).

## Étape 2 : création d’une fonction Lambda
<a name="customize-client-auth-lambda"></a>

Vous devez créer une fonction Lambda qui effectuera la vérification des certificats et sera appelée à chaque tentative de connexion client pour le point de terminaison configuré. Lorsque vous créez cette fonction Lambda, suivez les instructions générales de la section [Créez votre première fonction Lambda](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html). En outre, assurez-vous que la fonction Lambda respecte les formats de demande et de réponse attendus, comme suit :

**Exemple d'événement lié à une fonction Lambda**

```
{
	"connectionMetadata": {
		"id": "string"
	},
	"principalId": "string",
	"serverName": "string",
	"clientCertificateChain": [
		"string",
		"string"
	]
}
```

`connectionMetadata`  
Métadonnées ou informations supplémentaires relatives à la connexion du client à AWS IoT Core.

`principalId`  
Identifiant principal associé au client dans la connexion TLS.

`serverName`  
Chaîne de [nom d'hôte SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core exige que les appareils envoient l'[extension SNI](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.

`clientCertificateChain`  
Le tableau de chaînes qui représente la chaîne de certificats X.509 du client. 

**Exemple de réponse de la fonction Lambda**

```
{
	"isAuthenticated": "boolean"
}
```

`isAuthenticated`  
Valeur booléenne qui indique si la demande est authentifiée.

**Note**  
Dans la réponse Lambda, `isAuthenticated` il faut procéder `true` à une authentification et à une autorisation supplémentaires. Sinon, le certificat client IoT peut être désactivé et l'authentification personnalisée avec les certificats client X.509 peut être bloquée pour une authentification et une autorisation supplémentaires.

## Étape 3 : Autoriser AWS IoT l'appel de votre fonction Lambda
<a name="customize-client-configuration-grant-permission"></a>

Après avoir créé la fonction Lambda, vous devez autoriser son appel AWS IoT à l'aide de la commande CLI add [permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html). Notez que cette fonction Lambda sera invoquée à chaque tentative de connexion à votre point de terminaison configuré. Pour plus d'informations, consultez [Autoriser l'appel AWS IoT de votre fonction Lambda](custom-auth-authorize.md).

## Étape 4 : définir la configuration de l'authentification pour un domaine
<a name="customize-client-configuration"></a>

La section suivante décrit comment définir la configuration de l'authentification pour un domaine personnalisé à l'aide du AWS CLI.

### Définir la configuration du certificat client pour un domaine (CLI)
<a name="customize-client-auth-cli"></a>

Si vous n'avez pas de configuration de domaine, utilisez la commande [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)CLI pour en créer une. Si vous avez déjà une configuration de domaine, utilisez la commande [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)CLI pour mettre à jour la configuration du certificat client pour un domaine. Vous devez ajouter l'ARN de la fonction Lambda que vous avez créée à l'étape précédente.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

`domain-configuration-name`  
Nom de la configuration de domaine.

`authentication-type`  
Type d'authentification de la configuration du domaine. Pour plus d'informations, consultez la section [Choix d'un type d'authentification](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Protocole d'application avec lequel les appareils communiquent AWS IoT Core. Pour plus d'informations, consultez la section [Choix d'un protocole d'application](protocols.md#protocol-selection).

`client-certificate-config`  
Objet qui spécifie la configuration de l'authentification client pour un domaine.

`clientCertificateCallbackArn`  
Le nom de ressource Amazon (ARN) de la fonction Lambda qui AWS IoT invoque une couche TLS lors de l'établissement d'une nouvelle connexion. Pour personnaliser l'authentification client afin de valider un certificat client personnalisé, vous devez ajouter l'ARN de la fonction Lambda que vous avez créée à l'étape précédente.

Pour plus d'informations, consultez [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)et consultez le [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)Guide de *référence des AWS IoT API*. Pour plus d'informations sur les configurations de domaine, consultez la section [Configurations de domaine](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Utilisateurs, groupes et rôles IAM
<a name="iam-users-groups-roles"></a>

Les utilisateurs, groupes et rôles IAM constituent les mécanismes standard de gestion de l'identité et de l'authentification dans AWS. Vous pouvez les utiliser pour vous connecter aux interfaces AWS IoT HTTP à l'aide du AWS SDK et AWS CLI.

Les rôles IAM permettent également d'accéder AWS IoT à d'autres AWS ressources de votre compte en votre nom. Par exemple, si vous souhaitez qu'un appareil publie son état dans une table DynamoDB, les rôles IAM AWS IoT permettent d'interagir avec Amazon DynamoDB. Pour en savoir plus, consultez [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

Pour les connexions au courtier de messages via HTTP, AWS IoT authentifie les utilisateurs, les groupes et les rôles à l'aide du processus de signature Signature version 4. Pour plus d'informations, consultez [la section Signature des demandes d' AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Lorsqu'ils utilisent AWS Signature Version 4 avec AWS IoT, les clients doivent prendre en charge les éléments suivants dans leur implémentation du protocole TLS :
+ TLS 1.2
+ Validation de la signature de certificat RSA SHA-256
+ Une des suites de chiffrement de la section Prise en charge des suites de chiffrement TLS

Pour plus d'informations, consultez [Gestion des identités et des accès pour AWS IoT](security-iam.md).

# Identités Amazon Cognito
<a name="cognito-identities"></a>

Amazon Cognito Identity vous permet de créer des informations d' AWS identification temporaires à privilèges limités à utiliser dans les applications mobiles et Web. Lorsque vous utilisez Amazon Cognito Identity, créez des groupes d'identités qui créent des identités uniques pour vos utilisateurs et authentifiez-les auprès de fournisseurs d'identité tels que Login with Amazon, Facebook et Google. Vous pouvez également utiliser les identités Amazon Cognito avec vos propres identités authentifiées par le développeur. Pour plus d'informations, consultez [Identité Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html).

Pour utiliser Amazon Cognito Identity, définissez un pool d'identités Amazon Cognito associé à un rôle IAM. Le rôle IAM est associé à une politique IAM qui accorde aux identités de votre pool d'identités l'autorisation d'accéder à des AWS ressources telles que les services d'appel AWS .

L’identité Amazon Cognito crée des identités non authentifiées et authentifiées. Les identités non authentifiées sont utilisées pour les utilisateurs invités d'une application mobile ou Web qui souhaitent utiliser l'application sans se connecter. Les utilisateurs non authentifiés ne bénéficient que des autorisations spécifiées dans la politique IAM associée au réserve d'identités.

Lorsque vous utilisez des identités authentifiées, en plus de la politique IAM attachée au pool d'identités, vous devez associer une AWS IoT politique à une identité Amazon Cognito. Pour associer une AWS IoT politique, utilisez l'[ AttachPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachPolicy.html)API et accordez des autorisations à un utilisateur individuel de votre AWS IoT application. Vous pouvez utiliser cette AWS IoT politique pour attribuer des autorisations détaillées à des clients spécifiques et à leurs appareils.

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. Pour plus d'informations sur la création de politiques pour les identités Amazon Cognito, consultez [Exemples de stratégie de publication/abonnement](pub-sub-policy.md) et [Autorisation avec les identités Amazon Cognito](cog-iot-policies.md).

![\[Application accédant à un appareil avec Amazon Cognito Identity.\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/device-cognito.png)


# Authentification et autorisation personnalisées
<a name="custom-authentication"></a>

 AWS IoT Core vous permet de définir des autorisateurs personnalisés afin que vous puissiez gérer vous-même l'authentification et l'autorisation de vos clients. Cela est utile lorsque vous devez utiliser des mécanismes d'authentification autres que ceux pris en charge de AWS IoT Core manière native. (Pour plus d'informations sur les mécanismes pris en charge de manière native, consultez [Authentification client](client-authentication.md)).  

 Par exemple, si vous migrez des appareils existants sur le terrain AWS IoT Core et que ces appareils utilisent un jeton porteur personnalisé ou un nom d'utilisateur et un mot de passe MQTT pour s'authentifier, vous pouvez les migrer vers ces appareils AWS IoT Core sans avoir à leur fournir de nouvelles identités. Vous pouvez utiliser l'authentification personnalisée avec tous les protocoles de communication pris en AWS IoT Core charge. Pour plus d'informations sur les protocoles pris en charge par AWS IoT Core , consultez [Protocoles de communication des appareils](protocols.md). 

**Topics**
+ [Comprendre le flux de travail d'authentification personnalisé](custom-authorizer.md)
+ [Création et gestion d'autorisateurs personnalisés (CLI)](config-custom-auth.md)
+ [Authentification personnalisée avec des certificats clients X.509](custom-auth-509cert.md)
+ [Connexion à l' AWS IoT Core aide de l'authentification personnalisée](custom-auth.md)
+ [Dépannage de vos mécanismes d'autorisation](custom-auth-troubleshooting.md)

# Comprendre le flux de travail d'authentification personnalisé
<a name="custom-authorizer"></a>

L'authentification personnalisée vous permet de définir comment authentifier et autoriser les clients à l'aide [de ressources de mécanisme d'autorisation](https://docs.aws.amazon.com/iot/latest/apireference/API_AuthorizerDescription.html).  Chaque autorisateur contient une référence à une fonction Lambda gérée par le client, une clé publique facultative pour valider les informations d'identification de l'appareil et des informations de configuration supplémentaires. Le schéma suivant illustre le flux de travail d'autorisation pour l'authentification personnalisée dans AWS IoT Core.

![\[Flux de travail d'autorisation personnalisé pour une authentification personnalisée dans AWS IoT Core.\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/custom-authentication.png)


## AWS IoT Core flux de travail d'authentification et d'autorisation personnalisé
<a name="custom-authentication-workflow"></a>

La liste suivante explique chaque étape du flux de travail d'authentification et d'autorisation personnalisé.

1. Un appareil se connecte au point de terminaison de AWS IoT Core données d'un client à l'aide de l'une des solutions prises en charge[Protocoles de communication des appareils](protocols.md). L'appareil transmet les informations d'identification soit dans les champs d'en-tête de la demande, soit dans les paramètres de requête (pour les WebSockets protocoles HTTP Publish ou MQTT over), soit dans le champ du nom d'utilisateur et du mot de passe du message MQTT CONNECT (pour les protocoles MQTT et MQTT over). WebSockets 

1. AWS IoT Core vérifie l'une des deux conditions suivantes :
   + La demande entrante spécifie un mécanisme d'autorisation.
   + Un autorisateur par défaut est configuré pour le point de terminaison de AWS IoT Core données recevant la demande.

   S'il AWS IoT Core trouve un autorisateur de l'une ou l'autre de ces manières, AWS IoT Core déclenche la fonction Lambda associée à l'autorisateur.

1.  (Facultatif) Si vous avez activé la signature par jeton, AWS IoT Core valide la signature de la demande en utilisant la clé publique stockée dans l'autorisateur avant de déclencher la fonction Lambda. Si la validation échoue, AWS IoT Core arrête la demande sans invoquer la fonction Lambda.  

1. La fonction Lambda reçoit les informations d'identification et les métadonnées de connexion dans la requête et prend une décision d'authentification.

1. La fonction Lambda renvoie les résultats de la décision d'authentification et un document de AWS IoT Core politique qui spécifie les actions autorisées dans la connexion. La fonction Lambda renvoie également des informations qui indiquent à quelle fréquence les informations d'identification contenues dans la demande sont AWS IoT Core revalidées en invoquant la fonction Lambda.

1. AWS IoT Core évalue l'activité de la connexion par rapport à la politique qu'elle a reçue de la fonction Lambda.

1. Une fois que la connexion est établie et que votre Lambda d'autorisation personnalisé est initialement invoqué, l'appel suivant peut être retardé jusqu'à 5 minutes sur les connexions inactives sans aucune opération MQTT. Ensuite, les appels suivants suivront l'intervalle d'actualisation dans votre autorisateur Lambda personnalisé. Cette approche permet d'éviter des appels excessifs susceptibles de dépasser la limite de simultanéité Lambda de votre compte. Compte AWS

## Considérations relatives à la mise à l'échelle
<a name="custom-authentication-scaling"></a>

 Étant donné qu'une fonction Lambda gère l'authentification et l'autorisation de votre mécanisme d'autorisation, la fonction est soumise aux limites de tarification et de service Lambda, telles que le taux d'exécution simultanée. Pour plus d'informations sur la tarification Lambda, consultez [Tarification Lambda](https://aws.amazon.com/lambda/pricing/). Vous pouvez gérer la charge sur votre fonction Lambda en ajustant les paramètres `refreshAfterInSeconds` et `disconnectAfterInSeconds` dans la réponse de votre fonction Lambda. Pour plus d'informations sur le contenu de la réponse de votre fonction Lambda, consultez [Définir votre fonction Lambda](custom-auth-lambda.md).

**Note**  
Si vous laissez la signature activée, vous pouvez empêcher un déclenchement excessif de votre Lambda par des clients non reconnus. Considérez ceci avant de désactiver la connexion à votre mécanisme d'autorisation.

**Note**  
Le délai d'expiration de la fonction Lambda pour le mécanisme d'autorisation personnalisé est de 5 secondes.

# Création et gestion d'autorisateurs personnalisés (CLI)
<a name="config-custom-auth"></a>

AWS IoT Core implémente des schémas d'authentification et d'autorisation personnalisés en utilisant des autorisateurs personnalisés. Un autorisateur personnalisé est une AWS IoT Core ressource qui vous donne la flexibilité de définir et de mettre en œuvre les règles et les politiques en fonction de vos besoins spécifiques. Pour créer un autorisateur personnalisé avec des step-by-step instructions, voir [Tutoriel : Création d'un autorisateur personnalisé](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html) pour. AWS IoT Core

Chaque mécanisme d'autorisation se compose des éléments suivants : 
+  *Nom* : Une chaîne unique définie par l'utilisateur qui identifie le mécanisme d'autorisation.
+  *ARN de la fonction Lambda* : Amazon Resource Name (ARN) de la fonction Lambda qui implémente la logique d'autorisation et d'authentification.  
+  *Nom de clé du jeton* : nom de clé utilisé pour extraire le jeton des en-têtes HTTP, des paramètres de requête ou du nom d'utilisateur MQTT CONNECT afin d'effectuer la validation de la signature. Cette valeur est obligatoire si la signature est activée dans votre mécanisme d'autorisation. 
+  *Indicateur de signature désactivée (facultatif)* : valeur booléenne qui spécifie s'il faut désactiver l'exigence de signature sur les informations d'identification. Ceci est utile pour les scénarios dans lesquels la signature des informations d'identification n'a pas de sens, tels que les schémas d'authentification qui utilisent le nom d'utilisateur et le mot de passe MQTT. La valeur par défaut est `false`, la signature est donc activée par défaut. 
+  *Clé publique de signature de jeton* : clé publique que AWS IoT Core utilise pour valider la signature du jeton. Sa longueur minimale est de 2048 bits. Cette valeur est obligatoire si la signature est activée dans votre mécanisme d'autorisation.  

Lambda vous facture le nombre d'exécutions de votre fonction Lambda et le temps nécessaire à l'exécution du code de votre fonction. Pour plus d'informations sur la tarification Lambda, consultez [Tarification Lambda ](https://aws.amazon.com/lambda/pricing/). Pour plus d'informations sur la création de fonctions Lambda, consultez le [Guide du développeur Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

**Note**  
Si vous laissez la signature activée, vous pouvez empêcher un déclenchement excessif de votre Lambda par des clients non reconnus. Considérez ceci avant de désactiver la connexion à votre mécanisme d'autorisation.

**Note**  
Le délai d'expiration de la fonction Lambda pour le mécanisme d'autorisation personnalisé est de 5 secondes.

**Topics**
+ [Définir votre fonction Lambda](custom-auth-lambda.md)
+ [Création d'un mécanisme d'autorisation](custom-auth-create-authorizer.md)
+ [Autorisation d' AWS IoT invoquer votre fonction Lambda](custom-auth-authorize.md)
+ [Tester vos mécanismes d'autorisation](custom-auth-testing.md)
+ [Gestion des autorisations personnalisées](custom-auth-manage.md)

# Définir votre fonction Lambda
<a name="custom-auth-lambda"></a>

 Lorsque vous AWS IoT Core invoquez votre autorisateur, il déclenche le Lambda associé à l'autorisateur avec un événement contenant l'objet JSON suivant. L'exemple d'objet JSON contient tous les champs possibles. Tous les champs qui ne sont pas pertinents pour la demande de connexion ne sont pas inclus.

```
{
    "token" :"aToken",
    "signatureVerified": Boolean, // Indicates whether the device gateway has validated the signature.
    "protocols": ["tls", "http", "mqtt"], // Indicates which protocols to expect for the request.
    "protocolData": {
        "tls" : {
            "serverName": "serverName" // The server name indication (SNI) host_name string.
        },
        "http": {
            "headers": {
                "#{name}": "#{value}"
            },
            "queryString": "?#{name}=#{value}"
        },
        "mqtt": {
            "username": "myUserName",
            "password": "myPassword", // A base64-encoded string.
            "clientId": "myClientId" // Included in the event only when the device sends the value.
        }
    },
    "connectionMetadata": {
        "id": UUID // The connection ID. You can use this for logging.
    },
}
```

 La fonction Lambda doit utiliser ces informations pour authentifier la connexion entrante et décider quelles actions sont autorisées dans la connexion. La fonction doit envoyer une réponse contenant les valeurs suivantes. 
+  `isAuthenticated`: Une valeur booléenne qui indique si la demande est authentifiée.
+  `principalId`: Chaîne alphanumérique qui sert d'identifiant pour le jeton envoyé par la demande d'autorisation personnalisée. La valeur doit être une chaîne alphanumérique contenant au moins un et pas plus de 128 caractères et correspondre à ce modèle d'expression régulière (regex) : `([a-zA-Z0-9]){1,128}`. Les caractères spéciaux qui ne sont pas alphanumériques ne sont pas autorisés à être utilisés avec l'entrée`principalId`. AWS IoT Core Reportez-vous à la documentation des autres AWS services si des caractères spéciaux non alphanumériques sont autorisés pour le. `principalId`
+  `policyDocuments`: liste des documents de AWS IoT Core politique au format JSON Pour plus d'informations sur la création de AWS IoT Core politiques, consultez. [AWS IoT Core politiques](iot-policies.md) Le nombre maximum de documents de stratégie est de 10 documents de stratégie. Chaque document de stratégie peut contenir un maximum de 2048 caractères.
+  `disconnectAfterInSeconds` : Un entier qui spécifie la durée maximale (en secondes) de la connexion à la passerelle AWS IoT Core . La valeur minimale est de 300 secondes et la valeur maximale de 86 400 secondes. La valeur par défaut est 86 400.
**Note**  
La valeur de `disconnectAfterInSeconds` (renvoyée par la fonction Lambda) est définie lorsque la connexion est établie. Cette valeur ne peut pas être modifiée lors des appels Lambda d'actualisation des politiques ultérieurs.
+  `refreshAfterInSeconds`: Un entier qui qui spécifie l’intervalle entre les actualisations de stratégie. Lorsque cet intervalle est écoulé, AWS IoT Core appelle la fonction Lambda pour autoriser l'actualisation des stratégies. La valeur minimale est de 300 secondes et la valeur maximale de 86 400 secondes. 

  L'objet JSON suivant contient un exemple de réponse que votre fonction Lambda peut envoyer. 

 **\$1 "isAuthenticated":true, //A Boolean that determines whether client can connect. "principalId": "xxxxxxxx",  //A string that identifies the connection in logs. "disconnectAfterInSeconds": 86400,  "refreshAfterInSeconds": 300,   "policyDocuments": [       \$1         "Version": "2012-10-17",         "Statement": [            \$1               "Action": "iot:Publish",               "Effect": "Allow",               "Resource": "arn:aws:iot:us-east-1:<your\$1aws\$1account\$1id>:topic/customauthtesting"             \$1          ]        \$1     ] \$1**

 La `policyDocument` valeur doit contenir un document AWS IoT Core de politique valide. Pour plus d'informations sur AWS IoT Core les politiques, consultez[AWS IoT Core politiques](iot-policies.md). Dans MQTT sur TLS et MQTT sur WebSockets connexions, met en AWS IoT Core cache cette politique pendant l'intervalle spécifié dans la valeur du champ. `refreshAfterInSeconds` Dans le cas des connexions HTTP, la fonction Lambda est appelée pour chaque demande d'autorisation, sauf si votre appareil utilise des connexions HTTP persistantes (également appelées HTTP keep-alive ou HTTP connection reuse). Vous pouvez choisir d'activer la mise en cache lors de la configuration du mécanisme d'autorisation. Pendant cet intervalle, AWS IoT Core autorise les actions dans une connexion établie par rapport à cette politique mise en cache sans déclencher à nouveau votre fonction Lambda. En cas d'échec lors de l'authentification personnalisée, AWS IoT Core met fin à la connexion. AWS IoT Core met également fin à la connexion si elle est ouverte depuis plus longtemps que la valeur spécifiée dans le `disconnectAfterInSeconds` paramètre. 

 Vous trouverez ci-dessous JavaScript un exemple de fonction Lambda Node.js qui recherche un mot de passe dans le message MQTT Connect avec une valeur `test` égale à et renvoie une politique autorisant la connexion AWS IoT Core avec un client `myClientName` nommé et la publication sur une rubrique contenant le même nom de client. S'il ne trouve pas le mot de passe attendu, il renvoie une stratégie qui refuse ces deux actions. 

```
// A simple Lambda function for an authorizer. It demonstrates 
// how to parse an MQTT password and generate a response.

exports.handler = function(event, context, callback) { 
    var uname = event.protocolData.mqtt.username;
    var pwd = event.protocolData.mqtt.password;
    var buff = new Buffer(pwd, 'base64');
    var passwd = buff.toString('ascii');
    switch (passwd) { 
        case 'test': 
            callback(null, generateAuthResponse(passwd, 'Allow')); 
            break;
        default: 
            callback(null, generateAuthResponse(passwd, 'Deny'));  
    }
};

// Helper function to generate the authorization response.
var generateAuthResponse = function(token, effect) { 
    var authResponse = {}; 
    authResponse.isAuthenticated = true; 
    authResponse.principalId = 'TEST123'; 
    
    var policyDocument = {}; 
    policyDocument.Version = '2012-10-17';		 	 	 
    policyDocument.Statement = []; 
    var publishStatement = {}; 
    var connectStatement = {};
    connectStatement.Action = ["iot:Connect"];
    connectStatement.Effect = effect;
    connectStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:client/myClientName"];
    publishStatement.Action = ["iot:Publish"]; 
    publishStatement.Effect = effect; 
    publishStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"]; 
    policyDocument.Statement[0] = connectStatement;
    policyDocument.Statement[1] = publishStatement; 
    authResponse.policyDocuments = [policyDocument]; 
    authResponse.disconnectAfterInSeconds = 3600; 
    authResponse.refreshAfterInSeconds = 300;
    
    return authResponse; 
}
```

 La fonction Lambda précédente renvoie le JSON suivant lorsqu'elle reçoit le mot de passe `test` attendu dans le message MQTT Connect. Les valeurs des propriétés `password` et `principalId` seront les valeurs du message MQTT Connect.

```
{
  "password": "password",
  "isAuthenticated": true,
  "principalId": "principalId",
  "policyDocuments": [
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": "iot:Connect",
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Action": "iot:Publish",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Subscribe",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topicfilter/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Receive",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        }
      ]
    }
  ],
  "disconnectAfterInSeconds": 3600,
  "refreshAfterInSeconds": 300
}
```

# Création d'un mécanisme d'autorisation
<a name="custom-auth-create-authorizer"></a>

 Vous pouvez créer un autorisateur à l'aide de l'[CreateAuthorizerAPI](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateAuthorizer.html). L'exemple suivant décrit la commande. 

```
aws iot create-authorizer
--authorizer-name MyAuthorizer
--authorizer-function-arn arn:aws:lambda:us-west-2:<account_id>:function:MyAuthorizerFunction  //The ARN of the Lambda function.
[--token-key-name MyAuthorizerToken //The key used to extract the token from headers.
[--token-signing-public-keys FirstKey=
 "-----BEGIN PUBLIC KEY-----
  [...insert your public key here...] 
  -----END PUBLIC KEY-----"
[--status ACTIVE]
[--tags <value>]
[--signing-disabled | --no-signing-disabled]
```

Vous pouvez utiliser le paramètre `signing-disabled` pour désactiver la validation de signature pour chaque invocation de votre mécanisme d'autorisation. Nous vous recommandons fortement de ne pas désactiver la signature, sauf si vous y êtes obligé. La validation de signature vous protège contre les appels excessifs de votre fonction Lambda à partir d'appareils inconnus. Vous ne pouvez pas mettre à jour l'état `signing-disabled` d'un organisme d'autorisation après l'avoir créé. Pour modifier ce comportement, vous devez créer un autre mécanisme d'autorisation personnalisé avec une valeur différente pour le paramètre `signing-disabled`. 

Les valeurs des paramètres `tokenKeyName` et `tokenSigningPublicKeys` sont facultatives si vous avez désactivé la signature. Ce sont des valeurs obligatoires si la signature est activée. 

Après avoir créé votre fonction Lambda et l'autorisateur personnalisé, vous devez explicitement accorder au AWS IoT Core service l'autorisation d'appeler la fonction en votre nom. Vous pouvez le faire à l'aide de la commande suivante. 

**Note**  
Le point de terminaison IoT par défaut peut ne pas prendre en charge l'utilisation d'autorisateurs personnalisés dotés de fonctions Lambda. Vous pouvez plutôt utiliser des configurations de domaine pour définir un nouveau point de terminaison, puis spécifier ce point de terminaison pour l'autorisateur personnalisé.

```
aws lambda add-permission --function-name <lambda_function_name>
--principal iot.amazonaws.com --source-arn <authorizer_arn>
--statement-id Id-123 --action "lambda:InvokeFunction"
```

# Autorisation d' AWS IoT invoquer votre fonction Lambda
<a name="custom-auth-authorize"></a>

Dans cette section, vous allez autoriser la ressource d'autorisation personnalisée que vous venez de créer pour exécuter la fonction Lambda. Pour accorder l'autorisation, vous pouvez utiliser la commande CLI [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html).

**Accordez l'autorisation à votre fonction Lambda à l'aide du AWS CLI**

1. Après avoir inséré vos valeurs, entrez la commande suivante. Notez que la valeur `statement-id` doit être unique. Remplacez `Id-1234` par la valeur exacte que vous avez, sinon vous risquez de recevoir une `ResourceConflictException` erreur.

   ```
   aws lambda add-permission  \
   --function-name "custom-auth-function" \
   --principal "iot.amazonaws.com" \
   --action "lambda:InvokeFunction" \
   --statement-id "Id-1234" \
   --source-arn authorizerArn
   ```

1. Si la commande aboutit, elle renvoie une instruction d'autorisation, comme dans cet exemple. Vous pouvez passer à la section suivante pour tester le mécanisme d’autorisation personnalisée.

   ```
   {
       "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\"}}}"
   }
   ```

   Si la commande échoue, elle renvoie une erreur, comme dans cet exemple. Vous devez vérifier et corriger l'erreur avant de continuer.

   ```
   An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer
   mission on resource: arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function
   ```

# Tester vos mécanismes d'autorisation
<a name="custom-auth-testing"></a>

 Vous pouvez utiliser l'[TestInvokeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_TestInvokeAuthorizer.html)API pour tester les valeurs d'invocation et de retour de votre autorisateur. Cette API vous permet de spécifier les métadonnées du protocole et de tester la validation de signature dans votre autorisateur.

Les onglets suivants montrent comment utiliser le AWS CLI pour tester votre autorisateur.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER \
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER ^
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER `
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------

La valeur du paramètre `token-signature` est le jeton signé. Pour savoir comment obtenir cette valeur, consultez [Signer le jeton](custom-auth.md#custom-auth-token-signature).

Si votre mécanisme d'autorisation prend un nom d'utilisateur et un mot de passe, vous pouvez transmettre ces informations en utilisant le paramètre `--mqtt-context`. Les onglets suivants montrent comment utiliser l'API `TestInvokeAuthorizer` pour envoyer un objet JSON contenant un nom d'utilisateur, un mot de passe et un nom de client à votre mécanisme d'autorisation personnalisé.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  \
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  ^
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  `
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------

Le mot de passe doit être codé en base64. L'exemple suivant montre comment coder un mot de passe dans un environnement de type Unix.

```
echo -n PASSWORD | base64
```

# Gestion des autorisations personnalisées
<a name="custom-auth-manage"></a>

 Vous pouvez gérer vos autorisateurs à l'aide des méthodes suivantes APIs. 
+ [ListAuthorizers](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuthorizers.html): Afficher tous les autorisateurs de votre compte.
+  [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html): affiche les propriétés de l'autorisateur spécifié. Ces valeurs incluent la date de création, la date de la dernière modification et d'autres attributs.
+ [SetDefaultAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_SetDefaultAuthorizer.html): Spécifie l'autorisateur par défaut pour vos points de terminaison AWS IoT Core de données. AWS IoT Core utilise cet autorisateur si un appareil ne transmet pas les AWS IoT Core informations d'identification et ne spécifie pas d'autorisateur. Pour plus d'informations sur l'utilisation des AWS IoT Core informations d'identification, consultez[Authentification client](client-authentication.md).
+ [UpdateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAuthorizer.html): modifie le statut, le nom de la clé du jeton ou les clés publiques de l'autorisateur spécifié.
+  [DeleteAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteAuthorizer.html): Supprime l'autorisateur spécifié. 

**Note**  
 Vous ne pouvez pas mettre à jour les exigences de signature d'un mécanisme d'autorisation. Cela signifie que vous ne pouvez pas désactiver la connexion si un mécanisme d'autorisation existant l'exige. Vous ne pouvez pas non plus exiger la connexion d’un mécanisme d’autorisation existant qui ne l’exige pas. 

# Authentification personnalisée avec des certificats clients X.509
<a name="custom-auth-509cert"></a>

Lorsque vous connectez des appareils à AWS IoT Core, plusieurs [types d'authentification](protocols.md#connection-protocol-auth-mode) sont disponibles. Vous pouvez utiliser des [certificats client X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) qui peuvent être utilisés pour authentifier les connexions des clients et des appareils, ou définir des [autorisateurs personnalisés](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html) pour gérer votre propre logique d'authentification et d'autorisation des clients. Cette rubrique explique comment utiliser l'authentification personnalisée avec les certificats client X.509.

L'utilisation de l'authentification personnalisée avec des certificats X.509 peut être utile si vous avez déjà authentifié vos appareils à l'aide de certificats X.509 et que vous souhaitez effectuer une validation supplémentaire et une autorisation personnalisée. Par exemple, si vous stockez les données de vos appareils, telles que leurs numéros de série, dans le certificat client X.509, après avoir AWS IoT Core authentifié le certificat client X.509, vous pouvez utiliser un autorisateur personnalisé pour identifier des appareils spécifiques en fonction des informations stockées dans le champ du certificat. CommonName L'utilisation de l'authentification personnalisée avec des certificats X.509 peut améliorer la gestion de la sécurité de vos appareils lors de la connexion des appareils AWS IoT Core et offre plus de flexibilité pour gérer la logique d'authentification et d'autorisation. AWS IoT Core [prend en charge l'authentification personnalisée avec des certificats X.509 utilisant le certificat X.509 et le type d'authentification d'autorisation personnalisé, qui fonctionne à la fois avec le protocole [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) et le protocole HTTPS.](https://docs.aws.amazon.com//iot/latest/developerguide/http.html) Pour plus d'informations sur les types d'authentification et les protocoles d'application pris en charge par les terminaux des AWS IoT Core appareils, consultez la section [Protocoles de communication des appareils](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html).

**Note**  
L'authentification personnalisée à l'aide de certificats clients X.509 n'est pas prise en charge dans les AWS GovCloud (US) régions.

**Important**  
Vous devez utiliser un point de terminaison créé à l'aide [de configurations de domaine](iot-custom-endpoints-configurable.md). En outre, les clients doivent fournir l'extension [SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) lorsqu'ils se connectent à AWS IoT Core.

**Topics**
+ [Étape 1 : enregistrez vos certificats clients X.509 auprès de AWS IoT Core](#custom-auth-509cert-client)
+ [Étape 2 : création d’une fonction Lambda](#custom-auth-509cert-lambda)
+ [Étape 3 : créer un autorisateur personnalisé](#custom-auth-509cert-authorizer)
+ [Étape 4 : définir le type d'authentification et le protocole d'application dans une configuration de domaine](#custom-auth-509cert-domainconfig)

## Étape 1 : enregistrez vos certificats clients X.509 auprès de AWS IoT Core
<a name="custom-auth-509cert-client"></a>

Si ce n'est pas déjà fait, enregistrez et activez vos [certificats clients X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) avec AWS IoT Core. Sinon, passez à l’étape suivante.

Pour enregistrer et activer vos certificats clients auprès de AWS IoT Core, procédez comme suit :

1. Si vous [créez des certificats clients directement avec AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Ces certificats clients seront automatiquement enregistrés auprès de AWS IoT Core.

1. Si vous [créez vos propres certificats clients](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), suivez [ces instructions pour les enregistrer auprès](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html) de AWS IoT Core.

1. Pour activer vos certificats clients, suivez [ces instructions](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html).

## Étape 2 : création d’une fonction Lambda
<a name="custom-auth-509cert-lambda"></a>

AWS IoT Core utilise des autorisateurs personnalisés pour implémenter des schémas d'authentification et d'autorisation personnalisés. Un autorisateur personnalisé est associé à une fonction Lambda qui détermine si un appareil est authentifié et quelles opérations le périphérique est autorisé à effectuer. Lorsqu'un appareil se connecte à AWS IoT Core, AWS IoT Core récupère les détails de l'autorisateur, y compris le nom de l'autorisateur et la fonction Lambda associée, et invoque la fonction Lambda. La fonction Lambda reçoit un événement contenant un objet JSON contenant les données du certificat client X.509 du périphérique. Votre fonction Lambda utilise cet objet JSON d'événement pour évaluer la demande d'authentification, décider des actions à entreprendre et renvoyer une réponse.

### Exemple d'événement lié à une fonction Lambda
<a name="custom-auth-509cert-event"></a>

L'exemple d'objet JSON suivant contient tous les champs possibles qui peuvent être inclus. L'objet JSON proprement dit ne contiendra que les champs relatifs à la demande de connexion spécifique.

```
{
	"token": "aToken",
	"signatureVerified": true,
	"protocols": [
		"tls",
		"mqtt"
	],
	"protocolData": {
		"tls": {
			"serverName": "serverName",
			"x509CertificatePem": "x509CertificatePem",
			"principalId": "principalId"
		},
		"mqtt": {
			"clientId": "myClientId",
                     "username": "myUserName",
                     "password": "myPassword"
		}
	},
	"connectionMetadata": {
		"id": "UUID"
	}
}
```

`signatureVerified`  
Valeur booléenne qui indique si la signature du jeton configurée dans l'autorisateur est vérifiée ou non avant d'appeler la fonction Lambda de l'autorisateur. Si l'autorisateur est configuré pour désactiver la signature par jeton, ce champ sera faux. 

`protocols`  
Tableau contenant les protocoles attendus pour la demande.

`protocolData`  
Objet contenant des informations sur les protocoles utilisés dans la connexion. Il fournit des informations spécifiques au protocole qui peuvent être utiles pour l'authentification, l'autorisation, etc.  
`tls`- Cet objet contient des informations relatives au protocole TLS (Transport Layer Security).   
+ `serverName`- La chaîne de [nom d'hôte SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core exige que les appareils envoient l'[extension SNI](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.
+ `x509CertificatePem`- Le certificat X.509 au format PEM, qui est utilisé pour l'authentification du client dans la connexion TLS.
+ `principalId`- L'identifiant principal associé au client dans la connexion TLS.
`mqtt`- Cet objet contient des informations relatives au protocole MQTT.  
+ `clientId`- Une chaîne ne doit être incluse que dans le cas où l'appareil envoie cette valeur.
+ `username`- Le nom d'utilisateur fourni dans le paquet MQTT Connect.
+ `password`- Le mot de passe fourni dans le paquet MQTT Connect.

`connectionMetadata`  
Métadonnées de la connexion.  
`id`- L'identifiant de connexion, que vous pouvez utiliser pour la journalisation et le dépannage.

**Note**  
Dans ce cas, il s'agit d'un objet JSON `x509CertificatePem` et `principalId` deux nouveaux champs figurent dans la demande. La valeur de `principalId` est identique à la valeur de`certificateId`. Pour plus d'informations, consultez la section [Certificat](https://docs.aws.amazon.com//iot/latest/apireference/API_Certificate.html).

### Exemple de réponse de la fonction Lambda
<a name="custom-auth-509cert-response"></a>

La fonction Lambda doit utiliser les informations de l'objet JSON d'événement pour authentifier la connexion entrante et décider quelles actions sont autorisées dans la connexion.

L'objet JSON suivant contient un exemple de réponse que votre fonction Lambda peut envoyer.

```
{
	"isAuthenticated": true,
	"principalId": "xxxxxxxx",
	"disconnectAfterInSeconds": 86400,
	"refreshAfterInSeconds": 300,
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Effect": "Allow",
					"Action": "iot:Publish",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/customauthtesting"
				}
			]
		}
	]
}
```

Dans cet exemple, cette fonction doit envoyer une réponse contenant les valeurs suivantes.

`isAuthenticated`  
Valeur booléenne qui indique si la demande est authentifiée.

`principalId`  
Chaîne alphanumérique qui sert d'identifiant pour le jeton envoyé par la demande d'autorisation personnalisée. La valeur doit être une chaîne alphanumérique comportant au moins un caractère, mais pas plus de 128. Il identifie la connexion dans les journaux. La valeur de `principalId` doit être identique à la valeur de l'objet JSON `principalId` de l'événement (c'est-à-dire le certificateID du certificat X.509).

`policyDocuments`  
Liste des documents de politique au format JSON AWS IoT Core . La valeur est facultative et prend en charge les [variables de politique d'objet et les variables](https://docs.aws.amazon.com//iot/latest/developerguide/thing-policy-variables.html) [de politique de certificat](https://docs.aws.amazon.com//iot/latest/developerguide/cert-policy-variables.html). Le nombre maximum de documents de politique est de 10. Chaque document de stratégie peut contenir un maximum de 2048 caractères. Si plusieurs politiques sont associées à votre certificat client et à la fonction Lambda, l'autorisation est un ensemble de toutes les politiques. Pour plus d'informations sur la création de AWS IoT Core politiques, consultez la section [Politiques](https://docs.aws.amazon.com//iot/latest/developerguide/iot-policies.html).

`disconnectAfterInSeconds`  
Nombre entier qui indique la durée maximale (en secondes) de la connexion à la AWS IoT Core passerelle. La valeur minimale est de 300 secondes et la valeur maximale de 86 400 secondes. `disconnectAfterInSeconds`est valable pour la durée de vie d'une connexion et n'est pas actualisé lors de mises à jour consécutives des politiques.

`refreshAfterInSeconds`  
Nombre entier qui indique l'intervalle entre les actualisations des politiques. Lorsque cet intervalle est dépassé, AWS IoT Core invoque la fonction Lambda pour permettre l'actualisation des politiques. La valeur minimale est de 300 secondes et la valeur maximale de 86 400 secondes.

### Exemple de fonction Lambda
<a name="custom-auth-509cert-js-example"></a>

Voici un exemple de fonction Lambda de Node.js. La fonction examine le certificat X.509 du client et extrait les informations pertinentes telles que le numéro de série, l'empreinte digitale et le nom du sujet. Si les informations extraites correspondent aux valeurs attendues, le client est autorisé à se connecter. Ce mécanisme garantit que seuls les clients autorisés possédant des certificats valides peuvent établir une connexion.

```
const crypto = require('crypto');

exports.handler = async (event) => {
    
    // Extract the certificate PEM from the event
    const certPem = event.protocolData.tls.x509CertificatePem;
    
    // Parse the certificate using Node's crypto module
    const cert = new crypto.X509Certificate(certPem);
    
    var effect = "Deny";
    // Allow permissions only for a particular certificate serial, fingerprint, and subject
    if (cert.serialNumber === "7F8D2E4B9C1A5036DE8F7C4B2A91E5D80463BC9A1257" // This is a random serial
       && cert.fingerprint === "F2:9A:C4:1D:B5:E7:08:3F:6B:D0:4E:92:A7:C1:5B:8D:16:0F:E3:7A" // This is a random fingerprint
       && cert.subject === "allow.example.com") {
      effect = "Allow";
    }
    
    return generateAuthResponse(event.protocolData.tls.principalId, effect);
};


// Helper function to generate the authorization response.
function generateAuthResponse(principalId, effect) {
    const authResponse = {
        isAuthenticated: true,
        principalId,
        disconnectAfterInSeconds: 3600,
        refreshAfterInSeconds: 300,
        policyDocuments: [
          {
            Version: "2012-10-17",		 	 	 
            Statement: [
              {
                Action: ["iot:Connect"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:client/myClientName"
                ]
              },
              {
                Action: ["iot:Publish"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Subscribe"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Receive"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              }
            ]
          }
        ]
      };

  return authResponse;
}
```

La fonction Lambda précédente renvoie le code JSON suivant lorsqu'elle reçoit un certificat avec le numéro de série, l'empreinte digitale et le sujet attendus. La valeur de `x509CertificatePem` sera le certificat client fourni lors de la poignée de contact TLS. Pour plus d'informations, consultez la section [Définition de votre fonction Lambda](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html#custom-auth-lambda).

```
{
	"isAuthenticated": true,
	"principalId": "principalId in the event JSON object",
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Action": "iot:Connect",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:client/myClientName"
				},
				{
					"Action": "iot:Publish",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				},
				{
					"Action": "iot:Subscribe",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
				},
				{
					"Action": "iot:Receive",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				}
			]
		}
	],
	"disconnectAfterInSeconds": 3600,
	"refreshAfterInSeconds": 300
}
```

## Étape 3 : créer un autorisateur personnalisé
<a name="custom-auth-509cert-authorizer"></a>

Après [avoir défini la fonction Lambda](#custom-auth-509cert-lambda), créez un autorisateur personnalisé pour gérer votre propre logique d'authentification et d'autorisation du client. Vous pouvez suivre les instructions détaillées de l'[étape 3 : créer une ressource d'autorisation client et son autorisation](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html#custom-auth-tutorial-authorizer). Pour plus d'informations, consultez la section [Création d'un autorisateur.](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html) 

Lors de la création de l'autorisateur personnalisé, vous devez AWS IoT autoriser l'appel de la fonction Lambda après sa création. Pour obtenir des instructions détaillées, consultez [Autoriser l'appel AWS IoT de votre fonction Lambda](custom-auth-authorize.md).

## Étape 4 : définir le type d'authentification et le protocole d'application dans une configuration de domaine
<a name="custom-auth-509cert-domainconfig"></a>

Pour authentifier les appareils à l'aide d'une authentification personnalisée avec des certificats clients X.509, vous devez définir le type d'authentification et le protocole d'application dans une configuration de domaine, et vous devez envoyer l'extension SNI. La valeur de `authenticationType` doit être`CUSTOM_AUTH_X509`, et la valeur de `applicationProtocol` peut être `SECURE_MQTT` ou`HTTPS`.

### Définissez le type d'authentification et le protocole d'application dans la configuration du domaine (CLI)
<a name="custom-auth-509cert-cli"></a>

Si vous n'avez pas de configuration de domaine, utilisez la [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)commande pour en créer une. La valeur de `authenticationType` doit être`CUSTOM_AUTH_X509`, et la valeur de `applicationProtocol` peut être `SECURE_MQTT` ou`HTTPS`.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \ 
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

Si vous avez déjà une configuration de domaine, utilisez la [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)commande update `authenticationType` et `applicationProtocol` si nécessaire. Notez que vous ne pouvez pas modifier le type ou le protocole d'authentification sur le point de terminaison par défaut (`iot:Data-ATS`).

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

`domain-configuration-name`  
Nom de la configuration de domaine.

`authentication-type`  
Type d'authentification de la configuration du domaine. Pour plus d'informations, consultez la section [Choix d'un type d'authentification](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Protocole d'application avec lequel les appareils communiquent AWS IoT Core. Pour plus d'informations, consultez la section [Choix d'un protocole d'application](protocols.md#protocol-selection).

`--authorizer-config`  
Objet qui spécifie la configuration de l'autorisateur dans une configuration de domaine.

`defaultAuthorizerName`  
Nom de l'autorisateur pour une configuration de domaine.

Pour plus d'informations, consultez [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)et consultez le [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)Guide de *référence des AWS IoT API*. Pour plus d'informations sur la configuration des domaines, consultez la section [Configurations des domaines](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Connexion à l' AWS IoT Core aide de l'authentification personnalisée
<a name="custom-auth"></a>

 Les appareils peuvent se connecter à AWS IoT Core l'aide d'une authentification personnalisée avec n'importe quel protocole prenant AWS IoT Core en charge la messagerie des appareils. Pour plus d'informations sur les protocoles de communication pris en charge, consultez [Protocoles de communication des appareils](protocols.md).  Les données de connexion que vous transmettez à votre fonction Lambda d'autorisation dépendent du protocole que vous utilisez. Pour plus d'informations sur la création de votre fonction Lambda d'autorisation, consultez [Définir votre fonction Lambda](custom-auth-lambda.md). Les sections suivantes expliquent comment se connecter pour s'authentifier à l'aide de chaque protocole pris en charge.

## HTTPS
<a name="custom-auth-http"></a>

Les appareils qui envoient des données à AWS IoT Core l'aide de l'[API HTTP Publish](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html) peuvent transmettre des informations d'identification par le biais d'en-têtes de requête ou de paramètres de requête dans leurs requêtes HTTP POST. Les appareils peuvent spécifier un mécanisme d'autorisation à invoquer à l'aide du paramètre d'en-tête `x-amz-customauthorizer-name` ou de requête. Si la signature de jetons est activée dans votre mécanisme d'autorisation, vous devez transmettre le `token-key-name` et `x-amz-customauthorizer-signature` dans les en-têtes ou paramètres de requête. Notez que la `token-signature` valeur doit être codée en URL lorsque vous l'utilisez JavaScript depuis le navigateur.

**Note**  
Le mécanisme d'autorisation client pour le protocole HTTPS prend uniquement en charge les opérations de publication. Pour plus d'informations sur le protocole HTTPS, consultez [Protocoles de communication des appareils](protocols.md).

Les exemples de requêtes suivants montrent comment transmettre ces paramètres dans les en-têtes et paramètres de requête. 

```
//Passing credentials via headers
POST /topics/topic?qos=qos HTTP/1.1
Host: your-endpoint 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
x-amz-customauthorizer-name: authorizer-name

//Passing credentials via query parameters
POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value HTTP/1.1
```

## MQTT
<a name="custom-auth-mqtt"></a>

 Les appareils qui se connectent à AWS IoT Core l'aide d'une connexion MQTT peuvent transmettre des informations d'identification via les `password` champs `username` et des messages MQTT. La valeur `username` peut éventuellement contenir une chaîne de requête qui transmet des valeurs supplémentaires (y compris un jeton, une signature et un nom du mécanisme d'autorisation) à votre mécanisme d'autorisation. Vous pouvez utiliser cette chaîne de requête si vous souhaitez utiliser un schéma d'authentification basé sur un jeton au lieu des valeurs `password` et `username`.  

**Note**  
 Les données du champ du mot de passe sont codées en base64 par. AWS IoT Core Votre fonction Lambda doit le décoder. 

 L'exemple suivant contient une chaîne `username` contenant des paramètres supplémentaires spécifiant un jeton et une signature.  

```
username?x-amz-customauthorizer-name=authorizer-name&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value
```

Pour appeler un autorisateur, les appareils qui se connectent à l'aide AWS IoT Core de MQTT et d'une authentification personnalisée doivent se connecter sur le port 443. Ils doivent également transmettre l'extension TLS ALPN (Application Layer Protocol Negotiation) avec une valeur égale à `mqtt` et l'extension SNI (Server Name Indication) avec le nom d'hôte de leur AWS IoT Core point de terminaison de données. Pour éviter des erreurs potentielles, la valeur de `x-amz-customauthorizer-signature` doit être codée en URL. Nous recommandons fortement que les valeurs de `x-amz-customauthorizer-name` et `token-key-name` soient codées en URL. Pour plus d'informations sur ces valeurs, consultez [Protocoles de communication des appareils](protocols.md). Le [AWS IoT Appareil SDKs, appareil mobile SDKs et client AWS IoT d'appareil](iot-sdks.md) V2 peut configurer ces deux extensions. 

## MQTT terminé WebSockets
<a name="custom-auth-websockets"></a>

 Les appareils qui se connectent à AWS IoT Core l'aide de MQTT over WebSockets peuvent transmettre des informations d'identification de l'une des deux manières suivantes. 
+ Via les en-têtes de requête ou les paramètres de requête contenus dans la demande HTTP UPGRADE pour établir la WebSockets connexion.
+ Via les champs `username` et `password` dans le message MQTT CONNECT.

 Si vous transmettez les informations d'identification via le message de connexion MQTT, les extensions ALPN et SNI TLS sont requises. Pour plus d'informations sur ces extensions, consultez [MQTT](#custom-auth-mqtt). L'exemple suivant montre comment transmettre les informations d'identification via la demande de mise à niveau HTTP. 

```
GET /mqtt HTTP/1.1
Host: your-endpoint 
Upgrade: WebSocket 
Connection: Upgrade 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
sec-WebSocket-Key: any random base64 value 
sec-websocket-protocol: mqtt 
sec-WebSocket-Version: websocket version
```

## Signer le jeton
<a name="custom-auth-token-signature"></a>

Vous devez signer le jeton avec la clé privée de la paire de clés publique-privée que vous avez utilisée lors de l'appel `create-authorizer`. Les exemples suivants montrent comment créer la signature du jeton à l'aide d'une commande de type Unix et. JavaScript Ils utilisent l'algorithme de hachage SHA-256 pour coder la signature.

------
#### [ Command line ]

```
echo -n TOKEN_VALUE | openssl dgst -sha256 -sign PEM encoded RSA private key | openssl base64
```

------
#### [ JavaScript ]

```
const crypto = require('crypto')

const key = "PEM encoded RSA private key"

const k = crypto.createPrivateKey(key)
let sign = crypto.createSign('SHA256')
sign.write(t)
sign.end()
const s = sign.sign(k, 'base64')
```

------

# Dépannage de vos mécanismes d'autorisation
<a name="custom-auth-troubleshooting"></a>

 Cette rubrique passe en revue les problèmes courants des flux de travail d'authentification personnalisés et les étapes pour les résoudre. Pour résoudre les problèmes le plus efficacement possible, activez les CloudWatch journaux pour DEBUG AWS IoT Core et définissez le niveau de journalisation sur **DEBUG**. Vous pouvez activer CloudWatch les journaux dans la AWS IoT Core console ([https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/)). Pour plus d'informations sur l'activation et la configuration des journaux pour AWS IoT Core, consultez [Configuration de la AWS IoT journalisation](configure-logging.md). 

**Note**  
Si vous laissez le niveau de journalisation au niveau **DEBUG** pendant de longues périodes, vous CloudWatch risquez de stocker de grandes quantités de données de journalisation. Cela peut augmenter vos CloudWatch frais. Envisagez d'utiliser la journalisation basée sur les ressources pour augmenter la verbosité uniquement pour les appareils d'un groupe d'objets particulier. Pour plus d'informations sur la journalisation basée sur les ressources, consultez [Configuration de la AWS IoT journalisation](configure-logging.md). De plus, une fois le dépannage terminé, réduisez le niveau du journal à un niveau moins détaillé.

Avant de commencer le dépannage, consultez [Comprendre le flux de travail d'authentification personnalisé](custom-authorizer.md) pour un aperçu général du processus d'authentification personnalisé. Cela vous aide à comprendre où chercher la source d’un problème.

Cette rubrique aborde les deux domaines suivants que vous devez étudier.
+ Problèmes liés à la fonction Lambda de votre mécanisme d'autorisation.
+ Problèmes liés à votre appareil.

## Recherchez les problèmes dans la fonction Lambda de votre mécanisme d'autorisation
<a name="custom-auth-troubleshooting-lambda"></a>

Effectuez les étapes suivantes pour vous assurer que les tentatives de connexion de vos appareils invoquent votre fonction Lambda.

1. Vérifiez quelle fonction Lambda est associée à votre mécanisme d'autorisation.

   Vous pouvez le faire en appelant l'[DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html)API ou en cliquant sur l'autorisateur souhaité dans la section **Secure** de la AWS IoT Core console.

1. Vérifiez les métriques d’invocation pour la fonction Lambda. Effectuez les étapes suivantes pour ce faire.

   1. Ouvrez la AWS Lambda console ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) et sélectionnez la fonction associée à votre autorisateur.

   1. Choisissez l’onglet **Surveiller** et affichez les métriques pour la période pertinente à votre problème.

1. Si vous ne voyez aucune invocation, vérifiez qu' AWS IoT Core elle est autorisée à appeler votre fonction Lambda. Si vous voyez des invocations, passez à l’étape suivante. Effectuez les étapes suivantes pour vérifier que votre fonction Lambda dispose des autorisations requises.

   1. Choisissez l'onglet **Autorisations** correspondant à votre fonction dans la AWS Lambda console.

   1. Recherchez la section **Stratégie basée sur les ressources** au bas de la page. Si votre fonction Lambda dispose des autorisations requises, la stratégie ressemble à l'exemple suivant.  
****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Id": "default",
        "Statement": [
          {
            "Sid": "Id123",
            "Effect": "Allow",
            "Principal": {
              "Service": "iot.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111111111111:function:FunctionName",
            "Condition": {
              "ArnLike": {
                "AWS:SourceArn": "arn:aws:iot:us-east-1:111111111111:authorizer/AuthorizerName"
              },
              "StringEquals": {
                "AWS:SourceAccount": "111111111111"
              }
            }
          }
        ]
      }
      ```

   1. Cette politique accorde l'`InvokeFunction`autorisation d'accéder à votre fonction au AWS IoT Core directeur. Si vous ne le voyez pas, vous devrez l'ajouter à l'aide de l'[AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)API. L'exemple suivant vous montre comment procéder en utilisant le AWS CLI.

      ```
      aws lambda add-permission --function-name FunctionName --principal iot.amazonaws.com --source-arn AuthorizerARn --statement-id Id-123 --action "lambda:InvokeFunction"
      ```

1. Si vous voyez des invocations, vérifiez qu’il n’y a pas d’erreurs. Une erreur peut indiquer que la fonction Lambda ne gère pas correctement l'événement de connexion qui AWS IoT Core lui est envoyé.

   Pour plus d'informations sur la gestion de l'événement dans votre fonction Lambda, consultez [Définir votre fonction Lambda](custom-auth-lambda.md). Vous pouvez utiliser la fonction de test de la AWS Lambda console ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) pour coder en dur les valeurs de test de la fonction afin de vous assurer que celle-ci gère correctement les événements.

1. Si vous voyez des invocations sans erreur, mais que vos appareils ne parviennent pas à se connecter (ou à publier, s'abonner et recevoir des messages), le problème peut être que la stratégie renvoyée par votre fonction Lambda n'accorde pas d'autorisations pour les actions que vos appareils effectuent. Effectuez les étapes suivantes pour déterminer si quelque chose ne va pas avec la stratégie renvoyée par la fonction.

   1. Utilisez une requête Amazon CloudWatch Logs Insights pour analyser les journaux sur une courte période afin de détecter les défaillances. L'exemple de requête suivant trie les événements par horodatage et recherche les échecs.

      ```
      display clientId, eventType, status, @timestamp | sort @timestamp desc | filter status = "Failure"    
      ```

   1. Mettez à jour votre fonction Lambda pour enregistrer les données auxquelles elle renvoie AWS IoT Core et l'événement qui déclenche la fonction. Vous pouvez utiliser ces journaux pour inspecter la stratégie créée par la fonction.

1. Si vous voyez des invocations sans erreur, mais que vos appareils ne parviennent pas à se connecter (ou à publier, s'abonner et recevoir des messages), une autre raison peut être que votre fonction Lambda a dépassé le délai d'attente. Le délai d'expiration de la fonction Lambda pour le mécanisme d'autorisation personnalisé est de 5 secondes. Vous pouvez vérifier la durée de la fonction dans CloudWatch les journaux ou les métriques. 

## Enquête sur les problèmes liés aux appareils
<a name="custom-auth-troubleshooting-investigate"></a>

Si vous ne rencontrez aucun problème lors de l’invocation de votre fonction Lambda ou avec la stratégie renvoyée par la fonction, recherchez les problèmes liés aux tentatives de connexion de vos appareils. Les demandes de connexion mal formées peuvent empêcher AWS IoT Core le déclenchement de votre autorisateur. Des problèmes de connexion peuvent survenir à la fois au niveau des couches TLS et application.

**Problèmes possibles avec la couche TLS :**
+ Les clients doivent transmettre soit un en-tête de nom d'hôte (HTTP, MQTT par-dessus WebSockets), soit l'extension TLS avec indication du nom du serveur (HTTP, MQTT over WebSockets, MQTT) dans toutes les demandes d'authentification personnalisées. Dans les deux cas, la valeur transmise doit correspondre à l'un des points de terminaison de AWS IoT Core données de votre compte. Il s'agit des points de terminaison renvoyés lorsque vous exécutez les commandes CLI suivantes.
  + `aws iot describe-endpoint --endpoint-type iot:Data-ATS`
  + `aws iot describe-endpoint --endpoint-type iot:Data`(pour les VeriSign terminaux existants)
+ Les appareils qui utilisent l’authentification personnalisée pour les connexions MQTT doivent également transmettre l’extension TLS Application Layer Protocol Négociation (ALPN) avec une valeur de `mqtt`.
+ L'authentification personnalisée est actuellement disponible uniquement sur le port 443.

**Problèmes possibles au niveau de la couche application :**
+ Si la signature est activée (le champ `signingDisabled` est faux dans votre mécanisme d'autorisation), recherchez les problèmes de signature suivants.
  + Assurez-vous de transmettre la signature du jeton dans l'en-tête `x-amz-customauthorizer-signature` ou dans un paramètre de chaîne de requête.
  + Assurez-vous que le service ne signe pas une valeur autre que le jeton.
  + Assurez-vous de transmettre le jeton dans le paramètre d'en-tête ou de requête que vous avez spécifié dans le champ `token-key-name` de votre mécanisme d'autorisation.
+ Assurez-vous que le nom du mécanisme d'autorisation que vous transmettez dans le paramètre d'en-tête `x-amz-customauthorizer-name` ou de chaîne de requête est valide ou qu'un mécanisme d'autorisation par défaut est défini pour votre compte.

# 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"
        }
    ]
}
```

# Protection des données dans AWS IoT Core
<a name="data-protection"></a>

Le [modèle de responsabilité AWS partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) de s'applique à la protection des données dans AWS IoT Core. Comme décrit dans ce modèle, AWS est chargé de protéger l'infrastructure mondiale qui gère tous les AWS Cloud. La gestion du contrôle de votre contenu hébergé sur cette infrastructure relève de votre responsabilité. Vous êtes également responsable des tâches de configuration et de gestion de la sécurité des Services AWS que vous utilisez. Pour plus d’informations sur la confidentialité des données, consultez [Questions fréquentes (FAQ) sur la confidentialité des données](https://aws.amazon.com/compliance/data-privacy-faq/). Pour en savoir plus sur la protection des données en Europe, consultez le billet de blog [Modèle de responsabilité partagée d’AWS et RGPD (Règlement général sur la protection des données)](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) sur le *Blog de sécuritéAWS *.

À des fins de protection des données, nous vous recommandons de protéger les Compte AWS informations d'identification et de configurer les utilisateurs individuels avec AWS IAM Identity Center ou Gestion des identités et des accès AWS (IAM). Ainsi, chaque utilisateur se voit attribuer uniquement les autorisations nécessaires pour exécuter ses tâches. Nous vous recommandons également de sécuriser vos données comme indiqué ci-dessous :
+ Utilisez l’authentification multifactorielle (MFA) avec chaque compte.
+  SSL/TLS À utiliser pour communiquer avec AWS les ressources. Nous exigeons TLS 1.2 et recommandons TLS 1.3.
+ Configurez l'API et la journalisation de l'activité des utilisateurs avec AWS CloudTrail. Pour plus d'informations sur l'utilisation des CloudTrail sentiers pour capturer AWS des activités, consultez la section [Utilisation des CloudTrail sentiers](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) dans le *guide de AWS CloudTrail l'utilisateur*.
+ Utilisez des solutions de AWS chiffrement, ainsi que tous les contrôles de sécurité par défaut qu'ils contiennent Services AWS.
+ Utilisez des services de sécurité gérés avancés tels qu’Amazon Macie, qui contribuent à la découverte et à la sécurisation des données sensibles stockées dans Amazon S3.
+ Si vous avez besoin de modules cryptographiques validés par la norme FIPS 140-3 pour accéder AWS via une interface de ligne de commande ou une API, utilisez un point de terminaison FIPS. Pour plus d’informations sur les points de terminaison FIPS disponibles, consultez [Norme FIPS (Federal Information Processing Standard) 140-3](https://aws.amazon.com/compliance/fips/).

Nous vous recommandons fortement de ne jamais placer d’informations confidentielles ou sensibles, telles que les adresses e-mail de vos clients, dans des balises ou des champs de texte libre tels que le champ **Nom**. Cela inclut lorsque vous travaillez avec AWS IoT ou d'autres Services AWS utilisateurs de la console, de l'API ou AWS SDKs. AWS CLI Toutes les données que vous entrez dans des balises ou des champs de texte de forme libre utilisés pour les noms peuvent être utilisées à des fins de facturation ou dans les journaux de diagnostic. Si vous fournissez une adresse URL à un serveur externe, nous vous recommandons fortement de ne pas inclure d’informations d’identification dans l’adresse URL permettant de valider votre demande adressée à ce serveur.

Pour en savoir plus sur la protection des données, consultez le billet de blog [Modèle de responsabilité partagée AWS et RGPD](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) sur le *Blog sur la sécurité d’AWS *.

AWS IoT les appareils collectent des données, les manipulent, puis les envoient à un autre service Web. Vous pouvez choisir de stocker certaines données sur votre appareil pendant une courte durée. Il vous incombe d'assurer la protection de ces données au repos. Lorsque votre appareil envoie des données à AWS IoT, il le fait via une connexion TLS, comme indiqué plus loin dans cette section. AWS IoT les appareils peuvent envoyer des données à n'importe quel AWS service. Pour plus d'informations sur la sécurité des données de chaque service, consultez la documentation de ce service. AWS IoT peut être configuré pour écrire des journaux dans les CloudWatch journaux et enregistrer les appels d' AWS IoT API dans AWS CloudTrail. Pour plus d'informations sur la sécurité des données pour ces services, consultez [Authentification et contrôle d'accès pour Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) et [Chiffrement des fichiers CloudTrail journaux avec des clés AWS KMS gérées](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/encrypting-cloudtrail-log-files-with-aws-kms.html).

## Chiffrement des données dans AWS IoT
<a name="data-protection-encrypt"></a>

Par défaut, toutes les AWS IoT données en transit et au repos sont cryptées. [Les données en transit sont chiffrées à l'aide du protocole TLS](transport-security.md), tandis que les données au repos sont chiffrées à l'aide de clés AWS détenues. AWS IoT prend en charge la gestion par le client AWS KMS keys (clés KMS) à partir du service de gestion des AWS clés (AWS KMS). Toutefois, Device Advisor et AWS IoT Wireless utilisent uniquement un Clé détenue par AWS pour chiffrer les données des clients.

 

# Sûreté des transports dans AWS IoT Core
<a name="transport-security"></a>

TLS (Transport Layer Security) est un protocole cryptographique conçu pour sécuriser les communications sur un réseau informatique. La passerelle pour AWS IoT Core appareils oblige les clients à chiffrer toutes les communications pendant le transport en utilisant le protocole TLS pour les connexions entre les appareils et la passerelle. Le protocole TLS est utilisé pour garantir la confidentialité des protocoles d'application (MQTT, HTTP et WebSocket) pris en charge par. AWS IoT Core La prise en charge de TLS est disponible dans un certain nombre de langages de programmation et de systèmes d'exploitation. Les données AWS qu'elles contiennent sont cryptées par le AWS service spécifique. Pour plus d'informations sur le chiffrement des données sur d'autres AWS services, consultez la documentation de sécurité de ce service.

**Topics**
+ [Protocoles TLS](#tls-ssl-policy)
+ [Stratégies de sécurité](#tls-policy-table)
+ [Remarques importantes pour la sécurité des transports dans AWS IoT Core](#tls-ssl-core)
+ [Sécurité du transport pour les appareils sans fil LoRa WAN](#tls-lorawan)

## Protocoles TLS
<a name="tls-ssl-policy"></a>

AWS IoT Core prend en charge les versions suivantes du protocole TLS :
+ TLS 1.3 
+ TLS 1.2

Avec AWS IoT Core, vous pouvez configurer les paramètres TLS (pour [TLS 1.2 et TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) [1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3)) dans les configurations de domaine. Pour de plus amples informations, veuillez consulter [Configuration des paramètres TLS dans les configurations de domaine](iot-endpoints-tls-config.md).

## Stratégies de sécurité
<a name="tls-policy-table"></a>

Une stratégie de sécurité est une combinaison de protocoles TLS et de leurs chiffrements qui déterminent quels protocoles et chiffrements sont pris en charge lors des négociations TLS entre un client et un serveur. Vous pouvez configurer vos appareils pour utiliser des politiques de sécurité prédéfinies en fonction de vos besoins. Notez que les politiques de sécurité personnalisées AWS IoT Core ne sont pas prises en charge.

Vous pouvez choisir l'une des politiques de sécurité prédéfinies pour vos appareils lorsque vous les connectez à AWS IoT Core. Les noms des politiques de sécurité prédéfinies les plus récentes AWS IoT Core incluent des informations de version basées sur l'année et le mois de leur publication. La stratégie de sécurité prédéfinie par défaut est `IoTSecurityPolicy_TLS13_1_2_2022_10`. Pour définir une politique de sécurité, vous pouvez utiliser la AWS IoT console ou le AWS CLI. Pour de plus amples informations, veuillez consulter [Configuration des paramètres TLS dans les configurations de domaine](iot-endpoints-tls-config.md).

Le tableau suivant décrit les politiques de sécurité prédéfinies les plus récentes que AWS IoT Core prend en charge. Le `IotSecurityPolicy_` a été supprimé des noms de stratégie dans la ligne d'en-tête afin qu'ils correspondent.


| **Politique de sécurité** | TLS13\$11\$13\$12022\$110 | TLS13\$11\$12\$12022\$110 | TLS12\$11\$12\$12022\$110 | TLS12\$11\$10\$12016\$101\$1 | TLS12\$11\$10\$12015\$101\$1 | 
| --- | --- | --- | --- | --- | --- | 
| Ports TCP |  443/8443/8883  |  443/8443/8883  |  443/8443/8883  | 443 | 8443/8883 | 443 | 8443/8883 | 
| Protocoles TLS | 
| TLS 1.2 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| TLS 1.3 | ✓ | ✓ |  |  |  |  |  | 
| Chiffrements TLS | 
| TLS\$1AES\$1128\$1GCM\$1 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1AES\$1256\$1GCM\$1 SHA384 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1 \$1 \$1 CHACHA20 POLY1305 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| ECDHE-RSA- -GCM- AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- - AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- -SHA AES128 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- -GCM- AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- - AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- -SHA AES256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-SHA256 |  | ✓ | ✓ | ✓ |  | ✓ | ✓ | 
| AES128-SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| DHE-RSA- -SHA AES256 |  |  |  |  |  | ✓ | ✓ | 
| ECDHE-ECDSA- -GCM- AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- - AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES128 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -GCM- AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- - AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 

**Note**  
`TLS12_1_0_2016_01`est uniquement disponible dans les pays suivants Régions AWS : ap-east-1, ap-northeast-2, ap-northeast-2, ap-south-1, ap-southeast-2, ca-central-1, cn-north-1, cn-northwest-1, eu-north-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-1, us-east-2, -1, -2, us-west-1. us-gov-west us-gov-west  
`TLS12_1_0_2015_01`n'est disponible que dans les versions suivantes Régions AWS : ap-northeast-1, ap-southeast-1, eu-central-1, eu-west-1, us-east-1, us-west-2.

## Remarques importantes pour la sécurité des transports dans AWS IoT Core
<a name="tls-ssl-core"></a>

Pour les appareils qui se connectent AWS IoT Core via [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html), le protocole TLS chiffre la connexion entre les appareils et le broker, et AWS IoT Core utilise l'authentification du client TLS pour identifier les appareils. Pour plus d’informations, consultez [Authentification client](https://docs.aws.amazon.com//iot/latest/developerguide/client-authentication.html). Pour les appareils qui se connectent AWS IoT Core via [HTTP](https://docs.aws.amazon.com//iot/latest/developerguide/http.html), le protocole TLS chiffre la connexion entre les appareils et le broker, et l'authentification est déléguée à AWS Signature Version 4. Pour plus d'informations, consultez [Signature des demandes avec Signature Version 4](https://docs.aws.amazon.com//general/latest/gr/create-signed-request.html) dans *AWS Référence Générale*.

Lorsque vous connectez des appareils à AWS IoT Core, l'envoi de l'[extension SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) n'est pas obligatoire mais fortement recommandé. Pour utiliser des fonctionnalités telles que l'[enregistrement multi-comptes](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert), les [domaines personnalisés](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html), les points de terminaison [VPC](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html) [et les politiques TLS configurées](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html), vous devez utiliser l'extension SNI et fournir l'adresse complète du point de terminaison dans le champ. `host_name` Le champ `host_name` doit contenir le point de terminaison que vous invoquez. Ce point de terminaison doit être l'un des éléments suivants :
+ L’adresse `endpointAddress` renvoyée par `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:Data-ATS`
+ L’adresse `domainName` renvoyée par `aws iot [describe-domain-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-domain-configuration.html) –-domain-configuration-name "domain_configuration_name"`

Les connexions tentées par des appareils dont la `host_name` valeur est incorrecte ou non valide échoueront. AWS IoT Core enregistrera les échecs CloudWatch pour le type d'authentification de l'[authentification personnalisée](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html).

AWS IoT Core ne prend pas en charge l'[extension SessionTicket TLS.](https://www.ietf.org/rfc/rfc5077.txt)

## Sécurité du transport pour les appareils sans fil LoRa WAN
<a name="tls-lorawan"></a>

LoRaLes appareils WAN suivent les pratiques de sécurité décrites dans [LoRaWAN™ SECURITY : A White Paper for the LoRa Alliance™ par Gemalto, Actility et Semtech](https://lora-alliance.org/sites/default/files/2019-05/lorawan_security_whitepaper.pdf). 

Pour plus d'informations sur la sécurité du transport avec les périphériques LoRa WAN, consultez la section [Données LoRa WAN et sécurité du transport](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-security.html).

# Chiffrement des données dans AWS IoT
<a name="data-encryption"></a>

La protection des données fait référence à la protection des données en transit (lors de leur trajet aller-retour AWS IoT Core) et au repos (lorsqu'elles sont stockées sur des appareils ou par d'autres AWS services). Toutes les données envoyées AWS IoT Core sont envoyées via une connexion TLS à l'aide de MQTT, HTTPS et des WebSocket protocoles, ce qui les rend sécurisées par défaut pendant le transit. AWS IoT Core collecte les données des appareils, puis les envoie à d'autres AWS services pour un traitement ultérieur. Pour plus d'informations sur le chiffrement des données dans d'autres services AWS , consultez la documentation relative à la sécurité du service concerné. Pour plus d'informations, consultez la section [Chiffrement des données au repos](encryption-at-rest.md).

FreeRTOS fournit une bibliothèque PKCS\$111 qui isole le stockage des clés, en accédant aux objets cryptographiques et en gérant les sessions. Il vous incombe d'utiliser cette bibliothèque pour chiffrer les données au repos sur vos appareils. Pour plus d’informations, consultez [la bibliothèque FreeRTOS Public Key Cryptography Standard (PKCS) \$111](https://docs.aws.amazon.com/freertos/latest/userguide/security-pkcs.html).

# Chiffrement des données au repos AWS IoT Core
<a name="encryption-at-rest"></a>

Par défaut, toutes les AWS IoT Core données au repos sont chiffrées à l'aide de clés AWS détenues. AWS IoT Core prend également en charge les clés symétriques gérées par le client à partir de AWS Key Management Service (AWS KMS). Avec les clés gérées par le client, vous pouvez créer, posséder et gérer les AWS KMS clés de votre AWS compte. AWS IoT Core utilisera vos clés KMS pour chiffrer vos données au repos. Vous avez le contrôle total de ces clés KMS, y compris la création et la gestion de leurs politiques clés. Vous pouvez également configurer des politiques IAM pour les rôles qui accèdent AWS KMS afin de contrôler les autorisations associées à ces clés.

## AWS clés possédées
<a name="aws-owned-keys"></a>

AWS les clés détenues sont un ensemble de clés KMS qu'un AWS service possède et gère pour une utilisation dans plusieurs AWS comptes. AWS les services peuvent utiliser des clés AWS détenues pour protéger vos données. Par défaut, AWS IoT Core chiffre les données au repos à l'aide de clés AWS détenues. Ces clés sont gérées par le service. Vous ne pouvez pas afficher, gérer ou utiliser les clés que vous AWS possédez. Cependant, vous n'avez aucune action à effectuer pour protéger ces clés.

Pour plus d'informations sur les clés AWS détenues, consultez la section [clés AWS détenues](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key) dans le *Guide du AWS Key Management Service développeur*.

## Clés gérées par le client
<a name="customer-managed-keys"></a>

Les clés gérées par le client sont des clés KMS de votre AWS compte que vous créez, détenez et gérez. Vous avez le contrôle total de ces AWS KMS clés, y compris la création et la gestion de leurs politiques clés. Vous pouvez également configurer des politiques IAM pour les rôles qui accèdent AWS KMS afin de contrôler les autorisations associées à ces clés. Vous pouvez configurer AWS IoT Core l'utilisation de clés KMS gérées par le client pour chiffrer vos données.

Pour plus d’informations sur les clés gérées par le client, consultez [Clés gérées par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) dans le *Guide du développeur AWS Key Management Service *.

Pour activer la gestion des clés par le client AWS IoT Core, procédez comme suit :

**Topics**
+ [Étape 1 : Créer une clé gérée par le client](#encryption-at-rest-cmk-create)
+ [Étape 2 : créer un rôle IAM pour accorder des AWS IoT Core autorisations d'utilisation de la clé KMS](#create-an-iam-role)
+ [Étape 3 : activer l'option de gestion des clés par le client AWS IoT Core](#opt-in-customer-managed-keys)
+ [Étape 4 : Autorisations supplémentaires requises pour les opérations AWS IoT Core du plan de contrôle](#cmk-control-plane-permissions)
+ [Étape 5 : Gestion des clés](#understanding-key-health)
+ [Étape 6 : Surveillance de l'état de santé des clés](#health-status-monitoring)

### Étape 1 : Créer une clé gérée par le client
<a name="encryption-at-rest-cmk-create"></a>

Vous pouvez créer une clé symétrique gérée par le client à l'aide de la AWS KMS console ou des commandes de la AWS KMS CLI. Le `keySpec` must `SYMMETRIC_DEFAULT` et le `keyUsage` must be`ENCRYPT_DECRYPT`.

**Note**  
AWS IoT Core ne prend en charge que AWS KMS les `SYMMETRIC_DEFAULT` clés dotées de spécifications et d'utilisation des `ENCRYPT_DECRYPT` clés pour les clés gérées par le client.

Voici un exemple de AWS CLI commande pour créer une clé KMS qui peut être utilisée AWS IoT Core pour les clés gérées par le client.

```
aws kms create-key --key-spec SYMMETRIC_DEFAULT --key-usage ENCRYPT_DECRYPT --region us-west-2
```

Voici un exemple de sortie de la commande.

```
{
    "KeyMetadata": {
        "AWSAccountId": "111122223333",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "CreationDate": "2024-09-19T11:45:23.982000-07:00",
        "Enabled": true,
        "Description": "",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion": false
    }
}
```

Pour plus d'informations, consultez la section [Création d'une clé symétrique gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) dans le *Guide du AWS Key Management Service développeur*.

#### Stratégie de clé
<a name="key-policy"></a>

Lorsque vous créez une clé gérée par le client, vous pouvez définir une politique clé. Les stratégies de clés contrôlent l’accès à votre clé gérée par le client. Chaque clé gérée par le client doit avoir exactement une stratégie de clé, qui contient des instructions qui déterminent les personnes pouvant utiliser la clé et comment elles peuvent l’utiliser. Pour plus d'informations, consultez [la section Politiques clés](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) du *Guide du AWS Key Management Service développeur*.

AWS IoT Core utilise un rôle IAM dans votre compte pour accéder à votre clé gérée par le client. Si vous utilisez une politique de clé personnalisée, assurez-vous que le rôle IAM créé sur cette clé possède les autorisations suivantes :
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

### Étape 2 : créer un rôle IAM pour accorder des AWS IoT Core autorisations d'utilisation de la clé KMS
<a name="create-an-iam-role"></a>

 AWS IoT Core Pour utiliser la clé KMS que vous avez créée pour chiffrer vos données au repos, vous devez également créer un rôle IAM dans votre compte, qui AWS IoT Core peut supposer accéder à la clé KMS.

Le rôle doit avoir la politique de confiance suivante pour AWS IoT Core pouvoir assumer le rôle.

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

Assurez-vous que les politiques IAM associées au rôle IAM disposent des autorisations suivantes sur la clé KMS :
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

Voici un exemple de politique IAM avec les autorisations requises pour les clés gérées par le client.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIoTToAccessKMSResource",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": [
                "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws-crypto-ec:vendor": "iot.amazonaws.com"
                }
            }
        }
    ]
}
```

Pour plus d'informations, consultez la section [Créer 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) dans le *Guide de l'Gestion des identités et des accès AWS utilisateur*.

### Étape 3 : activer l'option de gestion des clés par le client AWS IoT Core
<a name="opt-in-customer-managed-keys"></a>

Après avoir effectué toutes les étapes précédentes, exécutez la commande `update-encryption-configuration` CLI pour vous inscrire à l'aide des clés gérées par le client AWS IoT Core. Lorsque vous optez pour les clés gérées par le client, toutes les AWS IoT Core ressources de votre AWS compte sont cryptées à l'aide de la AWS KMS clé spécifiée.

1. Pour activer l' AWS IoT Core utilisation des clés gérées par le client AWS CLI, exécutez la commande `update-encryption-configuration` CLI.

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" --region us-west-2
   ```

1. Pour vérifier que les clés gérées par le client AWS IoT Core sont AWS CLI utilisées, exécutez la commande `describe-encryption-configuration` CLI :

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

   Si vous avez activé les clés gérées par le client dans AWS IoT Core, le résultat peut ressembler à ce qui suit :

   ```
   {
       "encryptionType": "CUSTOMER_MANAGED_KMS_KEY",
       "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
       "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
       "configurationDetails": {
           "configurationStatus": "HEALTHY"
       },
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

   Le `lastModifiedDate` champ indique la date à laquelle la configuration de chiffrement a été mise à jour pour la dernière fois.

   Si vous n'avez pas activé les clés gérées par le client, le résultat peut ressembler à ce qui suit :

   ```
   {
       "encryptionType": "AWS_OWNED_KMS_KEY",
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

### Étape 4 : Autorisations supplémentaires requises pour les opérations AWS IoT Core du plan de contrôle
<a name="cmk-control-plane-permissions"></a>

Une fois que vous avez opté pour les clés gérées par le client, toutes les AWS IoT Core ressources appartenant à votre AWS compte sont cryptées à l'aide de la clé KMS fournie. Toutes les opérations du plan de contrôle nécessitent désormais que l'appelant dispose d'`kms:Decrypt`autorisations sur la clé KMS en plus des autorisations requises pour l'opération spécifique sur la AWS IoT Core ressource. Si l'appelant n'est pas `kms:Decrypt` autorisé et qu'il effectue un appel d'API nécessitant le chiffrement ou le déchiffrement de données (par exemple,`GetPolicy`), il recevra un. `UnauthorizedException`

Par exemple, lorsque vous appelez`GetPolicy`, vous avez besoin des deux `kms:Decrypt` autorisations `iot:GetPolicy` et des autorisations sur votre clé KMS gérée par le client pour que l'appel d'API réussisse.

**Note**  
Lorsque vous mettez à jour des utilisateurs ou des rôles IAM pour accorder AWS KMS des autorisations sur la clé utilisée pour votre configuration de chiffrement, assurez-vous que la politique de clé KMS accorde également les autorisations requises aux utilisateurs ou rôles IAM respectifs.

#### AWS KMS autorisations pour `UpdateEncryptionConfiguration`
<a name="kms-permissions-update-encryption-configuration"></a>

L'appel d'`UpdateEncryptionConfiguration`API nécessite les AWS KMS autorisations suivantes sur la clé KMS pour pouvoir opter pour les clés gérées par le client ou pour modifier la configuration de la clé :
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

#### AWS KMS autorisations pour tous les autres plans de contrôle APIs
<a name="kms-permissions-control-plane-apis"></a>

La plupart des plans de contrôle APIs nécessitent `kms:Decrypt` des autorisations lorsque les clés gérées par le client sont activées. Toutefois, certains APIs ne nécessitent pas les autorisations supplémentaires suivantes :

APIs qui ne nécessitent pas d' AWS KMS autorisations  
La `List*` terre `Delete*` APIs ne tombe pas dans ce seau. Les clients peuvent toujours invoquer n'importe quelle API `List*` ou une API du plan de `Delete*` contrôle et ces appels d'API seront couronnés de succès même si l'appelant n'en a pas `kms:Decrypt` l'autorisation. Ces appels d'API seront couronnés de succès même si votre clé gérée par le client n'est pas saine `List*` et `Delete*` APIs ne permet aucun déchiffrement.  
+ **Liste\$1 APIs** — Toutes les opérations de listage (par exemple, `ListThings``ListPolicies`,`ListCertificates`)
+ **Supprimer\$1 APIs** : toutes les opérations de suppression (par exemple,`DeleteThing`,`DeletePolicy`) `DeleteCertificate`

### Étape 5 : Gestion des clés
<a name="understanding-key-health"></a>

AWS IoT Core effectue des contrôles périodiques sur la configuration des clés gérées par le client pour s'assurer que les opérations de chiffrement et de déchiffrement ne sont pas affectées. Ces contrôles de santé sont exécutés une fois par minute et vérifient AWS IoT Core la capacité à accéder et à utiliser à la fois la AWS KMS clé et le rôle IAM associé pour les opérations de chiffrement et de déchiffrement.

SAIN  
AWS IoT Core peut accéder avec succès à la AWS KMS clé via le rôle IAM spécifié et effectuer des encryption/decryption opérations. Tous les composants fonctionnent correctement.

NON SAIN  
AWS IoT Core Impossible d'accéder à la AWS KMS clé ou de l'utiliser. Cela empêche de nouvelles opérations de chiffrement et peut avoir un impact sur le fonctionnement du service. Le `errorCode` champ indique si le problème est lié à la clé ou au rôle IAM.

#### Actions des clients susceptibles d'avoir un impact sur la santé des personnes clés
<a name="customer-actions-affecting-health"></a>

Plusieurs actions du client peuvent faire passer l'état de santé des clés `HEALTHY` à `UNHEALTHY` :

Actions liées aux clés  
+ **Supprimer une AWS KMS clé** : lorsque vous planifiez la suppression d'une clé, son `Pending deletion` statut est défini et ne peut pas être utilisée
+ **Désactivation d'une AWS KMS clé** — Lorsque vous désactivez une clé KMS, elle ne peut plus être utilisée pour les opérations de chiffrement/déchiffrement
+ **Clé de planification pour la suppression** — La clé devient inutilisable une fois la suppression terminée
+ **Modification de la politique clé** — Suppression des autorisations d' AWS IoT Core accès nécessaires
+ **Modification des autorisations d'utilisation des clés** — Restreindre les AWS KMS actions requises

Actions liées au rôle de l'IAM  
+ **Suppression du rôle IAM** : AWS IoT Core impossible d'assumer le rôle permettant d'accéder à la clé
+ **Modification des autorisations de rôle** — Suppression AWS KMS des autorisations requises de la politique de rôle
+ **Modification de la politique de confiance** — Empêcher le AWS IoT Core service d'assumer le rôle
+ **Ajout de conditions restrictives** : conditions qui AWS IoT Core empêchent l'utilisation du rôle

Actions au niveau du compte  
+ **Modifications relatives à l'accès aux clés entre comptes** — Modification des autorisations relatives aux clés dans différents comptes
+ **Politiques de contrôle des services (SCPs) : politiques** au niveau de l'organisation qui limitent l'accès AWS KMS 
+ Politiques **IAM au niveau du compte : politiques qui remplacent ou entrent en conflit** avec les clés d'accès

**Important**  
Toute modification apportée aux AWS KMS clés, aux rôles IAM ou aux politiques utilisés par AWS IoT Core doit d'abord être testée dans les environnements de développement. Surveillez attentivement l'état de santé des clés après avoir apporté des modifications afin de vous assurer que AWS IoT Core les fonctionnalités ne sont pas affectées.

#### Mettre à jour la configuration de chiffrement
<a name="key-transition"></a>

Mettez à jour votre configuration de chiffrement AWS IoT Core pour passer d'une clé gérée par le client à une autre, ou entre des clés AWS détenues et des clés gérées par le client.

Pour modifier la configuration en utilisant une autre clé gérée par le client :

1. Créez une nouvelle clé gérée par le client en suivant les étapes décrites dans[Étape 1 : Créer une clé gérée par le client](#encryption-at-rest-cmk-create).

1. Mettez à jour votre politique de rôle IAM afin d'inclure des autorisations pour les anciennes et les nouvelles clés pendant la période de mise à jour.

1. Mettez à jour votre configuration de chiffrement pour utiliser la nouvelle clé :

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/new-key-id"
   ```

Pour modifier la configuration des clés gérées par le client à des clés AWS détenues, procédez comme suit :

```
aws iot update-encryption-configuration --encryption-type "AWS_OWNED_KMS_KEY"
```

**Note**  
Lorsque vous mettez à jour la configuration de chiffrement pour les nouvelles clés gérées par le client, assurez-vous que les anciennes et les nouvelles clés restent accessibles pour que l'opération réussisse.

##### Scénarios de défaillance courants et impacts
<a name="failure-scenarios"></a>

Le tableau suivant décrit les scénarios d'échec courants lorsque des clés sont supprimées ou désactivées :


| Scénario | Impact immédiat | Conséquences à long terme | 
| --- | --- | --- | 
|  Clé désactivée  |  Toutes les nouvelles encryption/decryption opérations échouent immédiatement  |  Interruption du service jusqu'à ce que la clé soit réactivée ou remplacée  | 
|  Clé dont la suppression est prévue  |  L'état de la clé passe à En attente de suppression et toutes les encryption/decryption opérations échoueront  |  Défaillance automatique du service lorsque la suppression est terminée  | 
|  Clé définitivement supprimée  |  Défaillance immédiate et permanente de toutes les opérations  |  Perte de données permanente et impossibilité de récupérer des données chiffrées  | 
|  Politique clé modifiée de manière incorrecte  |  AWS IoT Core perd les autorisations d'accès à la clé  |  Défaillances de service jusqu'à ce que la politique soit corrigée  | 
|  Rôle IAM supprimé  |  AWS IoT Core ne peut pas assumer le rôle de clé d'accès  |  Défaillance complète du service de chiffrement  | 
|  Le rôle IAM n'est pas correctement modifié  |  AWS IoT Core Impossible d'assumer le rôle ou d'utiliser le rôle pour accéder à la clé  |   Défaillances de service jusqu'à ce que le rôle IAM soit corrigé  | 

##### Prévention et meilleures pratiques
<a name="prevention-best-practices"></a>

Pour éviter la suppression ou la désactivation accidentelle des clés et minimiser le risque de pannes de service :

Mettre en œuvre des politiques de cycle de vie  
Établissez des procédures claires pour la création, la rotation et le retrait des clés. Documentez quelles clés sont utilisées par quelles AWS IoT Core ressources et maintenez un inventaire des clés actives.

Utiliser les politiques IAM pour limiter la suppression de clés  
Créez des politiques IAM qui empêchent les utilisateurs non autorisés de supprimer ou de désactiver des clés de chiffrement critiques. Utilisez des conditions pour exiger une approbation supplémentaire pour les opérations de suppression de clés.

Activer la CloudTrail journalisation  
Surveillez toutes les opérations AWS KMS clés CloudTrail pour détecter les activités de gestion des clés non autorisées ou accidentelles. Configurez des alertes pour la suppression de clés, la désactivation ou les modifications de politique.

Tester les procédures de remplacement des clés  
Testez régulièrement vos procédures de remplacement de clés dans des environnements non liés à la production afin de vous assurer de pouvoir récupérer rapidement après une défaillance liée aux clés.

Maintenir les sauvegardes clés  
Bien que vous ne puissiez pas exporter de matériel AWS KMS clé, conservez des enregistrements détaillés des clés ARNs, des politiques et des AWS IoT Core configurations associées afin de faciliter le remplacement rapide des clés si nécessaire.

Surveillez l'état des clés  
Surveillez en permanence l'`CMK.Health`indicateur et configurez des alertes automatisées pour les principaux changements d'état de santé. Mettez en œuvre des réponses automatisées pour résoudre rapidement les problèmes clés.

**Important**  
Testez toujours les principales procédures de mise à jour dans les environnements de développement avant de les implémenter en production. Disposez d'un plan de réduction documenté et assurez-vous que les principales procédures de remplacement peuvent être exécutées rapidement en cas d'urgence.

### Étape 6 : Surveillance de l'état de santé des clés
<a name="health-status-monitoring"></a>

Dans le cadre des contrôles AWS IoT Core périodiques, des CloudWatch métriques et des journaux sont émis pour fournir une visibilité sur l'état de santé de votre configuration de clés gérée par le client.

AWS IoT Core émet la `CMK.Health` métrique CloudWatch au moins une fois par minute. La métrique fournit des informations sur l'état de santé des clés gérées par le client utilisées AWS IoT Core pour chiffrer et déchiffrer vos données.

La `CMK.Health` métrique peut prendre les valeurs suivantes :
+ La valeur est la `1` suivante : AWS IoT Core est capable d'utiliser les clés de chiffrement avec succès pour chiffrer et déchiffrer vos données.
+ La valeur est la `0` suivante : AWS IoT Core impossible d'utiliser les clés de chiffrement pour chiffrer et déchiffrer vos données.

AWS IoT Core émet également des journaux AWS IoT V2 lorsque l'état de santé des clés de chiffrement change. Ces journaux fournissent des informations supplémentaires sur la mise à jour de l'état de santé. Pour consulter ces journaux, vous devez activer les journaux AWS IoT V2. Les `HEALTHY` journaux sont émis au `INFO` niveau et les `UNHEALTHY` journaux sont émis au `ERROR` niveau. Pour plus d'informations sur les niveaux de journalisation, voir [Niveaux de journalisation](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level).

Les exemples suivants sont des entrées de CloudWatch journal émises par AWS IoT Core pour indiquer la mise à jour de l'état de santé des clés gérées par le client.

Pour surveiller et réagir efficacement aux principaux changements de l'état de santé :

1. **Configurez CloudWatch des alarmes** pour la `CMK.Health` métrique :

   ```
   aws cloudwatch put-metric-alarm --region us-west-2 \
     --alarm-name "IoTCore-CMK-Health-Alert" \
     --alarm-description "Alert when IoT Core CMK health is unhealthy" \
     --metric-name "CMK.Health" \
     --namespace "AWS/IoT" \
     --statistic "Minimum" \
     --period 300 \
     --evaluation-periods 1 \
     --threshold 1 \
     --comparison-operator "LessThanThreshold" \
     --alarm-actions "arn:aws:sns:us-west-2:111122223333:iot-alerts"
   ```

1. **Activez la journalisation AWS IoT V2** pour capturer les événements de modification de l'état de santé détaillés avec des codes d'erreur et des messages.

1. **Vérifiez l'état de la configuration** pour le dépannage :

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

1. **Vérifiez le statut INSALUBRE** en examinant le `errorCode` champ :
   + `KMS_KEY_VALIDATION_ERROR`— Problème avec la AWS KMS clé (désactivée, supprimée ou problèmes de politique)
   + `ROLE_VALIDATION_ERROR`— Problème lié au rôle IAM (suppression, problèmes de politique ou problèmes de confiance)

#### De MALSAIN à SAIN
<a name="unhealthy-to-healthy"></a>

Lorsque l'état des clés de chiffrement est mis à jour de `UNHEALTHY` à`HEALTHY`, AWS IoT Core un message de journal AWS IoT V2 est émis au format suivant.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "SUCCESS",
    "cmkStatus": "HEALTHY",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

#### Du sain au malsain
<a name="healthy-to-unhealthy"></a>

Lorsque l'état des clés de chiffrement est mis à jour de `HEALTHY` à`UNHEALTHY`, AWS IoT Core un message de journal AWS IoT V2 est émis au format suivant.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "ERROR",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "FAILURE",
    "cmkStatus": "UNHEALTHY",
    "errorCode": "KMS_KEY_VALIDATION_ERROR / ROLE_VALIDATION_ERROR",
    "errorMessage": "Error message on why there was a failure",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

**Avertissement**  
Lorsque l'état de santé des clés est `UNHEALTHY` atteint, AWS IoT Core les opérations échouent immédiatement. Dans ce cas, passez en revue vos principales configurations, vos autorisations de rôle IAM et vos politiques. Surveillez les changements de statut de la `CMK.Health` métrique. Si les opérations continuent d'échouer après avoir passé en revue vos configurations, contactez votre responsable de compte ou le [AWS Support Center](https://console.aws.amazon.com/support/home#/) pour obtenir une assistance supplémentaire.

#### AWS CloudTrail événements
<a name="aws-cloudtrail-events"></a>

Vous pouvez également surveiller AWS IoT Core l'utilisation de la clé KMS pour les opérations de chiffrement et de déchiffrement. AWS IoT Core effectuera `DescribeKey` des `Decrypt` `GenerateDataKeyWithoutPlaintext` opérations sur votre clé KMS pour crypter/déchiffrer les données appartenant à votre AWS compte stockées au repos. `ReEncrypt`

Il existe CloudTrail des événements pour `DescribeKey``Decrypt`,`ReEncrypt`, et`GenerateDataKeyWithoutPlaintext`. Ces événements surveillent AWS KMS les opérations appelées AWS IoT Core pour accéder aux données chiffrées par votre clé gérée par le client.

##### Exemple de `Decrypt`
<a name="decrypt"></a>

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "*********************",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "*****"
            },
            "attributes": {
                "creationDate": "2024-09-16T20:23:39Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "iot.amazonaws.com"
    },
    "eventTime": "2024-09-16T20:32:48Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "iot.amazonaws.com",
    "userAgent": "iot.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "aws-crypto-ec:vendor": "iot.amazonaws.com",
            "branch-key-id": "111122223333",
            "type": "branch:ACTIVE"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    },
    "responseElements": null,
    "requestID": "1afb6d98-8388-455d-8b48-e62c9e0cf7f4",
    "eventID": "b59a5f16-0d98-46d8-a590-0e040a48b39b",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

# Gestion des identités et des accès pour AWS IoT
<a name="security-iam"></a>

Gestion des identités et des accès AWS (IAM) est un outil Service AWS qui permet à un administrateur de contrôler en toute sécurité l'accès aux AWS ressources. Les administrateurs IAM contrôlent qui peut être *authentifié* (connecté) et *autorisé (autorisé*) à utiliser AWS IoT les ressources. IAM est un Service AWS outil que vous pouvez utiliser sans frais supplémentaires.

**Topics**
+ [Public ciblé](#security_iam_audience)
+ [Authentification avec des identités IAM](#security_iam_authentication)
+ [Gestion de l’accès à l’aide de politiques](#security_iam_access-manage)
+ [Comment AWS IoT fonctionne avec IAM](security_iam_service-with-iam.md)
+ [AWS IoT exemples de politiques basées sur l'identité](security_iam_id-based-policy-examples.md)
+ [AWS politiques gérées pour AWS IoT](security-iam-awsmanpol.md)
+ [Résolution des problèmes AWS IoT d'identité et d'accès](security_iam_troubleshoot.md)

## Public ciblé
<a name="security_iam_audience"></a>

La façon dont vous utilisez Gestion des identités et des accès AWS (IAM) varie en fonction de votre rôle :
+ **Utilisateur du service** : demandez des autorisations à votre administrateur si vous ne pouvez pas accéder aux fonctionnalités (voir [Résolution des problèmes AWS IoT d'identité et d'accès](security_iam_troubleshoot.md))
+ **Administrateur du service** : déterminez l’accès des utilisateurs et soumettez les demandes d’autorisation (voir [Comment AWS IoT fonctionne avec IAM](security_iam_service-with-iam.md))
+ **Administrateur IAM** : rédigez des politiques pour gérer l’accès (voir [AWS IoT exemples de politiques basées sur l'identité](security_iam_id-based-policy-examples.md))

## Authentification avec des identités IAM
<a name="security_iam_authentication"></a>

Dans les AWS IoT identités, il peut s'agir de certificats d'appareils (X.509), d'identités Amazon Cognito ou d'utilisateurs ou de groupes IAM. Cette rubrique traite uniquement des identités IAM. Pour plus d'informations sur les autres identités prises AWS IoT en charge, consultez[Authentification client](client-authentication.md).

L'authentification est la façon dont vous vous connectez à AWS l'aide de vos informations d'identification. Vous devez être authentifié en tant qu'utilisateur IAM ou en assumant un rôle IAM. Utilisateur racine d'un compte AWS

Vous pouvez vous connecter en tant qu'identité fédérée à l'aide d'informations d'identification provenant d'une source d'identité telle que AWS IAM Identity Center (IAM Identity Center), d'une authentification unique ou d'informations d'identification. Google/Facebook Pour plus d’informations sur la connexion, consultez [Connexion à votre Compte AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dans le *Guide de l’utilisateur Connexion à AWS *.

Pour l'accès par programmation, AWS fournit un SDK et une CLI pour signer les demandes de manière cryptographique. Pour plus d’informations, consultez [Signature AWS Version 4 pour les demandes d’API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dans le *Guide de l’utilisateur IAM*.

### Compte AWS utilisateur root
<a name="security_iam_authentication-rootuser"></a>

 Lorsque vous créez un Compte AWS, vous commencez par une seule identité de connexion appelée *utilisateur Compte AWS root* qui dispose d'un accès complet à toutes Services AWS les ressources. Il est vivement déconseillé d’utiliser l’utilisateur racine pour vos tâches quotidiennes. Pour les tâches qui requièrent des informations d’identification de l’utilisateur racine, consultez [Tâches qui requièrent les informations d’identification de l’utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dans le *Guide de l’utilisateur IAM*. 

### Utilisateurs et groupes IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* est une identité qui dispose d’autorisations spécifiques pour une seule personne ou application. Nous vous recommandons d’utiliser ces informations d’identification temporaires au lieu des utilisateurs IAM avec des informations d’identification à long terme. Pour plus d'informations, voir [Exiger des utilisateurs humains qu'ils utilisent la fédération avec un fournisseur d'identité pour accéder à AWS l'aide d'informations d'identification temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) dans le *guide de l'utilisateur IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) spécifient une collection d’utilisateurs IAM et permettent de gérer plus facilement les autorisations pour de grands ensembles d’utilisateurs. Pour plus d’informations, consultez [Cas d’utilisation pour les utilisateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dans le *Guide de l’utilisateur IAM*.

### Rôles IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* est une identité dotée d’autorisations spécifiques qui fournit des informations d’identification temporaires. Vous pouvez assumer un rôle en [passant d'un rôle d'utilisateur à un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) ou en appelant une opération d' AWS API AWS CLI ou d'API. Pour plus d’informations, consultez [Méthodes pour endosser un rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) dans le *Guide de l’utilisateur IAM*.

Les rôles IAM sont utiles pour l’accès des utilisateurs fédérés, les autorisations temporaires des utilisateurs IAM, les accès intercompte, les accès entre services et les applications exécutées sur Amazon EC2. Pour plus d’informations, consultez [Accès intercompte aux ressources dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le *Guide de l’utilisateur IAM*.

## Gestion de l’accès à l’aide de politiques
<a name="security_iam_access-manage"></a>

Vous contrôlez l'accès en AWS créant des politiques et en les associant à AWS des identités ou à des ressources. Une politique définit les autorisations lorsqu'elles sont associées à une identité ou à une ressource. AWS évalue ces politiques lorsqu'un directeur fait une demande. La plupart des politiques sont stockées AWS sous forme de documents JSON. Pour plus d’informations les documents de politique JSON, consultez [Vue d’ensemble des politiques JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dans le *Guide de l’utilisateur IAM*.

À l’aide de politiques, les administrateurs précisent qui a accès à quoi en définissant quel **principal** peut effectuer des **actions** sur quelles **ressources** et dans quelles **conditions**.

Par défaut, les utilisateurs et les rôles ne disposent d’aucune autorisation. Un administrateur IAM crée des politiques IAM et les ajoute aux rôles, que les utilisateurs peuvent ensuite assumer. Les politiques IAM définissent les autorisations quelle que soit la méthode que vous utilisez pour exécuter l’opération.

### Politiques basées sur l’identité
<a name="security_iam_access-manage-id-based-policies"></a>

Les stratégies basées sur l’identité sont des documents de stratégie d’autorisations JSON que vous attachez à une identité (utilisateur, groupe ou rôle). Ces politiques contrôlent les actions que peuvent exécuter ces identités, sur quelles ressources et dans quelles conditions. Pour découvrir comment créer une politique basée sur l’identité, consultez [Définition d’autorisations IAM personnalisées avec des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l’utilisateur IAM*.

Les politiques basées sur l’identité peuvent être des *politiques intégrées* (intégrées directement dans une seule identité) ou des *politiques gérées (politiques* autonomes associées à plusieurs identités). Pour découvrir comment choisir entre des politiques gérées et en ligne, consultez [Choix entre les politiques gérées et les politiques en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) dans le *Guide de l’utilisateur IAM*.

### Politiques basées sur les ressources
<a name="security_iam_access-manage-resource-based-policies"></a>

Les politiques basées sur les ressources sont des documents de politique JSON que vous attachez à une ressource. Les exemples incluent *les politiques de confiance de rôle* IAM et les *stratégies de compartiment* Amazon S3. Dans les services qui sont compatibles avec les politiques basées sur les ressources, les administrateurs de service peuvent les utiliser pour contrôler l’accès à une ressource spécifique. Vous devez [spécifier un principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dans une politique basée sur les ressources.

Les politiques basées sur les ressources sont des politiques en ligne situées dans ce service. Vous ne pouvez pas utiliser les politiques AWS gérées par IAM dans une stratégie basée sur les ressources.

### Listes de contrôle d'accès (ACLs)
<a name="security_iam_access-manage-acl"></a>

Les listes de contrôle d'accès (ACLs) contrôlent les principaux (membres du compte, utilisateurs ou rôles) autorisés à accéder à une ressource. ACLs sont similaires aux politiques basées sur les ressources, bien qu'elles n'utilisent pas le format de document de politique JSON.

Amazon S3 et AWS WAF Amazon VPC sont des exemples de services compatibles. ACLs Pour en savoir plus ACLs, consultez la [présentation de la liste de contrôle d'accès (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) dans le *guide du développeur Amazon Simple Storage Service*.

### Autres types de politique
<a name="security_iam_access-manage-other-policies"></a>

AWS prend en charge des types de politiques supplémentaires qui peuvent définir les autorisations maximales accordées par les types de politiques les plus courants :
+ **Limites d’autorisations** : une limite des autorisations définit le nombre maximum d’autorisations qu’une politique basée sur l’identité peut accorder à une entité IAM. Pour plus d’informations, consultez [Limites d’autorisations pour des entités IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dans le *Guide de l’utilisateur IAM*.
+ **Politiques de contrôle des services (SCPs)** — Spécifiez les autorisations maximales pour une organisation ou une unité organisationnelle dans AWS Organizations. Pour plus d’informations, consultez [Politiques de contrôle de service](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dans le *Guide de l’utilisateur AWS Organizations *.
+ **Politiques de contrôle des ressources (RCPs)** : définissez le maximum d'autorisations disponibles pour les ressources de vos comptes. Pour plus d'informations, voir [Politiques de contrôle des ressources (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) dans le *guide de AWS Organizations l'utilisateur*.
+ **Politiques de session** : politiques avancées que vous passez en tant que paramètre lorsque vous créez par programmation une session temporaire pour un rôle ou un utilisateur fédéré. Pour plus d’informations, consultez [Politiques de session](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dans le *Guide de l’utilisateur IAM*.

### Plusieurs types de politique
<a name="security_iam_access-manage-multiple-policies"></a>

Lorsque plusieurs types de politiques s’appliquent à la requête, les autorisations en résultant sont plus compliquées à comprendre. Pour savoir comment AWS déterminer s'il faut autoriser une demande lorsque plusieurs types de politiques sont impliqués, consultez la section [Logique d'évaluation des politiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) dans le *guide de l'utilisateur IAM*.

# Comment AWS IoT fonctionne avec IAM
<a name="security_iam_service-with-iam"></a>

Avant d'utiliser IAM pour gérer l'accès à AWS IoT, vous devez comprendre quelles fonctionnalités IAM sont disponibles avec. AWS IoT Pour obtenir une vue d'ensemble de la façon dont AWS IoT les autres AWS services fonctionnent avec IAM, consultez la section [AWS Services qui fonctionnent avec IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_aws-services-that-work-with-iam.html) dans le Guide de l'utilisateur d'*IAM*.

**Topics**
+ [AWS IoT politiques basées sur l'identité](#security_iam_service-with-iam-id-based-policies)
+ [AWS IoT politiques basées sur les ressources](#security_iam_service-with-iam-resource-based-policies)
+ [Autorisation basée sur les AWS IoT tags](#security_iam_service-with-iam-tags)
+ [AWS IoT Rôles IAM](#security_iam_service-with-iam-roles)

## AWS IoT politiques basées sur l'identité
<a name="security_iam_service-with-iam-id-based-policies"></a>

Avec les politiques basées sur l'identité IAM, vous pouvez spécifier des actions et ressources autorisées ou refusées, ainsi que les conditions dans lesquelles les actions sont autorisées ou refusées. AWS IoT prend en charge des actions, ressources et clés de condition spécifiques. Pour en savoir plus sur tous les éléments que vous utilisez dans une politique JSON, consultez [Références des éléments de politique JSON IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements.html) dans le *Guide de l’utilisateur IAM*.

### Actions
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément `Action` d’une politique JSON décrit les actions que vous pouvez utiliser pour autoriser ou refuser l’accès à une politique. Intégration d’actions dans une politique afin d’accorder l’autorisation d’exécuter les opérations associées.

Le tableau suivant répertorie les actions IAM IoT, l' AWS IoT API associée et la ressource manipulée par l'action.


****  

| Actions de politique | AWS IoT API | Ressources | 
| --- | --- | --- | 
| IoT : AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Le compte Compte AWS spécifié dans l'ARN doit être le compte vers lequel le certificat est transféré.   | 
| IoT : AddThingToThingGroup | AddThingToThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : AssociateTargetsWithJob | AssociateTargetsWithJob | Aucune  | 
| IoT : AttachPolicy | AttachPolicy |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : AttachPrincipalPolicy | AttachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : AttachSecurityProfile | AttachSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT : AttachThingPrincipal | AttachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : CancelCertificateTransfer | CancelCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Le compte Compte AWS spécifié dans l'ARN doit être le compte vers lequel le certificat est transféré.   | 
| IoT : CancelJob | CancelJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT : CancelJobExecution | CancelJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : ClearDefaultAuthorizer | ClearDefaultAuthorizer | Aucune | 
| IoT : CreateAuthorizer | CreateAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT : CreateCertificateFromCsr | CreateCertificateFromCsr | \$1 | 
| IoT : CreateDimension | CreateDimension | `arn:aws:iot:region:account-id:dimension/dimension-name` | 
| IoT : CreateJob | CreateJob |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT : CreateJobTemplate | CreateJobTemplate |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT : CreateKeysAndCertificate | CreateKeysAndCertificate | \$1 | 
| IoT : CreatePolicy | CreatePolicy | `arn:aws:iot:region:account-id:policy/policy-name` | 
| IoT : CreatePolicyVersion | CreatePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  Il doit s'agir d'une AWS IoT politique et non d'une politique IAM.   | 
| IoT : CreateRoleAlias | CreateRoleAlias |  (paramètre : roleAlias) `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT : CreateSecurityProfile | CreateSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT : CreateThing | CreateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : CreateThingGroup | CreateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` pour le groupe en cours de création et pour le groupe parent, si utilisé  | 
| IoT : CreateThingType | CreateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT : CreateTopicRule | CreateTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : DeleteAuthorizer | DeleteAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-name`  | 
| IoT : Supprimer CACertificate | Supprimer CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT : DeleteCertificate | DeleteCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : DeleteDimension | DeleteDimension |  `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT : DeleteJob | DeleteJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT : DeleteJobTemplate | DeleteJobTemplate |  `arn:aws:iot:region:account-id:job/job-template-id`  | 
| IoT : DeleteJobExecution | DeleteJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : DeletePolicy | DeletePolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : DeletePolicyVersion | DeletePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : DeleteRegistrationCode | DeleteRegistrationCode | \$1 | 
| IoT : DeleteRoleAlias | DeleteRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT : DeleteSecurityProfile | DeleteSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT : DeleteThing | DeleteThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : DeleteThingGroup | DeleteThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : DeleteThingType | DeleteThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT : DeleteTopicRule | DeleteTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : DeleteV2 LoggingLevel | Supprimer la version 2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : DeprecateThingType | DeprecateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT : DescribeAuthorizer | DescribeAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name` (paramètre : authorizerName) Aucune  | 
| IoT : décrire CACertificate | Décrivez CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT : DescribeCertificate | DescribeCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : DescribeDefaultAuthorizer | DescribeDefaultAuthorizer | Aucune  | 
| IoT : DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT : DescribeEventConfigurations | DescribeEventConfigurations | Aucune  | 
| IoT : DescribeIndex | DescribeIndex |  `arn:aws:iot:region:account-id:index/index-name`  | 
| IoT : DescribeJob | DescribeJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT : DescribeJobExecution | DescribeJobExecution | Aucune | 
| IoT : DescribeJobTemplate | DescribeJobTemplate |  `arn:aws:iot:region:account-id:job/job-template-id`  | 
| IoT : DescribeRoleAlias | DescribeRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT : DescribeThing | DescribeThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : DescribeThingGroup | DescribeThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : DescribeThingRegistrationTask | DescribeThingRegistrationTask | Aucune | 
| IoT : DescribeThingType | DescribeThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT : DetachPolicy | DetachPolicy |  `arn:aws:iot:region:account-id:cert/cert-id` or `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : DetachPrincipalPolicy | DetachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : DetachSecurityProfile | DetachSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT : DetachThingPrincipal | DetachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : DisableTopicRule | DisableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : EnableTopicRule | EnableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : GetEffectivePolicies | GetEffectivePolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : GetIndexingConfiguration | GetIndexingConfiguration | Aucune | 
| IoT : GetJobDocument | GetJobDocument |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT : GetLoggingOptions | GetLoggingOptions | \$1 | 
| IoT : GetPolicy | GetPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : GetPolicyVersion | GetPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : GetRegistrationCode | GetRegistrationCode | \$1 | 
| IoT : GetTopicRule | GetTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : ListAttachedPolicies | ListAttachedPolicies |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : ListAuthorizers | ListAuthorizers | Aucune | 
| IoT : liste CACertificates | Liste CACertificates | \$1 | 
| IoT : ListCertificates | ListCertificates | \$1 | 
| Lieu : ListCertificatesBy CA | ListCertificatesByCA | \$1 | 
| IoT : ListIndices | ListIndices | Aucune | 
| IoT : ListJobExecutionsForJob | ListJobExecutionsForJob | Aucune | 
| IoT : ListJobExecutionsForThing | ListJobExecutionsForThing | Aucune | 
| IoT : ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` si le thingGroupName paramètre est utilisé  | 
| IoT : ListJobTemplates | ListJobs | Aucune | 
| IoT : ListOutgoingCertificates | ListOutgoingCertificates | \$1 | 
| IoT : ListPolicies | ListPolicies | \$1 | 
| IoT : ListPolicyPrincipals | ListPolicyPrincipals | \$1 | 
| IoT : ListPolicyVersions | ListPolicyVersions |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : ListPrincipalPolicies | ListPrincipalPolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : ListPrincipalThings | ListPrincipalThings |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : ListRoleAliases | ListRoleAliases | Aucune | 
| IoT : ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : ListThingGroups | ListThingGroups | Aucune | 
| IoT : ListThingGroupsForThing | ListThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : ListThingPrincipals | ListThingPrincipals |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : ListThingRegistrationTaskReports | ListThingRegistrationTaskReports | Aucune | 
| IoT : ListThingRegistrationTasks | ListThingRegistrationTasks | Aucune | 
| IoT : ListThingTypes | ListThingTypes | \$1 | 
| IoT : ListThings | ListThings | \$1 | 
| IoT : ListThingsInThingGroup | ListThingsInThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : ListTopicRules | ListTopicRules | \$1 | 
| IoT : Liste V2 LoggingLevels | Liste V2 LoggingLevels | Aucune | 
| IoT : S'inscrire CACertificate | S'inscrire CACertificate | \$1 | 
| IoT : RegisterCertificate | RegisterCertificate | \$1 | 
| IoT : RegisterThing | RegisterThing | Aucune | 
| IoT : RejectCertificateTransfer | RejectCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : RemoveThingFromThingGroup | RemoveThingFromThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : ReplaceTopicRule | ReplaceTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : SearchIndex | SearchIndex |  `arn:aws:iot:region:account-id:index/index-id`  | 
| IoT : SetDefaultAuthorizer | SetDefaultAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT : SetDefaultPolicyVersion | SetDefaultPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : SetLoggingOptions | SetLoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT : SetV2 LoggingLevel | Set V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : SetV2 LoggingOptions | Set V2 LoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT : StartThingRegistrationTask | StartThingRegistrationTask | Aucune | 
| IoT : StopThingRegistrationTask | StopThingRegistrationTask | Aucune | 
| IoT : TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : TestInvokeAuthorizer | TestInvokeAuthorizer | Aucune | 
| IoT : TransferCertificate | TransferCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : UpdateAuthorizer | UpdateAuthorizer |  `arn:aws:iot:region:account-id:authorizerfunction/authorizer-function-name`  | 
| IoT : mise à jour CACertificate | Mettre à jour CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT : UpdateCertificate | UpdateCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : UpdateDimension | UpdateDimension |  `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT : UpdateEventConfigurations | UpdateEventConfigurations | Aucune | 
| IoT : UpdateIndexingConfiguration | UpdateIndexingConfiguration | Aucune | 
| IoT : UpdateRoleAlias | UpdateRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT : UpdateSecurityProfile | UpdateSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT : UpdateThing | UpdateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : UpdateThingGroup | UpdateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : UpdateThingGroupsForThing | UpdateThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 

Les actions de politique en AWS IoT cours utilisent le préfixe suivant avant l'action :`iot:`. Par exemple, pour autoriser une personne à répertorier tous les objets IoT enregistrés dans son Compte AWS `ListThings` API, vous devez inclure l'`iot:ListThings`action dans sa politique. Les déclarations de politique doivent inclure un `NotAction` élément `Action` ou. AWS IoT définit son propre ensemble d'actions décrivant les tâches que vous pouvez effectuer avec ce service.

Pour spécifier plusieurs actions dans une seule déclaration, séparez-les par des virgules comme suit :

```
"Action": [
      "ec2:action1",
      "ec2:action2"
```

Vous pouvez aussi spécifier plusieurs actions à l’aide de caractères génériques (\$1). Par exemple, pour spécifier toutes les actions qui commencent par le mot `Describe`, incluez l’action suivante :

```
"Action": "iot:Describe*"
```

Pour consulter la liste des AWS IoT actions, reportez-vous à la section [Actions définies par AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) dans le *guide de l'utilisateur IAM*.

#### Actions du Device Advisor
<a name="security_iam_service-actions-device-advisor"></a>

Le tableau suivant répertorie les actions IAM IoT Device Advisor, l'API Device Advisor AWS IoT associée et la ressource manipulée par l'action.


****  

| Actions de politique | AWS IoT API | Ressources | 
| --- | --- | --- | 
| conseiller pour appareils IoT : CreateSuiteDefinition | CreateSuiteDefinition |  Aucune  | 
| conseiller pour appareils IoT : DeleteSuiteDefinition | DeleteSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| conseiller pour appareils IoT : GetSuiteDefinition | GetSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| conseiller pour appareils IoT : GetSuiteRun | GetSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-run-id`  | 
| conseiller pour appareils IoT : GetSuiteRunReport | GetSuiteRunReport |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| conseiller pour appareils IoT : ListSuiteDefinitions | ListSuiteDefinitions | Aucune | 
| conseiller pour appareils IoT : ListSuiteRuns | ListSuiteRuns |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| conseiller pour appareils IoT : ListTagsForResource | ListTagsForResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| conseiller pour appareils IoT : StartSuiteRun | StartSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| conseiller pour appareils IoT : TagResource | TagResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| conseiller pour appareils IoT : UntagResource | UntagResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| conseiller pour appareils IoT : UpdateSuiteDefinition | UpdateSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| conseiller pour appareils IoT : StopSuiteRun | StopSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 

Les actions de politique dans AWS IoT Device Advisor utilisent le préfixe suivant avant l'action : `iotdeviceadvisor:` Par exemple, pour autoriser quelqu'un à répertorier toutes les définitions de suites enregistrées dans son Compte AWS ListSuiteDefinitions API, vous devez inclure l'`iotdeviceadvisor:ListSuiteDefinitions`action dans sa politique.

### Ressources
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément de politique JSON `Resource` indique le ou les objets auxquels l’action s’applique. Il est recommandé de définir une ressource à l’aide de son [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Pour les actions qui ne sont pas compatibles avec les autorisations de niveau ressource, utilisez un caractère générique (\$1) afin d’indiquer que l’instruction s’applique à toutes les ressources.

```
"Resource": "*"
```


**AWS IoT ressources**  

| Actions de politique | AWS IoT API | Ressources | 
| --- | --- | --- | 
| IoT : AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Le compte Compte AWS spécifié dans l'ARN doit être le compte vers lequel le certificat est transféré.   | 
| IoT : AddThingToThingGroup | AddThingToThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : AssociateTargetsWithJob | AssociateTargetsWithJob | Aucune  | 
| IoT : AttachPolicy | AttachPolicy | `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : AttachPrincipalPolicy | AttachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : AttachThingPrincipal | AttachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : CancelCertificateTransfer | CancelCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Le compte Compte AWS spécifié dans l'ARN doit être le compte vers lequel le certificat est transféré.   | 
| IoT : CancelJob | CancelJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT : CancelJobExecution | CancelJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : ClearDefaultAuthorizer | ClearDefaultAuthorizer | Aucune | 
| IoT : CreateAuthorizer | CreateAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT : CreateCertificateFromCsr | CreateCertificateFromCsr | \$1 | 
| IoT : CreateJob | CreateJob |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT : CreateJobTemplate | CreateJobTemplate |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT : CreateKeysAndCertificate | CreateKeysAndCertificate | \$1 | 
| IoT : CreatePolicy | CreatePolicy | `arn:aws:iot:region:account-id:policy/policy-name` | 
| CreatePolicyVersion | IoT : CreatePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  Il doit s'agir d'une AWS IoT politique et non d'une politique IAM.   | 
| IoT : CreateRoleAlias | CreateRoleAlias |  (paramètre : roleAlias) `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT : CreateThing | CreateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : CreateThingGroup | CreateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` pour le groupe en cours de création et pour le groupe parent, si utilisé  | 
| IoT : CreateThingType | CreateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT : CreateTopicRule | CreateTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : DeleteAuthorizer | DeleteAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-name`  | 
| IoT : Supprimer CACertificate | Supprimer CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT : DeleteCertificate | DeleteCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : DeleteJob | DeleteJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT : DeleteJobExecution | DeleteJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : DeleteJobTemplate | DeleteJobTemplate |  `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT : DeletePolicy | DeletePolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : DeletePolicyVersion | DeletePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : DeleteRegistrationCode | DeleteRegistrationCode | \$1 | 
| IoT : DeleteRoleAlias | DeleteRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT : DeleteThing | DeleteThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : DeleteThingGroup | DeleteThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : DeleteThingType | DeleteThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT : DeleteTopicRule | DeleteTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : DeleteV2 LoggingLevel | Supprimer la version 2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : DeprecateThingType | DeprecateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT : DescribeAuthorizer | DescribeAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name` (paramètre : authorizerName) Aucune  | 
| IoT : décrire CACertificate | Décrivez CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT : DescribeCertificate | DescribeCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : DescribeDefaultAuthorizer | DescribeDefaultAuthorizer | Aucune  | 
| IoT : DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT : DescribeEventConfigurations | DescribeEventConfigurations | Aucune  | 
| IoT : DescribeIndex | DescribeIndex |  `arn:aws:iot:region:account-id:index/index-name`  | 
| IoT : DescribeJob | DescribeJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT : DescribeJobExecution | DescribeJobExecution | Aucune | 
| IoT : DescribeJobTemplate | DescribeJobTemplate |  `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT : DescribeRoleAlias | DescribeRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT : DescribeThing | DescribeThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : DescribeThingGroup | DescribeThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : DescribeThingRegistrationTask | DescribeThingRegistrationTask | Aucune | 
| IoT : DescribeThingType | DescribeThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT : DetachPolicy | DetachPolicy |  `arn:aws:iot:region:account-id:cert/cert-id` or `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : DetachPrincipalPolicy | DetachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : DetachThingPrincipal | DetachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : DisableTopicRule | DisableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : EnableTopicRule | EnableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : GetEffectivePolicies | GetEffectivePolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : GetIndexingConfiguration | GetIndexingConfiguration | Aucune | 
| IoT : GetJobDocument | GetJobDocument |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT : GetLoggingOptions | GetLoggingOptions | \$1 | 
| IoT : GetPolicy | GetPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : GetPolicyVersion | GetPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : GetRegistrationCode | GetRegistrationCode | \$1 | 
| IoT : GetTopicRule | GetTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : ListAttachedPolicies | ListAttachedPolicies |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : ListAuthorizers | ListAuthorizers | Aucune | 
| IoT : liste CACertificates | Liste CACertificates | \$1 | 
| IoT : ListCertificates | ListCertificates | \$1 | 
| Lieu : ListCertificatesBy CA | ListCertificatesByCA | \$1 | 
| IoT : ListIndices | ListIndices | Aucune | 
| IoT : ListJobExecutionsForJob | ListJobExecutionsForJob | Aucune | 
| IoT : ListJobExecutionsForThing | ListJobExecutionsForThing | Aucune | 
| IoT : ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` si le thingGroupName paramètre est utilisé  | 
| IoT : ListJobTemplates | ListJobTemplates | Aucune | 
| IoT : ListOutgoingCertificates | ListOutgoingCertificates | \$1 | 
| IoT : ListPolicies | ListPolicies | \$1 | 
| IoT : ListPolicyPrincipals | ListPolicyPrincipals |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : ListPolicyVersions | ListPolicyVersions |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : ListPrincipalPolicies | ListPrincipalPolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : ListPrincipalThings | ListPrincipalThings |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : ListRoleAliases | ListRoleAliases | Aucune | 
| IoT : ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : ListThingGroups | ListThingGroups | Aucune | 
| IoT : ListThingGroupsForThing | ListThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : ListThingPrincipals | ListThingPrincipals |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : ListThingRegistrationTaskReports | ListThingRegistrationTaskReports | Aucune | 
| IoT : ListThingRegistrationTasks | ListThingRegistrationTasks | Aucune | 
| IoT : ListThingTypes | ListThingTypes | \$1 | 
| IoT : ListThings | ListThings | \$1 | 
| IoT : ListThingsInThingGroup | ListThingsInThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : ListTopicRules | ListTopicRules | \$1 | 
| IoT : Liste V2 LoggingLevels | Liste V2 LoggingLevels | Aucune | 
| IoT : S'inscrire CACertificate | S'inscrire CACertificate | \$1 | 
| IoT : RegisterCertificate | RegisterCertificate | \$1 | 
| IoT : RegisterThing | RegisterThing | Aucune | 
| IoT : RejectCertificateTransfer | RejectCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : RemoveThingFromThingGroup | RemoveThingFromThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : ReplaceTopicRule | ReplaceTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT : SearchIndex | SearchIndex |  `arn:aws:iot:region:account-id:index/index-id`  | 
| IoT : SetDefaultAuthorizer | SetDefaultAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT : SetDefaultPolicyVersion | SetDefaultPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT : SetLoggingOptions | SetLoggingOptions | \$1 | 
| IoT : SetV2 LoggingLevel | Set V2 LoggingLevel | \$1 | 
| IoT : SetV2 LoggingOptions | Set V2 LoggingOptions | \$1 | 
| IoT : StartThingRegistrationTask | StartThingRegistrationTask | Aucune | 
| IoT : StopThingRegistrationTask | StopThingRegistrationTask | Aucune | 
| IoT : TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : TestInvokeAuthorizer | TestInvokeAuthorizer | Aucune | 
| IoT : TransferCertificate | TransferCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : UpdateAuthorizer | UpdateAuthorizer |  `arn:aws:iot:region:account-id:authorizerfunction/authorizer-function-name`  | 
| IoT : mise à jour CACertificate | Mettre à jour CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT : UpdateCertificate | UpdateCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT : UpdateEventConfigurations | UpdateEventConfigurations | Aucune | 
| IoT : UpdateIndexingConfiguration | UpdateIndexingConfiguration | Aucune | 
| IoT : UpdateRoleAlias | UpdateRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT : UpdateThing | UpdateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT : UpdateThingGroup | UpdateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT : UpdateThingGroupsForThing | UpdateThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 

Pour plus d'informations sur le format de ARNs, consultez [Amazon Resource Names (ARNs) et AWS Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Certaines AWS IoT actions, telles que celles relatives à la création de ressources, ne peuvent pas être effectuées sur une ressource spécifique. Dans ces cas-là, vous devez utiliser le caractère générique (\$1).

```
"Resource": "*"
```

Pour consulter la liste des types de AWS IoT ressources et leurs caractéristiques ARNs, reportez-vous à la section [Ressources définies par AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-resources-for-iam-policies) dans le *guide de l'utilisateur IAM*. Pour savoir grâce à quelles actions vous pouvez spécifier l’ARN de chaque ressource, consultez [Actions définies par AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

#### ressources Device Advisor
<a name="security_iam_service-device-advisor-resources"></a>

Pour définir des restrictions au niveau des ressources pour les politiques IAM de AWS IoT Device Advisor, utilisez les formats ARN des ressources suivants pour les définitions et les exécutions de suites.

Format ARN de la ressource de définition de suite  
`arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`

Format ARN de la ressource d'exécution de la suite  
`arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`

### Clés de condition
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément `Condition` indique à quel moment les instructions s’exécutent en fonction de critères définis. Vous pouvez créer des expressions conditionnelles qui utilisent des [opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), tels que les signes égal ou inférieur à, pour faire correspondre la condition de la politique aux valeurs de la demande. Pour voir toutes les clés de condition AWS globales, voir les clés de [contexte de condition AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dans le *guide de l'utilisateur IAM*.

AWS IoT définit son propre ensemble de clés de condition et prend également en charge l'utilisation de certaines clés de condition globales. Pour voir toutes les clés de condition AWS globales, consultez la section [Clés contextuelles de condition AWS globale](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_condition-keys.html) dans le *guide de l'utilisateur IAM*. 


**AWS IoT clés de condition**  

| AWS IoT clés de condition | Description | Type | 
| --- | --- | --- | 
| aws:RequestTag/\$1\$1tag-key\$1 | Clé de balise présente dans la demande envoyée par l'utilisateur à AWS IoT. | String | 
| aws:ResourceTag/\$1\$1tag-key\$1 | Le composant clé d'une balise attachée à une AWS IoT ressource. | String | 
| aws:TagKeys | Liste de tous les noms de clés de balise associés à la ressource de la demande. | String | 

Pour consulter la liste des clés de AWS IoT condition, reportez-vous à la section [Clés de AWS IoT condition](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-policy-keys) du *guide de l'utilisateur IAM*. Pour savoir avec quelles actions et ressources vous pouvez utiliser une clé de condition, voir [Actions définies par AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

### Exemples
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Pour consulter des exemples de politiques AWS IoT basées sur l'identité, consultez. [AWS IoT exemples de politiques basées sur l'identité](security_iam_id-based-policy-examples.md)

## AWS IoT politiques basées sur les ressources
<a name="security_iam_service-with-iam-resource-based-policies"></a>

Les politiques basées sur les ressources sont des documents de politique JSON qui spécifient les actions qu'un principal spécifié peut effectuer sur la AWS IoT ressource et dans quelles conditions.

AWS IoT ne prend pas en charge les politiques basées sur les ressources IAM. Il soutient toutefois les politiques AWS IoT basées sur les ressources. Pour de plus amples informations, veuillez consulter [AWS IoT Core politiques](iot-policies.md).

## Autorisation basée sur les AWS IoT tags
<a name="security_iam_service-with-iam-tags"></a>

Vous pouvez associer des balises aux AWS IoT ressources ou transmettre des balises dans une demande à AWS IoT. Pour contrôler l’accès basé sur des étiquettes, vous devez fournir les informations d’étiquette dans l’[élément de condition](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) d’une politique utilisant les clés de condition `iot:ResourceTag/key-name`, `aws:RequestTag/key-name` ou `aws:TagKeys`. Pour de plus amples informations, veuillez consulter [Utilisation des balises avec des politiques IAM](tagging-iot-iam.md). Pour plus d'informations sur le balisage AWS IoT des ressources, consultez[Marquer vos ressources AWS IoT](tagging-iot.md).

Pour afficher un exemple de stratégie basée sur l'identité permettant de limiter l'accès à une ressource basée sur les balises de cette ressource, veuillez consulter [Afficher AWS IoT les ressources en fonction des balises](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-view-thing-tags).

## AWS IoT Rôles IAM
<a name="security_iam_service-with-iam-roles"></a>

Un [rôle IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) est une entité au sein de vous Compte AWS qui possède des autorisations spécifiques.

### Utilisation d'informations d'identification temporaires avec AWS IoT
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

Vous pouvez utiliser des informations d’identification temporaires pour vous connecter à l’aide de la fédération, endosser un rôle IAM ou encore pour endosser un rôle intercompte. Vous obtenez des informations d'identification de sécurité temporaires en appelant des opérations d' AWS STS API telles que [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)ou [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html). 

AWS IoT prend en charge l'utilisation d'informations d'identification temporaires. 

### Rôles liés à un service
<a name="security_iam_service-with-iam-roles-service-linked"></a>

Les [rôles liés aux](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-linked-role) AWS services permettent aux services d'accéder aux ressources d'autres services pour effectuer une action en votre nom. Les rôles liés à un service s’affichent dans votre compte IAM et sont la propriété du service. Un administrateur IAM peut consulter, mais ne peut pas modifier, les autorisations concernant les rôles liés à un service.

AWS IoT ne prend pas en charge les rôles liés à un service.

### Rôles du service
<a name="security_iam_service-with-iam-roles-service"></a>

Cette fonction permet à un service d’endosser une [fonction du service](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-role) en votre nom. Ce rôle autorise le service à accéder à des ressources d’autres services pour effectuer une action en votre nom. Les rôles de service s’affichent dans votre compte IAM et sont la propriété du compte. Cela signifie qu’un administrateur IAM peut modifier les autorisations associées à ce rôle. Toutefois, une telle action peut perturber le bon fonctionnement du service.

# AWS IoT exemples de politiques basées sur l'identité
<a name="security_iam_id-based-policy-examples"></a>

Par défaut, les utilisateurs et les rôles IAM ne sont pas autorisés à créer ou modifier les ressources AWS IoT . Ils ne peuvent pas non plus effectuer de tâches à l'aide de l' AWS API AWS Management Console AWS CLI, ou. Un administrateur IAM doit créer des politiques IAM autorisant les utilisateurs et les rôles à exécuter des opérations d’API spécifiques sur les ressources spécifiées dont ils ont besoin. Il doit ensuite attacher ces stratégies aux utilisateurs ou aux groupes ayant besoin de ces autorisations.

Pour savoir comment créer une politique IAM basée sur l’identité à l’aide de ces exemples de documents de politique JSON, consultez [Création de politiques dans l’onglet JSON](https://docs.aws.amazon.com/service-authorization/latest/reference/access_policies_create.html#access_policies_create-json-editor) dans le *Guide de l’utilisateur IAM*.

**Topics**
+ [Bonnes pratiques en matière de politiques](#security_iam_service-with-iam-policy-best-practices)
+ [Utilisation de la AWS IoT console](#security_iam_id-based-policy-examples-console)
+ [Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Afficher AWS IoT les ressources en fonction des balises](#security_iam_id-based-policy-examples-view-thing-tags)
+ [Afficher les ressources AWS IoT Device Advisor en fonction des balises](#security_iam-device-advisor-tags)

## Bonnes pratiques en matière de politiques
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Les politiques basées sur l'identité déterminent si quelqu'un peut créer, accéder ou supprimer AWS IoT des ressources dans votre compte. Ces actions peuvent entraîner des frais pour votre Compte AWS. Lorsque vous créez ou modifiez des politiques basées sur l’identité, suivez ces instructions et recommandations :
+ **Commencez AWS par les politiques gérées et passez aux autorisations du moindre privilège : pour commencer à accorder des autorisations** à vos utilisateurs et à vos charges de travail, utilisez les *politiques AWS gérées* qui accordent des autorisations pour de nombreux cas d'utilisation courants. Ils sont disponibles dans votre Compte AWS. Nous vous recommandons de réduire davantage les autorisations en définissant des politiques gérées par les AWS clients spécifiques à vos cas d'utilisation. Pour plus d’informations, consultez [politiques gérées par AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) ou [politiques gérées par AWS pour les activités professionnelles](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dans le *Guide de l’utilisateur IAM*.
+ **Accordez les autorisations de moindre privilège** : lorsque vous définissez des autorisations avec des politiques IAM, accordez uniquement les autorisations nécessaires à l’exécution d’une seule tâche. Pour ce faire, vous définissez les actions qui peuvent être entreprises sur des ressources spécifiques dans des conditions spécifiques, également appelées *autorisations de moindre privilège*. Pour plus d’informations sur l’utilisation d’IAM pour appliquer des autorisations, consultez [politiques et autorisations dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dans le *Guide de l’utilisateur IAM*.
+ **Utilisez des conditions dans les politiques IAM pour restreindre davantage l’accès** : vous pouvez ajouter une condition à vos politiques afin de limiter l’accès aux actions et aux ressources. Par exemple, vous pouvez écrire une condition de politique pour spécifier que toutes les demandes doivent être envoyées via SSL. Vous pouvez également utiliser des conditions pour accorder l'accès aux actions de service si elles sont utilisées par le biais d'un service spécifique Service AWS, tel que CloudFormation. Pour plus d’informations, consultez [Conditions pour éléments de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dans le *Guide de l’utilisateur IAM*.
+ **Utilisez l’Analyseur d’accès IAM pour valider vos politiques IAM afin de garantir des autorisations sécurisées et fonctionnelles** : l’Analyseur d’accès IAM valide les politiques nouvelles et existantes de manière à ce que les politiques IAM respectent le langage de politique IAM (JSON) et les bonnes pratiques IAM. IAM Access Analyzer fournit plus de 100 vérifications de politiques et des recommandations exploitables pour vous aider à créer des politiques sécurisées et fonctionnelles. Pour plus d’informations, consultez [Validation de politiques avec IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dans le *Guide de l’utilisateur IAM*.
+ **Exiger l'authentification multifactorielle (MFA**) : si vous avez un scénario qui nécessite des utilisateurs IAM ou un utilisateur root, activez l'authentification MFA pour une sécurité accrue. Compte AWS Pour exiger la MFA lorsque des opérations d’API sont appelées, ajoutez des conditions MFA à vos politiques. Pour plus d’informations, consultez [Sécurisation de l’accès aux API avec MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) dans le *Guide de l’utilisateur IAM*.

Pour plus d’informations sur les bonnes pratiques dans IAM, consultez [Bonnes pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans le *Guide de l’utilisateur IAM*.

## Utilisation de la AWS IoT console
<a name="security_iam_id-based-policy-examples-console"></a>

Pour accéder à la AWS IoT console, vous devez disposer d'un ensemble minimal d'autorisations. Ces autorisations doivent vous permettre de répertorier et d'afficher les détails AWS IoT des ressources de votre Compte AWS. Si vous créez une politique basée sur l’identité qui est plus restrictive que l’ensemble minimum d’autorisations requis, la console ne fonctionnera pas comme prévu pour les entités (utilisateurs ou rôles) tributaires de cette politique.

Pour vous assurer que ces entités peuvent toujours utiliser la AWS IoT console, attachez également la politique AWS gérée suivante aux entités :`AWSIoTFullAccess`. Pour plus d’informations, consultez [Ajout d’autorisations à un utilisateur](https://docs.aws.amazon.com/service-authorization/latest/reference/id_users_change-permissions.html#users_change_permissions-add-console) dans le *Guide de l’utilisateur IAM*.

Il n'est pas nécessaire d'accorder des autorisations de console minimales aux utilisateurs qui appellent uniquement l'API AWS CLI ou l' AWS API. Autorisez plutôt l’accès à uniquement aux actions qui correspondent à l’opération d’API que vous tentez d’effectuer.

## Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Cet exemple montre comment créer une politique qui permet aux utilisateurs IAM d’afficher les politiques en ligne et gérées attachées à leur identité d’utilisateur. Cette politique inclut les autorisations permettant d'effectuer cette action sur la console ou par programmation à l'aide de l'API AWS CLI or AWS .

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## Afficher AWS IoT les ressources en fonction des balises
<a name="security_iam_id-based-policy-examples-view-thing-tags"></a>

Vous pouvez utiliser des conditions dans votre politique basée sur l’identité pour contrôler l’accès aux ressources AWS IoT en fonction des balises. Cet exemple montre comment créer une stratégie qui autorise l'affichage d'un objet. Toutefois, l'autorisation est accordée uniquement si la balise `Owner` de l'objet a pour valeur le nom d'utilisateur de cet utilisateur. Cette politique accorde également les autorisations nécessaires pour réaliser cette action sur la console.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListBillingGroupsInConsole",
            "Effect": "Allow",
            "Action": "iot:ListBillingGroups",
            "Resource": "*"
        },
        {
            "Sid": "ViewBillingGroupsIfOwner",
            "Effect": "Allow",
           "Action": "iot:DescribeBillingGroup",
            "Resource": "arn:aws:iot:*:*:billinggroup/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"}
        }
        }
    ]
}
```

Vous pouvez rattacher cette politique aux utilisateurs IAM de votre compte. Si un utilisateur nommé `richard-roe` tente de consulter un groupe AWS IoT de facturation, le groupe de facturation doit être étiqueté `Owner=richard-roe` ou`owner=richard-roe`. Dans le cas contraire, l’utilisateur se voit refuser l'accès. La clé de condition d'étiquette `Owner` correspond à la fois à `Owner` et à `owner`, car les noms de clé de condition ne sont pas sensibles à la casse. Pour plus d'informations, veuillez consulter la rubrique [Éléments de stratégie JSON IAM : Condition](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) dans le *Guide de l'utilisateur IAM*.

## Afficher les ressources AWS IoT Device Advisor en fonction des balises
<a name="security_iam-device-advisor-tags"></a>

Vous pouvez utiliser des conditions dans votre politique basée sur l'identité pour contrôler l'accès aux ressources Device Advisor AWS IoT en fonction de balises. L'exemple suivant montre comment créer une politique permettant d'afficher une définition de suite particulière. Cependant, l'autorisation n'est accordée que si la balise de définition de suite a `SuiteType` définie sur la valeur `MQTT`. Cette politique accorde également les autorisations nécessaires pour réaliser cette action sur la console.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewSuiteDefinition",
            "Effect": "Allow",
            "Action": "iotdeviceadvisor:GetSuiteDefinition",
            "Resource": "arn:aws:iotdeviceadvisor:*:*:suitedefinition/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/SuiteType": "MQTT"}
        }
        }
    ]
}
```

# AWS politiques gérées pour AWS IoT
<a name="security-iam-awsmanpol"></a>







Pour ajouter des autorisations aux utilisateurs, aux groupes et aux rôles, il est plus facile d'utiliser des politiques AWS gérées que de les rédiger vous-même. Il faut du temps et de l’expertise pour [créer des politiques gérées par le client IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) qui ne fournissent à votre équipe que les autorisations dont elle a besoin. Pour démarrer rapidement, vous pouvez utiliser nos politiques AWS gérées. Ces politiques couvrent des cas d’utilisation courants et sont disponibles dans votre Compte AWS. Pour plus d'informations sur les politiques AWS gérées, voir les [politiques AWS gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dans le *guide de l'utilisateur IAM*.

AWS les services maintiennent et mettent à jour les politiques AWS gérées. Vous ne pouvez pas modifier les autorisations dans les politiques AWS gérées. Les services ajoutent occasionnellement des autorisations à une politique gérée par AWS pour prendre en charge de nouvelles fonctionnalités. Ce type de mise à jour affecte toutes les identités (utilisateurs, groupes et rôles) auxquelles la politique est attachée. Les services sont très susceptibles de mettre à jour une politique gérée par AWS quand une nouvelle fonctionnalité est lancée ou quand de nouvelles opérations sont disponibles. Les services ne suppriment pas les autorisations d'une politique AWS gérée. Les mises à jour des politiques n'endommageront donc pas vos autorisations existantes.

En outre, AWS prend en charge les politiques gérées pour les fonctions professionnelles qui couvrent plusieurs services. Par exemple, la politique **ReadOnlyAccess** AWS gérée fournit un accès en lecture seule à tous les AWS services et ressources. Quand un service lance une nouvelle fonctionnalité, AWS ajoute des autorisations en lecture seule pour les nouvelles opérations et ressources. Pour obtenir la liste des politiques de fonctions professionnelles et leurs descriptions, consultez la page [politiques gérées par AWS pour les fonctions de tâche](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dans le *Guide de l’utilisateur IAM*.

**Note**  
AWS IoT fonctionne avec les deux politiques AWS IoT et avec les politiques IAM. Cette rubrique traite uniquement des politiques IAM, qui définissent une action de politique pour les opérations d'API du plan de contrôle et du plan de données. Consultez également [AWS IoT Core politiques](iot-policies.md).









## AWS politique gérée : AWSIo TConfig Accès
<a name="security-iam-awsmanpol-AWSIoTConfigAccess"></a>





Vous pouvez associer la politique `AWSIoTConfigAccess` à vos identités IAM.



Cette politique accorde les autorisations d'identité associées qui permettent d'accéder à toutes les opérations de configuration AWS IoT . Cette stratégie peut affecter le traitement et le stockage des données. Pour consulter cette politique dans le AWS Management Console, voir [AWSIoTConfigAccès](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigAccess$jsonEditor?section=permissions).



**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes.




+ `iot`— Récupérez AWS IoT des données et effectuez des actions de configuration IoT.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:AcceptCertificateTransfer",
                "iot:AddThingToThingGroup",
                "iot:AssociateTargetsWithJob",
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:AttachThingPrincipal",
                "iot:CancelCertificateTransfer",
                "iot:CancelJob",
                "iot:CancelJobExecution",
                "iot:ClearDefaultAuthorizer",
                "iot:CreateAuthorizer",
                "iot:CreateCertificateFromCsr",
                "iot:CreateJob",
                "iot:CreateKeysAndCertificate",
                "iot:CreateOTAUpdate",
                "iot:CreatePolicy",
                "iot:CreatePolicyVersion",
                "iot:CreateRoleAlias",
                "iot:CreateStream",
                "iot:CreateThing",
                "iot:CreateThingGroup",
                "iot:CreateThingType",
                "iot:CreateTopicRule",
                "iot:DeleteAuthorizer",
                "iot:DeleteCACertificate",
                "iot:DeleteCertificate",
                "iot:DeleteJob",
                "iot:DeleteJobExecution",
                "iot:DeleteOTAUpdate",
                "iot:DeletePolicy",
                "iot:DeletePolicyVersion",
                "iot:DeleteRegistrationCode",
                "iot:DeleteRoleAlias",
                "iot:DeleteStream",
                "iot:DeleteThing",
                "iot:DeleteThingGroup",
                "iot:DeleteThingType",
                "iot:DeleteTopicRule",
                "iot:DeleteV2LoggingLevel",
                "iot:DeprecateThingType",
                "iot:DescribeAuthorizer",
                "iot:DescribeCACertificate",
                "iot:DescribeCertificate",
                "iot:DescribeDefaultAuthorizer",
                "iot:DescribeEndpoint",
                "iot:DescribeEventConfigurations",
                "iot:DescribeIndex",
                "iot:DescribeJob",
                "iot:DescribeJobExecution",
                "iot:DescribeRoleAlias",
                "iot:DescribeStream",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingRegistrationTask",
                "iot:DescribeThingType",
                "iot:DetachPolicy",
                "iot:DetachPrincipalPolicy",
                "iot:DetachThingPrincipal",
                "iot:DisableTopicRule",
                "iot:EnableTopicRule",
                "iot:GetEffectivePolicies",
                "iot:GetIndexingConfiguration",
                "iot:GetJobDocument",
                "iot:GetLoggingOptions",
                "iot:GetOTAUpdate",
                "iot:GetPolicy",
                "iot:GetPolicyVersion",
                "iot:GetRegistrationCode",
                "iot:GetTopicRule",
                "iot:GetV2LoggingOptions",
                "iot:ListAttachedPolicies",
                "iot:ListAuthorizers",
                "iot:ListCACertificates",
                "iot:ListCertificates",
                "iot:ListCertificatesByCA",
                "iot:ListIndices",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:ListJobs",
                "iot:ListOTAUpdates",
                "iot:ListOutgoingCertificates",
                "iot:ListPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPolicyVersions",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListRoleAliases",
                "iot:ListStreams",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroups",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:ListThingRegistrationTaskReports",
                "iot:ListThingRegistrationTasks",
                "iot:ListThings",
                "iot:ListThingsInThingGroup",
                "iot:ListThingTypes",
                "iot:ListTopicRules",
                "iot:ListV2LoggingLevels",
                "iot:RegisterCACertificate",
                "iot:RegisterCertificate",
                "iot:RegisterThing",
                "iot:RejectCertificateTransfer",
                "iot:RemoveThingFromThingGroup",
                "iot:ReplaceTopicRule",
                "iot:SearchIndex",
                "iot:SetDefaultAuthorizer",
                "iot:SetDefaultPolicyVersion",
                "iot:SetLoggingOptions",
                "iot:SetV2LoggingLevel",
                "iot:SetV2LoggingOptions",
                "iot:StartThingRegistrationTask",
                "iot:StopThingRegistrationTask",
                "iot:TestAuthorization",
                "iot:TestInvokeAuthorizer",
                "iot:TransferCertificate",
                "iot:UpdateAuthorizer",
                "iot:UpdateCACertificate",
                "iot:UpdateCertificate",
                "iot:UpdateEventConfigurations",
                "iot:UpdateIndexingConfiguration",
                "iot:UpdateRoleAlias",
                "iot:UpdateStream",
                "iot:UpdateThing",
                "iot:UpdateThingGroup",
                "iot:UpdateThingGroupsForThing",
                "iot:UpdateAccountAuditConfiguration",
                "iot:DescribeAccountAuditConfiguration",
                "iot:DeleteAccountAuditConfiguration",
                "iot:StartOnDemandAuditTask",
                "iot:CancelAuditTask",
                "iot:DescribeAuditTask",
                "iot:ListAuditTasks",
                "iot:CreateScheduledAudit",
                "iot:UpdateScheduledAudit",
                "iot:DeleteScheduledAudit",
                "iot:DescribeScheduledAudit",
                "iot:ListScheduledAudits",
                "iot:ListAuditFindings",
                "iot:CreateSecurityProfile",
                "iot:DescribeSecurityProfile",
                "iot:UpdateSecurityProfile",
                "iot:DeleteSecurityProfile",
                "iot:AttachSecurityProfile",
                "iot:DetachSecurityProfile",
                "iot:ListSecurityProfiles",
                "iot:ListSecurityProfilesForTarget",
                "iot:ListTargetsForSecurityProfile",
                "iot:ListActiveViolations",
                "iot:ListViolationEvents",
                "iot:ValidateSecurityProfileBehaviors"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS politique gérée : AWSIo TConfig ReadOnlyAccess
<a name="security-iam-awsmanpol-AWSIoTConfigReadOnlyAccess"></a>





Vous pouvez associer la politique `AWSIoTConfigReadOnlyAccess` à vos identités IAM.



Cette politique accorde les autorisations d'identité associées qui permettent d'accéder en lecture seule à toutes les opérations de configuration AWS IoT . Pour consulter cette politique dans le AWS Management Console, voir [AWSIoTConfigReadOnlyAccess](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigReadOnlyAccess$jsonEditor?section=permissions).



**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes.




+ `iot` – Effectuez des opérations en lecture seule sur les actions de configuration IoT.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:DescribeAuthorizer",
                "iot:DescribeCACertificate",
                "iot:DescribeCertificate",
                "iot:DescribeDefaultAuthorizer",
                "iot:DescribeEndpoint",
                "iot:DescribeEventConfigurations",
                "iot:DescribeIndex",
                "iot:DescribeJob",
                "iot:DescribeJobExecution",
                "iot:DescribeRoleAlias",
                "iot:DescribeStream",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingRegistrationTask",
                "iot:DescribeThingType",
                "iot:GetEffectivePolicies",
                "iot:GetIndexingConfiguration",
                "iot:GetJobDocument",
                "iot:GetLoggingOptions",
                "iot:GetOTAUpdate",
                "iot:GetPolicy",
                "iot:GetPolicyVersion",
                "iot:GetRegistrationCode",
                "iot:GetTopicRule",
                "iot:GetV2LoggingOptions",
                "iot:ListAttachedPolicies",
                "iot:ListAuthorizers",
                "iot:ListCACertificates",
                "iot:ListCertificates",
                "iot:ListCertificatesByCA",
                "iot:ListIndices",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:ListJobs",
                "iot:ListOTAUpdates",
                "iot:ListOutgoingCertificates",
                "iot:ListPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPolicyVersions",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListRoleAliases",
                "iot:ListStreams",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroups",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:ListThingRegistrationTaskReports",
                "iot:ListThingRegistrationTasks",
                "iot:ListThings",
                "iot:ListThingsInThingGroup",
                "iot:ListThingTypes",
                "iot:ListTopicRules",
                "iot:ListV2LoggingLevels",
                "iot:SearchIndex",
                "iot:TestAuthorization",
                "iot:TestInvokeAuthorizer",
                "iot:DescribeAccountAuditConfiguration",
                "iot:DescribeAuditTask",
                "iot:ListAuditTasks",
                "iot:DescribeScheduledAudit",
                "iot:ListScheduledAudits",
                "iot:ListAuditFindings",
                "iot:DescribeSecurityProfile",
                "iot:ListSecurityProfiles",
                "iot:ListSecurityProfilesForTarget",
                "iot:ListTargetsForSecurityProfile",
                "iot:ListActiveViolations",
                "iot:ListViolationEvents",
                "iot:ValidateSecurityProfileBehaviors"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS politique gérée : AWSIo TData Accès
<a name="security-iam-awsmanpol-AWSIoTDataAccess"></a>





Vous pouvez associer la politique `AWSIoTDataAccess` à vos identités IAM.



Cette politique accorde les autorisations d'identité associées qui permettent d'accéder à toutes les opérations de AWS IoT données. Les opérations sur les données envoient des données via les protocoles MQTT ou HTTP. Pour afficher cette politique dans AWS Management Console, veuillez consulter [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDataAccess?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDataAccess?section=permissions).



**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes.




+ `iot`— Récupérez AWS IoT les données et autorisez un accès complet aux actions AWS IoT de messagerie.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect",
                "iot:Publish",
                "iot:Subscribe",
                "iot:Receive",
                "iot:GetThingShadow",
                "iot:UpdateThingShadow",
                "iot:DeleteThingShadow",
                "iot:ListNamedShadowsForThing"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS politique gérée : AWSIo TFull Accès
<a name="security-iam-awsmanpol-AWSIoTFullAccess"></a>





Vous pouvez associer la politique `AWSIoTFullAccess` à vos identités IAM.



Cette politique accorde les autorisations d'identité associées qui permettent d'accéder à toutes les opérations de configuration et de messagerie AWS IoT . Pour consulter cette politique dans le AWS Management Console, voir [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTFullAccess?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTFullAccess?section=permissions).



**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes.




+ `iot`— Récupérez AWS IoT les données et autorisez un accès complet aux actions AWS IoT de configuration et de messagerie.
+ `iotjobsdata`— Récupérez les données des AWS IoT tâches et autorisez un accès complet aux opérations de l'API du plan de données des AWS IoT tâches.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:*",
                "iotjobsdata:*"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS politique gérée : AWSIo TLogging
<a name="security-iam-awsmanpol-AWSIoTLogging"></a>





Vous pouvez associer la politique `AWSIoTLogging` à vos identités IAM.



Cette politique accorde les autorisations d'identité associées qui permettent d'accéder à la création de groupes Amazon CloudWatch Logs et à la diffusion des journaux vers les groupes. Cette politique est liée à votre rôle de CloudWatch journalisation. Pour consulter cette politique dans le AWS Management Console, voir [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTLogging?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTLogging?section=permissions).



**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes.




+ `logs`— Récupère CloudWatch les journaux. Permet également de créer des groupes de CloudWatch journaux et de diffuser des journaux vers les groupes.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy",
                "logs:GetLogEvents",
                "logs:DeleteLogStream"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

## AWS politique gérée : AWSIo TOTAUpdate
<a name="security-iam-awsmanpol-AWSIoTOTAUpdate"></a>





Vous pouvez associer la politique `AWSIoTOTAUpdate` à vos identités IAM.



Cette politique accorde les autorisations d'identité associées qui permettent d'accéder à la création de AWS IoT tâches, aux tâches de signature de AWS IoT code et à la description des tâches de signature de AWS code. Pour consulter cette politique dans le AWS Management Console, voir [`AWSIoTOTAUpdate`.](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTOTAUpdate?section=permissions)



**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes.




+ `iot`— Créez des AWS IoT tâches et des tâches de signature de code.
+ `signer`— Réalise la création de tâches de signature de AWS code.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iot:CreateJob",
            "signer:DescribeSigningJob"
        ],
        "Resource": "*"
    }
}
```

## AWS politique gérée : AWSIo TRule Actions
<a name="security-iam-awsmanpol-AWSIoTRuleActions"></a>





Vous pouvez associer la politique `AWSIoTRuleActions` à vos identités IAM.



Cette politique accorde les autorisations d'identité associées qui permettent d'accéder à toutes les informations Service AWS prises en charge dans les actions de AWS IoT règles. Pour consulter cette politique dans le AWS Management Console, voir [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTRuleActions?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTRuleActions?section=permissions).



**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes.




+ `iot` - Effectuez des actions pour publier des messages d’action de la règle.
+ `dynamodb` - Insérez un message dans un tableau DynamoDB ou divisez un message en plusieurs colonnes dans un tableau DynamoDB.
+ `s3` - Stockez un objet dans un compartiment Amazon S3.
+ `kinesis` - Envoyez un message à un objet de flux Amazon Kinesis.
+ `firehose`- Insérez un enregistrement dans un objet de flux Firehose.
+ `cloudwatch`- Modifiez l'état de l' CloudWatch alarme ou envoyez les données du message au CloudWatch système métrique.
+ `sns` - Effectuez une opération pour publier une notification à l'aide d'Amazon SNS. Cette opération est limitée aux rubriques AWS IoT SNS.
+ `sqs` - Insérez un message à ajouter à la file d'attente SQS.
+ `es`- Envoyez un message au OpenSearch service Service.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "dynamodb:PutItem",
            "kinesis:PutRecord",
            "iot:Publish",
            "s3:PutObject",
            "sns:Publish",
            "sqs:SendMessage*",
            "cloudwatch:SetAlarmState",
            "cloudwatch:PutMetricData",
            "es:ESHttpPut",
            "firehose:PutRecord"
        ],
        "Resource": "*"
    }
}
```

## AWS politique gérée : AWSIo TThings enregistrement
<a name="security-iam-awsmanpol-AWSIoTThingsRegistration"></a>





Vous pouvez associer la politique `AWSIoTThingsRegistration` à vos identités IAM.



Cette politique accorde les autorisations d'identité associées qui permettent d'enregistrer des éléments en masse à l'aide de l'API `StartThingRegistrationTask`. Cette stratégie peut affecter le traitement et le stockage des données. Pour consulter cette politique dans le AWS Management Console, voir [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTThingsRegistration?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTThingsRegistration?section=permissions).



**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes.




+ `iot` - Effectuez des actions pour créer des éléments et joindre des politiques et des certificats lors d'un enregistrement groupé.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:AddThingToThingGroup",
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:AttachThingPrincipal",
                "iot:CreateCertificateFromCsr",
                "iot:CreatePolicy",
                "iot:CreateThing",
                "iot:DescribeCertificate",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingType",
                "iot:DetachPolicy",
                "iot:DetachThingPrincipal",
                "iot:GetPolicy",
                "iot:ListAttachedPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:RegisterCertificate",
                "iot:RegisterThing",
                "iot:RemoveThingFromThingGroup",
                "iot:UpdateCertificate",
                "iot:UpdateThing",
                "iot:UpdateThingGroupsForThing",
                "iot:AddThingToBillingGroup",
                "iot:DescribeBillingGroup",
                "iot:RemoveThingFromBillingGroup"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```





## AWS IoT mises à jour des politiques AWS gérées
<a name="security-iam-awsmanpol-updates"></a>



Consultez les détails des mises à jour des politiques AWS gérées AWS IoT depuis que ce service a commencé à suivre ces modifications. Pour recevoir des alertes automatiques concernant les modifications apportées à cette page, abonnez-vous au flux RSS sur la page Historique du AWS IoT document.




| Modifier | Description | Date | 
| --- | --- | --- | 
|  [AWSIoTFullAccès](#security-iam-awsmanpol-AWSIoTFullAccess) — Mise à jour d'une politique existante  |  AWS IoT a ajouté de nouvelles autorisations pour permettre aux utilisateurs d'accéder aux opérations de l'API du plan de données AWS IoT Jobs à l'aide du protocole HTTP. Un nouveau préfixe de politique IAM vous fournit un contrôle d'accès plus précis pour accéder aux points de terminaison du plan de données AWS IoT Jobs. `iotjobsdata:` Pour les opérations de l'API du plan de contrôle, vous utilisez toujours le préfixe `iot:`. Pour de plus amples informations, veuillez consulter [AWS IoT Core politiques pour le protocole HTTPS](iot-data-plane-jobs.md#iot-jobs-data-http).  | 11 mai 2022 | 
|  AWS IoT a commencé à suivre les modifications  |  AWS IoT a commencé à suivre les modifications apportées AWS à ses politiques gérées.  | 11 mai 2022 | 

# Résolution des problèmes AWS IoT d'identité et d'accès
<a name="security_iam_troubleshoot"></a>

Utilisez les informations suivantes pour vous aider à diagnostiquer et à résoudre les problèmes courants que vous pouvez rencontrer lorsque vous travaillez avec AWS IoT IAM.

**Topics**
+ [Je ne suis pas autorisé à effectuer une action dans AWS IoT](#security_iam_troubleshoot-no-permissions)
+ [Je ne suis pas autorisé à effectuer iam : PassRole](#security_iam_troubleshoot-passrole)
+ [Je souhaite permettre à des personnes extérieures Compte AWS à moi d'accéder à mes AWS IoT ressources](#security_iam_troubleshoot-cross-account-access)

## Je ne suis pas autorisé à effectuer une action dans AWS IoT
<a name="security_iam_troubleshoot-no-permissions"></a>

Si vous recevez une erreur qui indique que vous n’êtes pas autorisé à effectuer une action, vos politiques doivent être mises à jour afin de vous permettre d’effectuer l’action.

L'exemple d'erreur suivant se produit lorsque l'utilisateur IAM, `mateojackson` , tente d'utiliser la console pour afficher les détails d'une ressource d'objet, mais ne dispose pas des autorisations `iot:DescribeThing` nécessaires.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iot:DescribeThing on resource: MyIoTThing
```

Dans ce cas, la politique qui s'applique à l'utilisateur `mateojackson` doit être mise à jour pour autoriser l'accès à la ressource de l’objet à l'aide de l'action `iot:DescribeThing`. 

Si vous avez besoin d'aide, contactez votre AWS administrateur. Votre administrateur vous a fourni vos informations d’identification de connexion.

Utilisation de AWS IoT Device Advisor  
Si vous utilisez AWS IoT Device Advisor, l'exemple d'erreur suivant se produit lorsque l'utilisateur `mateojackson` essaie d'utiliser la console pour consulter les détails relatifs à la définition d'une suite, mais qu'il n'en a pas les `iotdeviceadvisor:GetSuiteDefinition` autorisations.  

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iotdeviceadvisor:GetSuiteDefinition on resource: MySuiteDefinition
```
Dans ce cas, la politique de l'utilisateur `mateojackson` doit être mise à jour pour autoriser l'accès à la ressource *`MySuiteDefinition`* à l'aide de l'action `iotdeviceadvisor:GetSuiteDefinition`.

## Je ne suis pas autorisé à effectuer iam : PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Si vous recevez une erreur selon laquelle vous n’êtes pas autorisé à exécuter `iam:PassRole` l’action, vos stratégies doivent être mises à jour afin de vous permettre de transmettre un rôle à AWS IoT.

Certains vous Services AWS permettent de transmettre un rôle existant à ce service au lieu de créer un nouveau rôle de service ou un rôle lié à un service. Pour ce faire, vous devez disposer des autorisations nécessaires pour transmettre le rôle au service.

L’exemple d’erreur suivant se produit lorsqu’un utilisateur IAM nommé `marymajor` essaie d’utiliser la console pour exécuter une action dans AWS IoT. Toutefois, l'action nécessite que le service ait des autorisations accordées par une fonction de service. Mary n'est pas autorisée à transmettre le rôle au service.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

Dans ce cas, les politiques de Mary doivent être mises à jour pour lui permettre d’exécuter l’action `iam:PassRole`.

Si vous avez besoin d'aide, contactez votre AWS administrateur. Votre administrateur vous a fourni vos informations d’identification de connexion.

## Je souhaite permettre à des personnes extérieures Compte AWS à moi d'accéder à mes AWS IoT ressources
<a name="security_iam_troubleshoot-cross-account-access"></a>

Vous pouvez créer un rôle que les utilisateurs provenant d’autres comptes ou les personnes extérieures à votre organisation pourront utiliser pour accéder à vos ressources. Vous pouvez spécifier qui est autorisé à assumer le rôle. Pour les services qui prennent en charge les politiques basées sur les ressources ou les listes de contrôle d'accès (ACLs), vous pouvez utiliser ces politiques pour autoriser les utilisateurs à accéder à vos ressources.

Pour plus d’informations, consultez les éléments suivants :
+ Pour savoir si ces fonctionnalités sont prises AWS IoT en charge, consultez[Comment AWS IoT fonctionne avec IAM](security_iam_service-with-iam.md).
+ Pour savoir comment fournir l'accès à vos ressources sur celles Comptes AWS que vous possédez, consultez la section [Fournir l'accès à un utilisateur IAM dans un autre utilisateur Compte AWS que vous possédez](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) dans le Guide de l'*utilisateur IAM*.
+ Pour savoir comment fournir l'accès à vos ressources à des tiers Comptes AWS, consultez la section [Fournir un accès à des ressources Comptes AWS détenues par des tiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) dans le *guide de l'utilisateur IAM*.
+ Pour savoir comment fournir un accès par le biais de la fédération d’identité, consultez [Fournir un accès à des utilisateurs authentifiés en externe (fédération d’identité)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) dans le *Guide de l’utilisateur IAM*.
+ Pour en savoir plus sur la différence entre l’utilisation des rôles et des politiques basées sur les ressources pour l’accès intercompte, consultez [Accès intercompte aux ressources dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le *Guide de l’utilisateur IAM*.

# Journalisation et surveillance
<a name="security-logging"></a>

La surveillance joue un rôle important dans le maintien de la fiabilité, de la disponibilité AWS IoT et des performances de vos AWS solutions. Vous devez collecter des données de surveillance provenant de toutes les parties de votre AWS solution afin de pouvoir corriger plus facilement une défaillance multipoint, le cas échéant. Pour de plus amples informations sur les procédures de journalisation et de surveillance, veuillez consulter [Surveillance AWS IoT](monitoring_overview.md)

## Outils de supervision
<a name="monitoring_automated_manual"></a>

AWS fournit des outils que vous pouvez utiliser pour surveiller AWS IoT. Vous pouvez configurer certains de ces outils afin qu'ils effectuent la surveillance à votre place. Une intervention manuelle est nécessaire pour certains outils. Nous vous recommandons d’automatiser le plus possible les tâches de supervision.

### Outils de surveillance automatique
<a name="monitoring_automated_tools"></a>

Vous pouvez utiliser les outils de surveillance automatique suivants pour surveiller AWS IoT et signaler tout problème :
+ **Amazon CloudWatch Alarms** — Surveillez une seule métrique sur une période que vous spécifiez et effectuez une ou plusieurs actions en fonction de la valeur de la métrique par rapport à un seuil donné sur un certain nombre de périodes. L'action est une notification envoyée à une rubrique Amazon Simple Notification Service (Amazon SNS) ou à une politique Amazon EC2 Auto Scaling. CloudWatch les alarmes n'appellent pas d'actions simplement parce qu'elles sont dans un état particulier. L’état doit avoir changé et avoir été maintenu pendant un nombre de périodes spécifié. Pour de plus amples informations, veuillez consulter [Surveillez les AWS IoT alarmes et les métriques à l'aide d'Amazon CloudWatch](monitoring-cloudwatch.md).
+ **Amazon CloudWatch Logs** — Surveillez, stockez et accédez à vos fichiers journaux depuis AWS CloudTrail ou d'autres sources. Amazon CloudWatch Logs vous permet également de voir les étapes critiques des scénarios de test AWS IoT Device Advisor, les événements générés et les messages MQTT envoyés depuis vos appareils ou AWS IoT Core pendant l'exécution des tests. Ces journaux permettent de déboguer et de prendre des actions correctives sur vos appareils. Pour plus d'informations, consultez [Surveiller AWS IoT à l'aide CloudWatch des journaux](cloud-watch-logs.md) Pour plus d'informations sur l'utilisation d'Amazon CloudWatch, consultez la section [Surveillance des fichiers journaux](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) dans le *guide de CloudWatch l'utilisateur Amazon*.
+ **Amazon CloudWatch Events** : associez les événements et acheminez-les vers une ou plusieurs fonctions ou flux cibles afin d'apporter des modifications, de recueillir des informations d'état et de prendre des mesures correctives. Pour plus d'informations, consultez la section [Qu'est-ce qu'Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchEvents.html) dans le *guide de CloudWatch l'utilisateur Amazon*.
+ **AWS CloudTrail Surveillance des journaux** : partagez les fichiers journaux entre les comptes, surveillez les fichiers CloudTrail CloudWatch journaux en temps réel en les envoyant à Logs, écrivez des applications de traitement des journaux en Java et vérifiez que vos fichiers journaux n'ont pas changé après leur livraison par CloudTrail. Pour plus d'informations, consultez également [Journalisation des appels AWS IoT d'API à l'aide AWS CloudTrail](iot-using-cloudtrail.md) la section [Utilisation des fichiers CloudTrail journaux](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html) dans le *guide de AWS CloudTrail l'utilisateur*. 

### Outils de surveillance manuelle
<a name="monitoring_manual_tools"></a>

Une autre partie importante de la surveillance AWS IoT consiste à surveiller manuellement les éléments non couverts par les CloudWatch alarmes. Le tableau de bord AWS IoT CloudWatch, et les autres tableaux de bord de la console de AWS service, fournissent une at-a-glance vue d'ensemble de l'état de votre AWS environnement. Nous vous recommandons de vérifier également les fichiers journaux AWS IoT.
+ AWS IoT le tableau de bord affiche :
  + Certificats CA
  + Certificates
  + Stratégies
  + Rules
  + Objets
+ CloudWatch la page d'accueil montre :
  + Alarmes et statuts en cours.
  + Graphiques des alarmes et des ressources.
  + Statut d'intégrité du service.

  Vous pouvez utiliser CloudWatch pour effectuer les opérations suivantes : 
  + Créer des [tableaux de bord personnalisés](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CloudWatch_Dashboards.html) pour surveiller les services de votre choix.
  + Données de métriques de graphiques pour résoudre les problèmes et découvrir les tendances.
  + Recherchez et parcourez tous les indicateurs de vos AWS ressources.
  + Créer et Modifier des alarmes pour être informé des problèmes.

# Validation de conformité pour AWS IoT Core
<a name="compliance"></a>

Pour savoir si un [programme Services AWS de conformité Service AWS s'inscrit dans le champ d'application de programmes de conformité](https://aws.amazon.com/compliance/services-in-scope/) spécifiques, consultez Services AWS la section de conformité et sélectionnez le programme de conformité qui vous intéresse. Pour des informations générales, voir Programmes de [AWS conformité Programmes AWS](https://aws.amazon.com/compliance/programs/) de .

Vous pouvez télécharger des rapports d'audit tiers à l'aide de AWS Artifact. Pour plus d'informations, voir [Téléchargement de rapports dans AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Votre responsabilité en matière de conformité lors de l'utilisation Services AWS est déterminée par la sensibilité de vos données, les objectifs de conformité de votre entreprise et les lois et réglementations applicables. Pour plus d'informations sur votre responsabilité en matière de conformité lors de l'utilisation Services AWS, consultez [AWS la documentation de sécurité](https://docs.aws.amazon.com/security/).

# La résilience au cœur de AWS l'IoT
<a name="disaster-recovery-resiliency"></a>

L'infrastructure AWS mondiale est construite autour de Région AWS s et de zones de disponibilité. Région AWS s fournissent plusieurs zones de disponibilité physiquement séparées et isolées, connectées par un réseau à faible latence, à haut débit et hautement redondant. Avec les zones de disponibilité, vous pouvez concevoir et exploiter des applications et des bases de données qui basculent automatiquement d’une zone de disponibilité à l’autre sans interruption. Les zones de disponibilité sont plus hautement disponibles, tolérantes aux pannes et évolutives que les infrastructures traditionnelles à un ou plusieurs centres de données. 

Pour plus d'informations sur les Région AWS zones de disponibilité et les zones de disponibilité, consultez la section [Infrastructure AWS globale](https://aws.amazon.com/about-aws/global-infrastructure/).

AWS IoT Core stocke des informations sur vos appareils dans le registre des appareils. Il stocke également les certificats d'autorité de certification, les certificats d'appareil et les données de shadow d'appareil. En cas de panne matérielle ou réseau, ces données sont automatiquement répliquées dans les zones de disponibilité mais pas dans les régions.

AWS IoT Core publie des événements MQTT lorsque le registre des appareils est mis à jour. Vous pouvez utiliser ces messages pour sauvegarder vos données de registre et les enregistrer quelque part, par exemple dans un tableau DynamoDB. Il vous incombe de sauvegarder les certificats AWS IoT Core créés pour vous ou ceux que vous créez vous-même. Device Shadow stocke les données d'état relatives à vos appareils et peut être renvoyée lorsqu'un appareil revient en ligne. AWS IoT Device Advisor stocke les informations relatives à la configuration de votre suite de tests. Ces données sont automatiquement répliquées en cas de défaillance du matériel ou du réseau.

AWS IoT Core les ressources sont spécifiques à une région et ne sont pas répliquées à Régions AWS moins que vous ne le fassiez spécifiquement.

Pour plus d'informations sur les bonnes pratiques de Sécurité, consultez [Bonnes pratiques de sécurité dans AWS IoT Core](security-best-practices.md).

# Utilisation AWS IoT Core avec les points de terminaison VPC de l'interface
<a name="IoTCore-VPC"></a>

[Avec AWS IoT Core, vous pouvez créer des points de terminaison du [plan de contrôle IoT et des points de terminaison](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro)[de données IoT au sein de votre cloud privé virtuel (VPC) en utilisant des points](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html) de terminaison VPC d'interface.](https://docs.aws.amazon.com//vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) Les points de terminaison VPC d'interface sont alimentés par AWS PrivateLink une AWS technologie que vous pouvez utiliser pour accéder aux services exécutés à l'aide AWS d'adresses IP privées. Pour en savoir plus, consultez [Amazon Virtual Private Cloud](https://docs.aws.amazon.com//AmazonVPC/latest/UserGuide/VPC_Introduction.html). 

Pour connecter des appareils sur le terrain sur des réseaux distants, tels qu'un réseau d'entreprise, à votre Amazon VPC, reportez-vous aux options répertoriées dans la matrice de connectivité [Network-to-Amazon VPC](https://docs.aws.amazon.com//whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html). 

**Topics**
+ [Création de points de terminaison VPC pour le plan de contrôle AWS IoT Core](#Create-VPC-endpoints-CP)
+ [Création de points de terminaison VPC pour le plan de données AWS IoT Core](#Create-VPC-endpoints)
+ [Création de points de terminaison VPC pour le fournisseur d'informations d'identification AWS IoT Core](#Create-VPC-endpoints-credential-provider)
+ [Création d'un point de terminaison d'interface Amazon VPC](#Create-VPC-endpoints-core-create-vpc)
+ [Configuration d'une zone hébergée privée](#connect-iot-core-create-phz-lns)
+ [Contrôle de l'accès aux points de AWS IoT Core terminaison via VPC](#Control-VPC-access)
+ [Limitations](#VPC-limitations)
+ [Dimensionnement des points de terminaison VPC avec AWS IoT Core](#Scaling-VPC-endpoints)
+ [Utiliser des domaines personnalisés avec des points de terminaison d'un VPC](#VPC-custom-domains)
+ [Disponibilité des points de terminaison VPC pour AWS IoT Core](#VPC-availability)
+ [Utilisation d' AWS IoT Device Management un tunneling sécurisé avec des points de terminaison VPC d'interface](IoTCore-ST-VPC.md)

## Création de points de terminaison VPC pour le plan de contrôle AWS IoT Core
<a name="Create-VPC-endpoints-CP"></a>

Vous pouvez créer un point de terminaison VPC pour l'API du plan AWS IoT Core de contrôle afin de connecter vos appareils à des AWS IoT services et à d'autres AWS services. Pour commencer à utiliser les points de terminaison VPC, [créez un point de terminaison VPC d'interface](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) et sélectionnez-le comme service. AWS IoT Core AWS Si vous utilisez la CLI, appelez d'abord [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)pour vous assurer que vous choisissez une zone de disponibilité où elle AWS IoT Core est présente dans votre environnement Région AWS. Par exemple, dans us-east-1, cette commande ressemblerait à :

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.api
```

Consultez les instructions détaillées ci-dessous pour [créer un point de terminaison d'interface Amazon VPC](#Create-VPC-endpoints-core-create-vpc) pour le plan de AWS IoT Core contrôle.

## Création de points de terminaison VPC pour le plan de données AWS IoT Core
<a name="Create-VPC-endpoints"></a>

Vous pouvez créer un point de terminaison VPC pour l'API du plan de AWS IoT Core données afin de connecter vos appareils à des AWS IoT services et à d'autres AWS services. Pour commencer à utiliser les points de terminaison VPC, [créez un point de terminaison VPC d'interface](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) et sélectionnez-le comme service. AWS IoT Core AWS Si vous utilisez la CLI, appelez d'abord [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)pour vous assurer que vous choisissez une zone de disponibilité où elle AWS IoT Core est présente dans votre environnement Région AWS. Par exemple, dans us-east-1, cette commande ressemblerait à :

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.data
```

**Note**  
La fonctionnalité VPC permettant de créer automatiquement un enregistrement DNS est désactivée. Pour vous connecter à ces points de terminaison, vous devez créer manuellement un enregistrement DNS privé. Pour plus d'informations sur les enregistrements DNS d'un VPC privé, consultez [DNS privé pour les points de terminaison d'interface](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Pour plus d'informations sur les limites du AWS IoT Core VPC, consultez. [Limitations](#VPC-limitations)

Pour connecter les clients MQTT aux interfaces du point de terminaison du VPC :
+ Vous devez créer manuellement des enregistrements DNS dans une zone hébergée privée attachée à votre VPC. Pour commencer, consultez [Création d'une zone hébergée privée](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ Dans votre zone hébergée privée, créez un enregistrement d'alias pour chaque adresse IP d'interface réseau élastique pour le point de terminaison VPC. Si vous disposez de plusieurs interfaces réseau IPs pour plusieurs points de terminaison VPC, créez des enregistrements DNS pondérés avec des pondérations égales pour tous les enregistrements pondérés. Ces adresses IP sont disponibles à partir de l'appel d'[DescribeNetworkInterfaces](https://docs.aws.amazon.com//AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API lorsqu'elles sont filtrées par l'ID du point de terminaison VPC dans le champ de description.

Consultez les instructions détaillées ci-dessous pour [créer un point de terminaison d'interface Amazon VPC](#Create-VPC-endpoints-core-create-vpc) et [configurer une zone hébergée privée](#connect-iot-core-create-phz-lns) pour le plan de AWS IoT Core données.

## Création de points de terminaison VPC pour le fournisseur d'informations d'identification AWS IoT Core
<a name="Create-VPC-endpoints-credential-provider"></a>

[Vous pouvez créer un point de terminaison VPC pour que le [fournisseur AWS IoT Core d'informations d'identification](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html) connecte les appareils à l'aide de l'authentification basée sur un certificat client et obtienne des informations d' AWS identification temporaires au AWS format Signature Version 4.](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_aws-signing.html) Pour commencer à utiliser les points de terminaison VPC pour le fournisseur AWS IoT Core d'informations d'identification, exécutez la commande [create-vpc-endpoint](https://docs.aws.amazon.com//cli/latest/reference/ec2/create-vpc-endpoint.html)CLI pour créer [un point de terminaison VPC d'interface](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) et sélectionnez AWS IoT Core le fournisseur d'informations d'identification comme service. AWS Pour vous assurer que vous choisissez une zone de disponibilité où elle AWS IoT Core est présente dans votre environnement Région AWS, vous devez d'abord exécuter la [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)commande. Par exemple, dans us-east-1, cette commande ressemblerait à :

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.credentials
```

**Note**  
La fonctionnalité VPC permettant de créer automatiquement un enregistrement DNS est désactivée. Pour vous connecter à ces points de terminaison, vous devez créer manuellement un enregistrement DNS privé. Pour plus d'informations sur les enregistrements DNS d'un VPC privé, consultez [DNS privé pour les points de terminaison d'interface](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Pour plus d'informations sur les limites du AWS IoT Core VPC, consultez. [Limitations](#VPC-limitations)

Pour connecter les clients HTTP aux interfaces du point de terminaison du VPC :
+ Vous devez créer manuellement des enregistrements DNS dans une zone hébergée privée attachée à votre VPC. Pour commencer, consultez [Création d'une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ Dans votre zone hébergée privée, créez un enregistrement d'alias pour chaque adresse IP d'interface réseau élastique pour le point de terminaison VPC. Si vous disposez de plusieurs interfaces réseau IPs pour plusieurs points de terminaison VPC, créez des enregistrements DNS pondérés avec des pondérations égales pour tous les enregistrements pondérés. Ces adresses IP sont disponibles à partir de l'appel d'[DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API lorsqu'elles sont filtrées par l'ID du point de terminaison VPC dans le champ de description.

Consultez les instructions détaillées ci-dessous pour [créer un point de terminaison d'interface Amazon VPC](#Create-VPC-endpoints-core-create-vpc) et [configurer une zone hébergée privée](#connect-iot-core-create-phz-lns) pour le fournisseur AWS IoT Core d'informations d'identification.

## Création d'un point de terminaison d'interface Amazon VPC
<a name="Create-VPC-endpoints-core-create-vpc"></a>

Vous pouvez créer un point de terminaison VPC d'interface pour vous connecter aux AWS services alimentés par. AWS PrivateLink Utilisez la procédure suivante pour créer un point de terminaison VPC d'interface qui se connecte au plan de AWS IoT Core données ou au fournisseur AWS IoT Core d'informations d'identification. Pour plus d'informations, consultez [Accéder à un AWS service à l'aide d'un point de terminaison VPC d'interface](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html). 

**Note**  
Les processus de création d'un point de terminaison d'interface Amazon VPC pour le plan de AWS IoT Core données et le fournisseur AWS IoT Core d'informations d'identification sont similaires, mais vous devez apporter des modifications spécifiques au point de terminaison pour que la connexion fonctionne.

 **Pour créer un point de terminaison d'un VPC d'interface à l'aide du point de terminaison du [VPC](https://console.aws.amazon.com/vpc/home#/endpoints) de la console** 

1. Accédez au **point de terminaison d'un [VPC](https://console.aws.amazon.com/vpc/home#/endpoints) de la console **, sous **Virtual private cloud** dans le menu de gauche, choisissez **point de terminaison ** puis **Créer un point de terminaison **. 

1. Dans la page ** Create Endpoint (Créer un point de terminaison**, spécifiez les informations suivantes.
   + Choisissez **Service AWS s** pour ** la catégorie de service **. 
   + Pour **Nom du service**, effectuez une recherche en saisissant le mot-clé `iot`. Dans la liste des services `iot` affichés, choisissez le point de terminaison. 

     Si vous créez un point de terminaison VPC pour le plan de AWS IoT Core contrôle, choisissez le point de terminaison d'API du plan de AWS IoT Core contrôle pour votre. Région AWS Le format du nom du point de terminaison est `com.amazonaws.region.iot.api`. 

     Si vous créez un point de terminaison VPC pour le plan de AWS IoT Core données, choisissez le point de terminaison de l'API du plan de AWS IoT Core données pour votre région. Le format du nom du point de terminaison est `com.amazonaws.region.iot.data`. 

     Si vous créez un point de terminaison VPC pour le fournisseur AWS IoT Core d'informations d'identification, choisissez le point de terminaison du fournisseur AWS IoT Core d'informations d'identification pour votre région. Le format du nom du point de terminaison est `com.amazonaws.region.iot.credentials`. 

     Si vous créez un point de terminaison VPC pour les régions FIPS (Federal Information Processing Standard), choisissez le point de terminaison d'API FIPS correspondant à votre. Région AWS Le format du nom du point de terminaison est `com.amazonaws.region.iot-fips.api`. C'est uniquement pour le plan de contrôle.
**Note**  
Le nom du service pour le plan de AWS IoT Core données dans la région de Chine sera au format suivant`cn.com.amazonaws.region.iot.data`. Le nom du service pour AWS IoT Core le plan de contrôle dans la région de Chine sera au format suivant`com.amazonaws.region.iot.api`. 
   + Pour le **VPC** et les **sous-réseaux, choisissez** le VPC dans lequel vous souhaitez créer le point de terminaison et les zones de disponibilité (AZs) dans lesquelles vous souhaitez créer le réseau de points de terminaison.
   + Pour **Activer le nom DNS**, assurez-vous que l'**option Activer pour ce point de terminaison** n'est pas sélectionnée pour le plan de AWS IoT Core données et le fournisseur AWS IoT Core d'informations d'identification. Ni le plan AWS IoT Core de données ni le fournisseur AWS IoT Core d'informations d'identification ne prennent encore en charge les noms DNS privés.

     Pour AWS IoT Core le plan de contrôle, l'**option Activer le nom DNS** est sélectionnée par défaut. Cela garantit que toutes les demandes adressées aux points de terminaison publics du plan de AWS IoT Core contrôle seront acheminées via les points de terminaison VPC. Lorsque cette option est activée, il n'est pas nécessaire de configurer une zone hébergée privée.
   + Pour **(Groupe de sécurité)**, sélectionnez les groupes de sécurité que vous souhaitez associer aux interfaces réseau des points de terminaison.
   + En option, vous pouvez ajouter ou supprimer des balises. Les balises sont des paires nom-valeur que vous utilisez pour associer à votre point de terminaison. 

1. Pour créer votre point de terminaison VPC, choisissez **Créer un point de terminaison**. 

Après avoir créé le AWS PrivateLink point de terminaison, dans l'onglet **Détails** de votre point de terminaison, vous verrez une liste de noms DNS. Vous pouvez utiliser l'un de ces noms DNS que vous avez créés dans cette section pour [configurer votre zone hébergée privée](#connect-iot-core-create-phz-lns). Si vous utilisez le plan AWS IoT Core de contrôle, il n'est pas nécessaire de configurer une zone hébergée privée.

## Configuration d'une zone hébergée privée
<a name="connect-iot-core-create-phz-lns"></a>

**Note**  
Si vous utilisez le plan AWS IoT Core de contrôle et que vous avez sélectionné **Activer le nom DNS**, il n'est pas nécessaire de configurer une zone hébergée privée. Si vous le désactivez, vous devez suivre cette procédure pour configurer une zone hébergée privée.

Vous pouvez utiliser l'un de ces noms DNS que vous avez créés dans la section précédente pour configurer votre zone hébergée privée.

 **Pour le plan AWS IoT Core de données** 

Le nom DNS doit être le nom de configuration de votre domaine ou votre point de terminaison `IoT:Data-ATS`. Un exemple de nom DNS peut être : ` xxx-ats.data.iot.region.amazonaws.com`. 

 **Pour le fournisseur AWS IoT Core d'informations d'identification** 

Le nom DNS doit être votre point de terminaison `iot:CredentialProvider`. Un exemple de nom DNS peut être : ` xxxx.credentials.iot.region.amazonaws.com`. 

 **Pour le plan AWS IoT Core de contrôle** 

Le nom DNS doit être le point de terminaison AWS IoT Core de votre plan de contrôle. Un exemple de nom DNS pour le plan AWS IoT Core de contrôle est` xxxx.api.iot.region.amazonaws.com`. 

**Note**  
Les processus de configuration de la zone hébergée privée pour le plan de AWS IoT Core données et le fournisseur AWS IoT Core d'informations d'identification sont similaires, mais vous devez apporter des modifications spécifiques au point de terminaison pour que la connexion fonctionne.

### Créer une zone hébergée privée
<a name="connect-iot-core-create-phz-lns-private-hosted-zone"></a>

 **Pour créer une zone hébergée privée à l'aide de la console Route 53** 

1. Accédez à la console **Zones hébergées** [Route 53](https://console.aws.amazon.com/route53/v2/hostedzones#/) et choisissez **Créer une zone hébergée**. 

1. Dans la page **Créer une zone hébergée**, spécifiez les informations suivantes.
   + Pour **Nom de domaine**, entrez l'adresse du point de terminaison de votre `iot:Data-ATS` ou de votre point de terminaison `iot:CredentialProvider`. La commande CLI AWS suivante montre comment obtenir le point de terminaison via un réseau public : `aws iot describe-endpoint --endpoint-type iot:Data-ATS`, ou `aws iot describe-endpoint --endpoint-type iot:CredentialProvider`. 
**Note**  
Si vous utilisez des domaines personnalisés, consultez [Utilisation de domaines personnalisés avec des points de terminaison d'un VPC](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-custom-domains). Les domaines personnalisés ne sont pas pris en charge par le fournisseur AWS IoT Core d'identifiants.
   + Pour **Type**, choisissez **Zone hébergée privée**. 
   + En option, vous pouvez ajouter ou supprimer des balises à associer à votre zone hébergée.

1. Pour créer votre zone hébergée privée, choisissez **Créer une zone hébergée**. 

Pour plus d’informations, consultez [Création d’une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

### Créer un enregistrement
<a name="connect-iot-core-create-phz-lns-create-record"></a>

Après avoir créé une zone hébergée privée, vous pouvez créer un enregistrement indiquant au DNS sur la façon dont vous souhaitez acheminer le trafic vers ce domaine. 

 **Pour créer un enregistrement** 

1. Dans la liste des zones hébergées affichée, choisissez la zone hébergée privée que vous avez créée précédemment et sur **Créer un enregistrement**. 

1. Utilisez la méthode d'assistance pour créer l'enregistrement. Si la console vous présente la méthode de **Création rapide**, choisissez **Passer à l'assistant**. 

1. Choisissez **Routage simple** pour **Stratégie de routage**, puis sur **Suivant**. 

1. Dans la page **Configurer les enregistrements**, choisissez **Définir un enregistrement simple**. 

1. Dans la page **Définir un enregistrement simple **:
   + Pour **Nom de l'enregistrement**, saisissez le point de terminaison `iot:Data-ATS` ou le point de terminaison `iot:CredentialProvider`. Cela doit être identique au nom de la zone hébergée privée.
   + Pour le **type d'enregistrement**, si vous ne souhaitez que le IPv4 support, conservez la valeur sous forme de`A - Routes traffic to an IPv4 address and some AWS resources`. Si vous ne souhaitez que du IPv6 support, conservez la valeur`AAAA - Routes traffic to an IPv6 address and some AWS resources`. Si vous souhaitez un support à double pile (les deux IPv4 IPv6), créez deux enregistrements (`A`et `AAAA` dans la zone hébergée) avec le même **nom d'enregistrement** et le même trafic **valeur/route vers**. 
   + Pour **Valeur/Route du trafic vers **, choisissez **Alias vers le point de terminaison d'un VPC**. Choisissez ensuite votre **Région**, puis Point de terminaison que vous avez créé précédemment, comme décrit dans la liste des points de terminaison [Création d'un point de terminaison d'interface Amazon VPC](#Create-VPC-endpoints-core-create-vpc) affichés.

1. Choisissez **Définir un enregistrement simple** pour créer votre enregistrement.

## Contrôle de l'accès aux points de AWS IoT Core terminaison via VPC
<a name="Control-VPC-access"></a>

[Vous pouvez restreindre l'accès aux appareils AWS IoT Core pour qu'il soit autorisé uniquement via le point de terminaison VPC en utilisant les clés contextuelles de condition VPC.](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) AWS IoT Core prend en charge les clés de contexte liées au VPC suivantes :
+  [SourceVpc](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc) 
+  [SourceVpce](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce) 
+  [VPCSourceIP](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip) 

**Note**  
AWS IoT Core ne prend pas en charge les [politiques de points de terminaison pour les points de terminaison VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policies). 

Par exemple, la politique suivante accorde l'autorisation de se connecter à AWS IoT Core l'aide d'un ID client correspondant au nom de l'objet et de publier sur n'importe quelle rubrique préfixée par le nom de l'objet, à condition que l'appareil se connecte à un point de terminaison VPC avec un identifiant de point de terminaison VPC particulier. Cette stratégie refuserait les tentatives de connexion à votre point de terminaison de données IoT public.

****  

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

## Limitations
<a name="VPC-limitations"></a>

[Les points de terminaison VPC sont actuellement pris en charge pour les points de terminaison du [plan de AWS IoT Core contrôle, les points de terminaison de AWS IoT Core données et les points](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro)[de terminaison des fournisseurs](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html#iot-connect-device-endpoints) d'informations d'identification.AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.htm) Les points de terminaison VPC ne sont pris en charge que pour les points de terminaison [FIPS (Federal Information Processing Standard) lors de l'utilisation du plan de contrôle](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-fips.html). AWS IoT Core 

### Limites des points de terminaison VPC du plan de contrôle IoT
<a name="VPC-limitations-iot-control"></a>

Cette section couvre les limites des points de terminaison VPC du plan de contrôle IoT.
+ Les points de terminaison d'un VPC serviront uniquement les certificats ATS.
+ Les domaines personnalisés ne sont pas pris en charge pour les points de terminaison du plan de contrôle.
+ Pour plus d'informations sur les politiques de sécurité FIPS, consultez la section Politiques de [sécurité FIPS](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/describe-ssl-policies.html#fips-security-policies). 

### Limites des points de terminaison d'un VPC de données IoT
<a name="VPC-limitations-iot-data"></a>

Cette section couvre les limitations des points de terminaison d'un VPC de données IoT.
+ Les périodes de maintien en vie MQTT sont limitées à 230 secondes. Les périodes de maintien en vie plus longues seront automatiquement réduites à 230 secondes.
+ Chaque point de terminaison d'un VPC prend en charge un total de 100 000 appareils connectés simultanément. Si vous avez besoin de plus de connexions, voir[Dimensionnement des points de terminaison VPC avec AWS IoT Core](#Scaling-VPC-endpoints).
+ Les points de terminaison d'un VPC serviront uniquement [les certificats ATS](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html), à l'exception des domaines personnalisés.
+  [Les politiques de point de terminaison d'un VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html) ne sont pas prises en charge.
+ Pour les points de terminaison VPC créés pour le plan de AWS IoT Core données, l'utilisation d'enregistrements DNS publics zonaux ou régionaux AWS IoT Core n'est pas prise en charge.

### Limites des points de terminaison du fournisseur d'informations d'identification
<a name="VPC-limitations-credential-provider"></a>

Cette section couvre les limitations des points de terminaison d'un VPC du fournisseur d'informations d'identification.
+ Les points de terminaison d'un VPC serviront uniquement les [certificats ATS](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html).
+  [Les politiques de point de terminaison d'un VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html) ne sont pas prises en charge.
+ Les domaines personnalisés ne sont pas pris en charge pour les points de terminaison du fournisseur d'informations d'identification.
+ Pour les points de terminaison VPC créés pour le fournisseur AWS IoT Core d'informations d'identification, l'utilisation d'enregistrements DNS publics zonaux ou régionaux AWS IoT Core n'est pas prise en charge.

## Dimensionnement des points de terminaison VPC avec AWS IoT Core
<a name="Scaling-VPC-endpoints"></a>

AWS IoT Core Les points de terminaison VPC d'interface sont limités à 100 000 appareils connectés sur un seul point de terminaison d'interface. Si votre cas d'utilisation nécessite davantage de connexions simultanées au courtier, nous vous recommandons d'utiliser plusieurs points de terminaison d'un VPC et de router manuellement vos appareils via vos points de terminaison d'interface. Lorsque vous créez des enregistrements DNS privés pour acheminer le trafic vers vos points de terminaison d’un VPC, assurez-vous de créer autant d'enregistrements pondérés que vous disposez de points de terminaison de VPC pour répartir le trafic sur vos multiples points de terminaison. 

## Utiliser des domaines personnalisés avec des points de terminaison d'un VPC
<a name="VPC-custom-domains"></a>

Si vous souhaitez utiliser des domaines personnalisés avec des points de terminaison d'un VPC, vous devez créer vos enregistrements de nom de domaine personnalisés dans une zone hébergée privée et créer des enregistrements de routage dans Route53. Pour plus d’informations, consultez [Création d’une zone hébergée privée](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

**Note**  
Les domaines personnalisés ne sont pris en charge que pour les points de terminaison de AWS IoT Core données.

## Disponibilité des points de terminaison VPC pour AWS IoT Core
<a name="VPC-availability"></a>

AWS IoT Core [Les points de terminaison VPC d'interface sont disponibles dans toutes AWS IoT Core les régions prises en charge.](https://aws.amazon.com//about-aws/global-infrastructure/regional-product-services/) AWS IoT Core Les points de terminaison VPC d'interface pour le fournisseur AWS IoT Core d'informations d'identification ne sont pas pris en charge dans la région Chine et. AWS GovCloud (US) Regions

# Utilisation d' AWS IoT Device Management un tunneling sécurisé avec des points de terminaison VPC d'interface
<a name="IoTCore-ST-VPC"></a>

AWS IoT Device Management le tunneling sécurisé prend en charge les points de terminaison VPC d'interface. Vous pouvez utiliser les points de terminaison VPC pour maintenir le trafic entre votre VPC et AWS IoT Secure Tunneling au sein du AWS réseau, sans avoir besoin d'une passerelle Internet, d'un périphérique NAT, d'une connexion VPN ou d'une connexion. AWS Direct Connect 

Les points de terminaison VPC d'interface sont alimentés par [AWS PrivateLink](https://docs.aws.amazon.com//vpc/latest/privatelink/what-is-privatelink.html)une technologie qui vous permet d'accéder à des services de manière privée en utilisant des adresses IP privées. Pour plus d'informations, consultez la section [Accès à un AWS service à l'aide d'un point de terminaison VPC d'interface](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) dans le AWS PrivateLink Guide. 

**Topics**
+ [Conditions préalables](#Create-ST-VPC-endpoints-prereq)
+ [Réception de notifications de tunnel via les points de terminaison VPC](#ST-VPC-Receive-notifications)
+ [Création de points de terminaison VPC pour un tunneling sécurisé](#Create-ST-VPC-endpoints-Create)
+ [Configuration des politiques de point de terminaison VPC sur le serveur proxy](#Create-ST-VPC-endpoints-Configure)
+ [Étapes suivantes](#Create-ST-VPC-endpoints-Next)

## Conditions préalables
<a name="Create-ST-VPC-endpoints-prereq"></a>

Avant de créer des points de terminaison VPC pour AWS IoT Secure Tunneling, vérifiez que vous disposez des éléments suivants :
+ Un AWS compte disposant des autorisations nécessaires pour créer des points de terminaison VPC.
+ Un VPC sur votre compte. AWS 
+ Compréhension des AWS IoT Device Management concepts de tunneling sécurisé.
+ Connaissance des politiques relatives aux points de terminaison VPC Gestion des identités et des accès AWS et (IAM)

## Réception de notifications de tunnel via les points de terminaison VPC
<a name="ST-VPC-Receive-notifications"></a>

Pour recevoir des notifications de tunnel via un point de terminaison VPC, vos appareils peuvent se connecter au plan de AWS IoT Core données via un point de terminaison VPC et s'abonner à la rubrique MQTT réservée au tunneling sécurisé.

Pour obtenir des instructions sur la création et la configuration d'un point de terminaison VPC dans le plan de AWS IoT Core données, consultez la section [Utilisation AWS IoT Core avec les points de terminaison VPC d'interface du guide du développeur](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html). AWS IoT 

## Création de points de terminaison VPC pour un tunneling sécurisé
<a name="Create-ST-VPC-endpoints-Create"></a>

Vous pouvez créer des points de terminaison VPC à la fois pour le plan de contrôle du tunneling sécurisé et pour le serveur proxy.

**Pour créer un point de terminaison VPC pour un tunneling sécurisé**

1. Suivez les étapes décrites dans la section [Création d'un point de terminaison d'interface](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) dans le manuel Amazon VPC Developer Guide

1. Pour **Nom du service**, choisissez l'une des options suivantes en fonction de votre type de point de terminaison :

**Plan de contrôle**
   + Norme : `com.amazonaws.<region>.iot.tunneling.api` 
   + FIPS (disponible dans les régions FIPS) : `com.amazonaws.<region>.iot-fips.tunneling.api` 

**Serveur proxy**
   + Norme : `com.amazonaws.<region>.iot.tunneling.data` 
   + FIPS (disponible dans les régions FIPS) : `com.amazonaws.<region>.iot-fips.tunneling.data` 

   *<region>*Remplacez-le par votre Région AWS. Par exemple, `us-east-1`. 

1. Effectuez les étapes restantes du processus de création du point de terminaison VPC conformément aux exigences de votre réseau.

## Configuration des politiques de point de terminaison VPC sur le serveur proxy
<a name="Create-ST-VPC-endpoints-Configure"></a>

Outre l'autorisation basée sur des jetons d'accès client qui est utilisée pour autoriser les connexions aux tunnels, vous pouvez utiliser des politiques de point de terminaison VPC pour restreindre davantage la manière dont les appareils peuvent utiliser un point de terminaison VPC pour se connecter au serveur proxy de tunnel sécurisé. Les politiques de point de terminaison du VPC suivent une syntaxe de type IAM et sont configurées sur le point de terminaison du VPC lui-même.

Notez que la seule action IAM prise en charge pour les politiques de point de terminaison VPC du serveur proxy est. `iot:ConnectToTunnel` 

Vous trouverez ci-dessous des exemples de différentes politiques relatives aux points de terminaison VPC.

### Exemples de politiques relatives aux points de terminaison VPC d'un serveur proxy
<a name="w2aac17c35c31c15b9"></a>

Les exemples suivants présentent les configurations de politique de point de terminaison VPC du serveur proxy pour les cas d'utilisation courants.

**Example - Politique par défaut**  
Cette politique permet aux appareils de votre VPC de se connecter à n'importe quel tunnel au même Région AWS endroit où le point de terminaison est créé, quel AWS que soit le compte.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

**Example - Restreindre l'accès à des AWS comptes spécifiques**  
Cette politique permet au point de terminaison VPC de se connecter uniquement aux tunnels de comptes spécifiques AWS .  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*",
                "arn:aws:iot:us-east-1:444455556666:tunnel/*"
            ]
        }
    ]
}
```

**Example - Restreindre les connexions par point de terminaison du tunnel**  
Vous pouvez restreindre l'accès des points de terminaison VPC pour autoriser uniquement les appareils à se connecter à l'extrémité source ou de destination d'un tunnel.  
Source uniquement :  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "source"
                }
            }
        }
    ]
}
```

Destination uniquement :

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

**Example - Restreindre l'accès en fonction des balises de ressources**  
Cette politique permet au point de terminaison VPC de se connecter uniquement aux tunnels étiquetés avec une paire clé-valeur spécifique.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Environment": "Production"
                }
            }
        }
    ]
}
```

**Example - Conditions d'assurance combinées**  
Cette politique illustre la combinaison de plusieurs éléments de stratégie. Il autorise les connexions à n'importe quel tunnel dans un AWS compte spécifique, mais uniquement si le tunnel est marqué avec `AllowConnectionsThroughPrivateLink` set to `true` et que le client ne se connecte pas à l'extrémité de destination du tunnel.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AllowConnectionsThroughPrivateLink": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*"
            ],
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

## Étapes suivantes
<a name="Create-ST-VPC-endpoints-Next"></a>

Après avoir créé et configuré vos points de terminaison VPC pour AWS IoT Secure Tunneling, tenez compte des points suivants :
+ Testez la configuration de votre point de terminaison VPC en connectant les appareils via le point de terminaison.
+ Surveillez l'utilisation des points de terminaison VPC grâce à des métriques Amazon CloudWatch .
+ Passez en revue et mettez à jour vos politiques de point de terminaison VPC en fonction de vos exigences de sécurité.

Pour plus d'informations sur le tunneling AWS IoT Device Management sécurisé, consultez. [AWS IoT Secure Tunneling](https://docs.aws.amazon.com//iot/latest/developerguide/secure-tunneling.html) 

# Sécurité de l'infrastructure dans AWS IoT
<a name="infrastructure-security"></a>

En tant qu'ensemble de services gérés, AWS IoT il est protégé par les procédures de sécurité du réseau AWS mondial décrites dans le livre blanc [Amazon Web Services : présentation des processus de sécurité](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf).

Vous utilisez des appels d'API AWS publiés pour accéder AWS IoT via le réseau. Les clients doivent prendre en charge le protocole TLS (Transport Layer Security) 1.2 ou version ultérieure. Les clients doivent aussi prendre en charge les suites de chiffrement PFS (Perfect Forward Secrecy) comme Ephemeral Diffie-Hellman (DHE) ou Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La plupart des systèmes modernes telles que Java 7 et versions ultérieures prennent en charge ces modes. Pour de plus amples informations, veuillez consulter [Sûreté des transports dans AWS IoT Core](transport-security.md).

Les demandes doivent être signées à l'aide d'un identifiant de clé d'accès et d'une clé d'accès secrète associée à un mandataire IAM. Vous pouvez également utiliser [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) pour générer des informations d'identification de sécurité temporaires et signer les demandes.

# Surveillance de la sécurité des flottes de production ou des appareils avec Core AWS IoT
<a name="security-monitoring"></a>

Les flottes IoT sont composées d’un grand nombre d’appareils disposant de capacités diverses, d’une durée de vie longue et qui sont répartis géographiquement. Ces caractéristiques rendent la configuration du parc complexe et sujette aux erreurs. Les appareils étant souvent limités en puissance de calcul, de mémoire et de capacités de stockage, l'utilisation du chiffrement et d'autres formes de sécurité sur les appareils eux-mêmes s'en trouve limitée. En outre, les appareils utilisent souvent des logiciels aux vulnérabilités connues. Ces facteurs font des parcs IoT une cible attractive pour les pirates informatiques et rend difficile la sécurisation de votre parc sur une base permanente.

AWS IoT Device Defender répond à ces défis en fournissant des outils permettant d'identifier les problèmes de sécurité et les écarts par rapport aux meilleures pratiques. Vous pouvez utiliser AWS IoT Device Defender pour analyser, auditer et surveiller les appareils connectés afin de détecter les comportements anormaux et d'atténuer les risques de sécurité. AWS IoT Device Defender peut auditer les flottes d'appareils pour s'assurer qu'elles respectent les meilleures pratiques de sécurité et détecter les comportements anormaux sur les appareils. Cela permet d'appliquer des politiques de sécurité cohérentes à l'ensemble de votre parc d' AWS IoT appareils et de réagir rapidement lorsque des appareils sont compromis. Pour de plus amples informations, veuillez consulter [AWS IoT Device Defender](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/what-is-device-defender.html).

AWS IoT Device Advisor diffuse les mises à jour et corrige votre parc en fonction de vos besoins. AWS IoT Device Advisor met automatiquement à jour les scénarios de test. Les cas de test que vous sélectionnez sont toujours avec la dernière version. Pour de plus amples informations, veuillez consulter [Device Advisor](device-advisor.md).

# Bonnes pratiques de sécurité dans AWS IoT Core
<a name="security-best-practices"></a>

Cette section contient des informations sur les meilleures pratiques de sécurité pour AWS IoT Core. Pour plus d’informations sur les règles de sécurité pour les solutions Industrial IoT, consultez [Dix règles d’or de sécurité pour les solutions Industrial IoT](https://aws.amazon.com/blogs/iot/ten-security-golden-rules-for-industrial-iot-solutions/).

## Protection des connexions MQTT dans AWS IoT
<a name="secure-mqtt"></a>

[AWS IoT Core](https://aws.amazon.com/iot-core/)est un service cloud géré qui permet aux appareils connectés d'interagir avec des applications cloud et d'autres appareils facilement et en toute sécurité. AWS IoT Core supporte HTTP et [MQTT [WebSocket](https://en.wikipedia.org/wiki/WebSocket)](https://en.wikipedia.org/wiki/MQTT), un protocole de communication léger spécialement conçu pour tolérer les connexions intermittentes. Si vous vous connectez AWS IoT via MQTT, chacune de vos connexions doit être associée à un identifiant appelé ID client. Le client MQTT identifie de IDs manière unique les connexions MQTT. Si une nouvelle connexion est établie à l'aide d'un ID client déjà réclamé pour une autre connexion, le courtier de AWS IoT messages abandonne l'ancienne connexion pour autoriser la nouvelle connexion. Le client IDs doit être unique au sein Compte AWS de chacun Région AWS. Cela signifie que vous n'avez pas besoin d'appliquer le caractère unique mondial du client IDs en dehors de votre région Compte AWS ou entre les régions de votre Compte AWS pays.

L'impact et la gravité de l'abandon des connexions MQTT sur votre parc d'appareils dépend de nombreux facteurs. Il s’agit des licences suivantes :
+ Votre cas d'utilisation (par exemple, les données auxquelles vos appareils envoient AWS IoT, la quantité de données et la fréquence à laquelle les données sont envoyées).
+ La configuration de votre client MQTT (par exemple, les paramètres de reconnexion automatique, les temporisations de back-off associées et l'utilisation de [sessions persistantes MQTT](mqtt.md#mqtt-persistent-sessions)).
+ Contraintes liées aux ressources de l'appareil.
+ La cause première des déconnexions, leur agressivité et leur persistance.

Pour éviter les conflits d'ID client et leurs impacts négatifs potentiels, assurez-vous que chaque appareil ou application mobile dispose d'une politique AWS IoT ou d'une politique IAM qui restreint le client IDs pouvant être utilisé pour les connexions MQTT au AWS IoT courtier de messages. Par exemple, vous pouvez utiliser une politique IAM pour empêcher un appareil de fermer involontairement la connexion d'un autre appareil à l'aide d'un ID client déjà utilisé. Pour de plus amples informations, veuillez consulter [Autorisation](iot-authorization.md).

Tous les appareils de votre parc doivent disposer d'informations d'identification avec des privilèges autorisant uniquement les actions prévues, notamment (mais sans s'y limiter) les actions AWS IoT MQTT telles que la publication de messages ou l'abonnement à des sujets ayant une portée et un contexte spécifiques. Les stratégies d'autorisation spécifiques peuvent varier selon vos cas d'utilisation. Identifiez les stratégies d'autorisation qui répondent le mieux aux exigences de votre entreprise et de sécurité.

Pour simplifier la création et la gestion des politiques d'autorisation, vous pouvez utiliser les [AWS IoT Core variables de politique](iot-policy-variables.md) et les [variables de la politique IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html). Les variables de la stratégie peuvent être placées dans une stratégie et lorsque celle-ci est évaluée, les variables sont remplacées par les valeurs provenant de la demande de l'appareil. Avec des variables de stratégie, vous pouvez créer une stratégie unique pour l'octroi d'autorisations à plusieurs appareils. Vous pouvez identifier les variables de politique pertinentes pour votre cas d'utilisation en fonction de la configuration de votre AWS IoT compte, du mécanisme d'authentification et du protocole réseau utilisés pour vous connecter au courtier de AWS IoT messages. Toutefois, pour écrire les meilleures stratégies d'autorisation, vous devez prendre en compte les spécificités de votre cas d'utilisation et votre [modèle de menaces](https://en.wikipedia.org/wiki/Threat_model).

Par exemple, si vous avez enregistré vos appareils dans le AWS IoT registre, vous pouvez utiliser des [variables de politique d'objet dans les](thing-policy-variables.md) AWS IoT politiques pour accorder ou refuser 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. Le nom de l'objet est obtenu à partir de l'ID client figurant dans le message de connexion MQTT envoyé lorsqu'un objet se connecte à AWS IoT. Les variables de politique des objets sont remplacées lorsqu'un objet se connecte AWS IoT via MQTT à l'aide de l'authentification mutuelle TLS ou MQTT via le WebSocket protocole à l'aide d'identités Amazon [Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html) authentifiées. Vous pouvez utiliser l'[AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API pour associer des certificats et des identités Amazon Cognito authentifiées à un objet. `iot:Connection.Thing.ThingName`est une variable de politique utile pour appliquer les restrictions d'identification des clients. L'exemple de AWS IoT politique suivant exige que le nom d'un objet enregistré soit utilisé comme ID client pour les connexions MQTT au courtier de AWS IoT messages :

****  

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

Si vous souhaitez identifier les conflits d'ID client en cours, vous pouvez activer et utiliser [CloudWatch Logs for AWS IoT](cloud-watch-logs.md). Pour chaque connexion MQTT déconnectée par le courtier de AWS IoT messages en raison de conflits d'ID client, un enregistrement de journal similaire au suivant est généré :

```
{
    "timestamp": "2019-04-28 22:05:30.105",
    "logLevel": "ERROR",
    "traceId": "02a04a93-0b3a-b608-a27c-1ae8ebdb032a",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "Disconnect",
    "protocol": "MQTT",
    "clientId": "clientId01",
    "principalId": "1670fcf6de55adc1930169142405c4a2493d9eb5487127cd0091ca0193a3d3f6",
    "sourceIp": "203.0.113.1",
    "sourcePort": 21335,
    "reason": "DUPLICATE_CLIENT_ID",
    "details": "A new connection was established with the same client ID"
}
```

Vous pouvez utiliser un [filtre CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html), par exemple `{$.reason= "DUPLICATE_CLIENT_ID" }` pour rechercher des cas de conflits d'ID client ou pour configurer des [filtres CloudWatch métriques](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringPolicyExamples.html) et des CloudWatch alarmes correspondantes pour une surveillance et des rapports continus.

Vous pouvez utiliser [AWS IoT Device Defender](https://aws.amazon.com/iot-device-defender/) pour identifier les politiques IAM AWS IoT et les politiques trop permissives. AWS IoT Device Defender fournit également une vérification d'audit qui vous avertit si plusieurs appareils de votre parc se connectent au AWS IoT messager en utilisant le même identifiant client.

Vous pouvez utiliser AWS IoT Device Advisor pour vérifier que vos appareils peuvent se connecter de manière fiable AWS IoT Core et suivre les meilleures pratiques en matière de sécurité.

### Consultez aussi
<a name="mqtt-security-see-also"></a>
+ [AWS IoT Core](https://aws.amazon.com/iot-core/)
+ [Fonctions de sécuritéAWS IoT](authentication.md)
+ [AWS IoT Core variables de politique](iot-policy-variables.md)
+ [Variables de politique IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_variables.html)
+ [Amazon Cognito Identity](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html)
+ [AWS IoT Défenseur de l'appareil](https://aws.amazon.com/iot-device-defender/)
+ [CloudWatch Logs pour AWS IoT](cloud-watch-logs.md)

## Veiller à la synchronisation de l'horloge de votre appareil
<a name="device-clock"></a>

Il est important que l'heure soit exacte sur votre appareil. Les certificats X.509 ont une date et une heure d'expiration. L'horloge de votre appareil est utilisée pour vérifier qu'un certificat de serveur est toujours valide. Si vous construisez des appareils IoT commerciaux, n'oubliez pas que vos produits peuvent être stockés pendant de longues périodes avant d'être vendus. Les horloges en temps réel peuvent dériver pendant cette période et les batteries peuvent se décharger, par conséquent, il ne suffit pas de régler l'heure en usine.

Pour la plupart des systèmes, cela signifie que le logiciel de l’appareil doit inclure un client NTP (Network Time Protocol). L’appareil doit attendre qu'il se synchronise avec un serveur NTP avant d'essayer de se connecter à AWS IoT Core. Si ce n'est pas possible, le système doit fournir un moyen aux utilisateurs de définir l'heure de l'appareil afin que les connexions suivantes réussissent.

Une fois l'appareil synchronisé avec un serveur NTP, il peut établir une connexion avec AWS IoT Core. L’ampleur du décalage d'horloge autorisé dépend de ce que vous essayez de faire avec la connexion. 

## Valider le certificat de serveur
<a name="validate-server-cert"></a>

La première chose avec laquelle un appareil interagit AWS IoT est d'ouvrir une connexion sécurisée. Lorsque vous connectez votre appareil à AWS IoT, assurez-vous que vous parlez à un autre serveur AWS IoT et qu'il n'y a pas d'usurpation AWS IoT d'identité. Chacun des AWS IoT serveurs est approvisionné avec un certificat émis pour le `iot.amazonaws.com` domaine. Ce certificat a été délivré AWS IoT par une autorité de certification fiable qui a vérifié notre identité et la propriété du domaine.

L'une des premières choses à AWS IoT Core faire lorsqu'un appareil se connecte est de lui envoyer un certificat de serveur. Les appareils peuvent vérifier qu'ils sont censés se connecter à `iot.amazonaws.com` et que le serveur à l'autre extrémité de cette connexion possède un certificat provenant d'une autorité de confiance pour ce domaine.

Les certificats TLS sont au format X.509 et comprennent diverses informations, telles que le nom de l'organisation, l'emplacement, le nom de domaine et une période de validité. La période de validité est spécifiée sous la forme d'une paire de valeurs temporelles nommées `notBefore` et `notAfter`. Des services tels que AWS IoT Core l'utilisation de périodes de validité limitées (par exemple, un an) pour leurs certificats de serveur et commencent à en servir de nouveaux avant l'expiration des anciens.

## Utiliser une identité unique par appareil
<a name="cert-per-device"></a>

Utilisez une identité unique par client. Les appareils utilisent généralement des certificats client X.509. Les applications Web et mobiles utilisent Amazon Cognito Identity. Cela vous permet d'appliquer des autorisations précises à vos appareils.

Par exemple, si une application se compose d'un téléphone mobile qui reçoit des mises à jour d'état de deux objets connectés différents – une ampoule et un thermostat. L'ampoule envoie l'état de son niveau de batterie, et un thermostat envoie des messages indiquant la température.

AWS IoT authentifie les appareils individuellement et traite chaque connexion individuellement. Vous pouvez appliquer des contrôles d'accès précis grâce à des stratégies d'autorisation. Vous pouvez définir une stratégie pour le thermostat, qui l'autorise à publier dans un espace de rubrique. Vous pouvez définir une stratégie distincte pour l'ampoule, qui l'autorise à publier dans un autre espace de rubrique. Enfin, vous pouvez définir une stratégie pour l'application mobile, qui l'autorise uniquement à se connecter et à s'abonner aux rubriques du thermostat et de l'ampoule, afin de recevoir des messages de ces appareils.

Appliquez le principe du moins de privilèges et définissez les autorisations par appareil autant que possible. Tous les appareils ou utilisateurs doivent disposer d'une AWS IoT politique leur AWS IoT permettant uniquement de se connecter avec un identifiant client connu, de publier et de s'abonner à un ensemble de sujets identifiés et fixes.

## Utiliser une seconde Région AWS comme sauvegarde
<a name="use-second-region"></a>

Envisagez de stocker une copie de vos données en une seconde à Région AWS titre de sauvegarde. Notez que la AWS solution nommée [Disaster Recovery for](https://aws.amazon.com/solutions/implementations/disaster-recovery-for-aws-iot/) n' AWS IoT est plus disponible. Bien que la [GitHubbibliothèque](https://github.com/awslabs/disaster-recovery-for-aws-iot) associée reste accessible, elle est AWS devenue obsolète en juillet 2023 et n'en assure plus la maintenance ni le support. Pour mettre en œuvre vos propres solutions ou pour explorer d'autres options d'assistance, rendez-vous sur [Contact AWS](https://aws.amazon.com/contact-us/). Si un responsable de compte AWS technique est associé à votre compte, contactez-le pour obtenir de l'aide.

## Utiliser la mise en service juste à temps
<a name="use-jitp"></a>

La création et le provisionnement manuels de chaque appareil peuvent prendre beaucoup de temps. AWS IoT fournit un moyen de définir un modèle pour approvisionner les appareils lorsqu'ils se connectent pour la première fois à AWS IoT. Pour de plus amples informations, veuillez consulter [Just-in-time approvisionnement](jit-provisioning.md).

## Autorisations pour exécuter des tests AWS IoT Device Advisor
<a name="device-advisor-perms"></a>

Le modèle de politique suivant indique les autorisations minimales et l'entité IAM requises pour exécuter les scénarios de test AWS IoT Device Advisor. Vous devrez le remplacer par le rôle *your-device-role-arn* d'appareil Amazon Resource Name (ARN) que vous avez créé conformément aux [prérequis](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-workflow.html#device-advisor-workflow-prereqs).

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iot:us-east-1:123456789012:thinggroup/your-thing-group",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "iotdeviceadvisor.amazonaws.com"
            }
        }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke*",
                "iam:ListRoles",
                "iot:Connect",
                "iot:CreateJob",
                "iot:DeleteJob",
                "iot:DescribeCertificate",
                "iot:DescribeEndpoint",
                "iotjobsdata:DescribeJobExecution",
                "iot:DescribeJob",
                "iot:DescribeThing",
                "iotjobsdata:GetPendingJobExecutions",
                "iot:GetPolicy",
                "iot:ListAttachedPolicies",
                "iot:ListCertificates",
                "iot:ListPrincipalPolicies",
                "iot:ListThingPrincipals",
                "iot:ListThings",
                "iot:Publish",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution",
                "iot:UpdateThingShadow",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "logs:PutRetentionPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "iotdeviceadvisor:*",
            "Resource": "*"
        }
    ]
}
```

## Prévention du problème de l'adjoint confus entre services pour l'interface Device Advisor
<a name="cross-service-confused-deputy-prevention-DA"></a>

Le problème de député confus est un problème de sécurité dans lequel une entité qui n’est pas autorisée à effectuer une action peut contraindre une entité plus privilégiée à le faire. 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é et ses autorisations utilisées pour agir sur les ressources d’un autre client auxquelles on ne serait pas autorisé à accéder autrement. Pour éviter cela, AWS fournit des outils qui vous aident à protéger vos données pour tous les services auprès des principaux fournisseurs de services qui ont obtenu l'accès aux ressources de votre compte. 

Nous vous recommandons d'utiliser les clés de contexte [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 de condition globale [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) dans les politiques de ressources afin de limiter les autorisations à la ressource octroyées par Device Advisor à un autre service. 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.

La valeur de `aws:SourceArn` doit être l’ARN de votre ressource de définition de suite. La ressource de définition de suite fait référence à la suite de tests que vous avez créée avec Device Advisor.

Le moyen le plus efficace de se protéger contre le problème de député confus consiste à utiliser la clé de contexte de condition globale `aws:SourceArn` avec l’ARN complet de la ressource. Si vous ne connaissez pas l’ARN complet de la ressource ou si vous spécifiez plusieurs ressources, utilisez la clé de contexte de condition globale `aws:SourceArn` avec des caractères génériques (`*`) pour les parties inconnues de l’ARN. Par exemple, `arn:aws:iotdeviceadvisor:*:account-id:suitedefinition/*` 

L'exemple suivant montre comment utiliser les clés contextuelles `aws:SourceArn` et de condition globale `aws:SourceAccount` dans Device Advisor pour éviter le problème de confusion des adjoints.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "ConfusedDeputyPreventionExamplePolicy",
        "Effect": "Allow",
        "Principal": {
            "Service": "iotdeviceadvisor.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iotdeviceadvisor:us-east-1:123456789012:suitedefinition/ygp6rxa3tzvn"
        },
            "StringEquals": {
                "aws:SourceAccount": "123456789012"
        }
        }
    }
}
```

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

Suivez le cours suivant pour en savoir plus sur les concepts clés de AWS IoT la sécurité : [AWS IoT Security Primer](https://www.aws.training/Details/Curriculum?id=42304).