

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.

# Didacticiel : configurer un domaine avec un utilisateur principal IAM et l'authentification Amazon Cognito
<a name="fgac-iam"></a>

Ce didacticiel couvre un cas d'utilisation courant d'Amazon OpenSearch Service pour le [contrôle d'accès détaillé](fgac.md) : un utilisateur principal IAM avec authentification Amazon Cognito pour les tableaux de bord. OpenSearch 

Dans ce didacticiel, nous allons configurer un rôle IAM *principal* et un rôle IAM *limité*, que nous associerons ensuite aux utilisateurs dans Amazon Cognito. L'utilisateur principal peut ensuite se connecter aux OpenSearch tableaux de bord, associer l'utilisateur limité à un rôle et utiliser un contrôle d'accès précis pour limiter les autorisations de l'utilisateur.

![\[IAM roles and Amazon Cognito integration with OpenSearch Dashboards access control.\]](http://docs.aws.amazon.com/fr_fr/opensearch-service/latest/developerguide/images/fgac-cognito.png)


Bien que ces étapes utilisent le pool d'utilisateurs Amazon Cognito pour l'authentification, ce même processus de base fonctionne pour tout fournisseur d'authentification Cognito qui vous permet d'attribuer différents rôles IAM à différents utilisateurs.

Dans le cadre de ce didacticiel, vous suivrez les étapes suivantes :

1. [Créer les rôles IAM principal et limité](#fgac-iam-roles)

1. [Créer un domaine avec authentification Cognito](#fgac-iam-domain)

1. [Configuration d'un groupe d'utilisateurs et d'identités Cognito](#fgac-iam-cognito)

1. [Cartographier les rôles dans les OpenSearch tableaux de bord](#fgac-iam-dashboards)

1. [Tester les autorisations](#fgac-iam-test)

## Étape 1 : créer les rôles IAM principal et limité
<a name="fgac-iam-roles"></a>

Accédez à la console Gestion des identités et des accès AWS (IAM) et créez deux rôles distincts :
+ `MasterUserRole` : l'utilisateur principal, qui dispose des autorisations complètes sur le cluster et gère les rôles et les mappages de rôles.
+ `LimitedUserRole` : un rôle plus restreint, auquel vous accorderez un accès limité en tant qu'utilisateur principal.

Pour obtenir des instructions sur la création des rôles, consultez la section [Création d'un rôle à l'aide de politiques de confiance personnalisées](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) dans le *guide de l'utilisateur IAM*.

Les deux rôles doivent disposer de la politique d'approbation suivante, qui permet à votre groupe d'identités Cognito d'endosser les rôles :

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "Federated": "cognito-identity.amazonaws.com"
    },
    "Action": "sts:AssumeRoleWithWebIdentity",
    "Condition": {
      "StringEquals": {
        "cognito-identity.amazonaws.com:aud": "{identity-pool-id}"
      },
      "ForAnyValue:StringLike": {
        "cognito-identity.amazonaws.com:amr": "authenticated"
      }
    }
  }]
}
```

------

**Note**  
Remplacez `identity-pool-id` par l'identifiant unique de votre groupe d'identités Amazon Cognito. Par exemple, `us-east-1:0c6cdba7-3c3c-443b-a958-fb9feb207aa6`.

## Étape 2 : créer un domaine avec authentification Cognito
<a name="fgac-iam-domain"></a>

Accédez à la console Amazon OpenSearch Service à l'[https://console.aws.amazon.com/aos/adresse home/](https://console.aws.amazon.com/aos/home/) et [créez un domaine](createupdatedomains.md) avec les paramètres suivants :
+ OpenSearch 1.0 ou version ultérieure, ou Elasticsearch 7.8 ou version ultérieure
+ Accès public
+ Contrôle précis des accès activé avec `MasterUserRole` comme utilisateur principal (créé à l'étape précédente) 
+ Authentification Amazon Cognito activée pour OpenSearch les tableaux de bord. Pour obtenir des instructions sur l'activation de l'authentification Cognito et choisir un groupe d'utilisateurs et d'identités, consultez [Configurer un domaine pour utiliser l'authentification Amazon Cognito](cognito-auth.md#cognito-auth-config).
+ La stratégie d'accès au domaine suivante :

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": [
          "es:ESHttp*"
        ],
        "Resource": "arn:aws:es:us-east-1:111122223333:domain/{domain-name}/*"
      }
    ]
  }
  ```

------
+ HTTPS requis pour tout le trafic vers le domaine
+ Node-to-node chiffrement
+ Chiffrement de données au repos

## Étape 3 : Configuration des utilisateurs de Cognito
<a name="fgac-iam-cognito"></a>

Lors de la création de votre domaine, configurez les utilisateurs principaux et limités dans Amazon Cognito en suivant la procédure [Créer un groupe d'utilisateurs dans le manuel](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html) *Amazon Cognito Developer Guide*. Enfin, configurez votre pool d'identités en suivant les étapes décrites dans [Créer un pool d'identités dans Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html#create-identity-pool). Le groupe d'utilisateurs et le groupe d'identités doivent se trouver dans la même Région AWS.

## Étape 4 : Cartographier les rôles dans les OpenSearch tableaux de bord
<a name="fgac-iam-dashboards"></a>

Maintenant que vos utilisateurs sont configurés, vous pouvez vous connecter à OpenSearch Dashboards en tant qu'utilisateur principal et associer les utilisateurs à des rôles.

1. Retournez à la console OpenSearch de service et accédez à l'URL OpenSearch des tableaux de bord du domaine que vous avez créé. Le format de l'URL est le suivant : `domain-endpoint/_dashboards/`.

1. Connectez-vous à l'aide des informations d'identification `master-user`.

1. Choisissez **Add sample data** (Ajouter des exemples de données), puis ajoutez les exemples de données de vol.

1. Dans le panneau de navigation de gauche, choisissez **Security** (Sécurité), **Roles** (Rôles), **Create role** (Créer un rôle).

1. Nommez le rôle `new-role`.

1. Pour **Index**, spécifiez `opensearch_dashboards_sample_data_fli*` (`kibana_sample_data_fli*` sur les domaines Elasticsearch).

1. Pour **Index permissions** (Autorisations d'index), choisissez **read** (lire).

1. Pour **Requête de sécurité au niveau du document**, indiquez la requête suivante :

   ```
   {
     "match": {
       "FlightDelay": true
     }
   }
   ```

1. Pour la sécurité au niveau des champs, choisissez **Exclude (Exclure)** et indiquez `FlightNum`.

1. Pour **Anonymisation**, indiquez `Dest`.

1. Choisissez **Create (Créer)**.

1. Choisissez **Mapped users (Utilisateurs mappés)**, **Manage mapping (Gérer le mappage)**. Ajoutez l'Amazon Resource Name (ARN) pour `LimitedUserRole` en tant qu'identité externe et choisissez **Map** (Mapper).

1. Revenez à la liste des rôles et choisissez **opensearch\$1dashboards\$1user**. Choisissez **Mapped users (Utilisateurs mappés)**, **Manage mapping (Gérer le mappage)**. Ajoutez l'ARN pour `LimitedUserRole` en tant que rôle backend, puis choisissez **Map** (Mapper).

## Étape 5 : tester les autorisations
<a name="fgac-iam-test"></a>

Lorsque vos rôles sont correctement mappés, vous pouvez vous connecter en tant qu'utilisateur limité et tester les autorisations.

1. Dans une nouvelle fenêtre de navigateur privée, accédez à l'URL OpenSearch des tableaux de bord du domaine, connectez-vous à l'aide des `limited-user` informations d'identification et choisissez **Explorer par moi-même**.

1. Accédez aux **Outils de développement**, puis exécutez la recherche par défaut :

   ```
   GET _search
   {
     "query": {
       "match_all": {}
     }
   }
   ```

   Notez l'erreur d'autorisation. `limited-user` n'a pas les autorisations nécessaires pour exécuter des recherches à l'échelle du cluster.

1. Exécutez une autre recherche :

   ```
   GET opensearch_dashboards_sample_data_flights/_search
   {
     "query": {
       "match_all": {}
     }
   }
   ```

   Notez que tous les documents correspondants ont un champ `FlightDelay` ayant pour valeur `true`, un champ anonymisé `Dest` et aucun champ `FlightNum`.

1. Dans la fenêtre de votre navigateur d'origine, connecté en tant que `master-user`, choisissez **Dev Tools (Outils de développement)**, puis effectuez les mêmes recherches. Notez la différence entre les autorisations, le nombre d'accès, les documents correspondants et les champs inclus.