

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.

# Utilisation de l'authentification LDAP pour Presto sur Amazon EMR
<a name="emr-presto-ldap"></a>

Suivez les étapes de cette section pour configurer LDAP. Chaque étape contient des exemples et des liens vers des informations complémentaires.

**Topics**
+ [Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3](#emr-presto-ldap-server-prereq)
+ [Étape 2 : Définir une configuration de sécurité](#emr-presto-ldap-seccfg)
+ [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig)
+ [Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3](#emr-presto-ldap-servercert)
+ [Étape 5 : Créer le cluster](#emr-presto-ldap-createcluster)

## Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3
<a name="emr-presto-ldap-server-prereq"></a>

Dans la section suivante, vous aurez besoin des informations et des éléments suivants relatifs à votre serveur LDAP pour configurer l'authentification LDAP.

### L'adresse IP ou le nom d'hôte du serveur LDAP
<a name="w2aac60c39c13b7b5"></a>

Le coordinateur Presto sur le nœud principal Amazon EMR doit être en mesure d'atteindre le serveur LDAP via l'adresse IP ou le nom d'hôte spécifié. Par défaut, Presto communique avec le serveur LDAP via LDAPS sur le port 636. Si votre implémentation LDAP nécessite un port personnalisé, vous pouvez le spécifier à l'aide de la propriété `ldap.url` avec les versions 5.16.0 ou ultérieures d'Amazon EMR, ou en utilisant `authentication.ldap.url` avec les versions antérieures. Remplacez `636` par le port personnalisé comme illustré dans les exemples de configuration `presto-config` de [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig). Assurez-vous que les pare-feu et les groupes de sécurité autorisent le trafic entrant et sortant sur le port 636 (ou votre port personnalisé) ainsi que sur le port 8446 (ou votre port personnalisé), qui est utilisé pour les communications de cluster internes.

### Le certificat de serveur LDAP
<a name="w2aac60c39c13b7b7"></a>

Vous devez charger le fichier de certificat dans un emplacement sécurisé dans Amazon S3. Pour plus d'informations, consultez [Comment charger des fichiers ou des dossiers dans un compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans le *Guide de l'utilisateur Amazon Simple Storage Service*. Vous créez une action d'amorçage qui copie ce certificat depuis Amazon S3 vers chaque nœud du cluster lors du lancement du cluster. Dans [Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3](#emr-presto-ldap-servercert). L'exemple de certificat est{{s3://amzn-s3-demo-bucket/ldap\_server.crt}}.

### Les paramètres du serveur LDAP pour des liaisons anonymes
<a name="w2aac60c39c13b7b9"></a>

Si la liaison anonyme est désactivée sur PrestoDB, vous avez besoin de l'ID utilisateur (UID) et du mot de passe d'un compte disposant des autorisations pour établir la liaison avec le serveur LDAP afin que le serveur PrestoDB puisse établir une connexion. Vous spécifiez l'UID et le mot de passe en utilisant les propriétés `internal-communication.authentication.ldap.user` et `internal-communication.authentication.ldap.password` dans la classification de configuration `presto-config`. Amazon EMR 5.10.0 ne prend pas en charge ces paramètres ; la liaison anonyme doit donc être prise en charge sur le serveur LDAP lorsque vous utilisez cette version.

Notez que Trino ne nécessite pas la configuration de liaison anonyme.

**Pour obtenir le statut de liaison anonyme sur le serveur LDAP**
+ Utilisez la commande [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) à partir d'un client Linux, comme illustré dans l'exemple suivant :

  ```
  ldapwhoami -x -H ldaps://{{LDAPServerHostNameOrIPAddress}}
  ```

  Si la liaison anonyme n'est pas autorisée, la commande renvoie les informations suivantes :

  ```
  ldap_bind: Inappropriate authentication (48)
  additional info: anonymous bind disallowed
  ```

**Pour vérifier qu'un compte dispose des autorisations pour un serveur LDAP qui utilise l'authentification simple**
+ Utilisez la commande [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) à partir d'un client Linux, comme illustré dans l'exemple suivant. L'exemple utilise un utilisateur fictif{{presto}}, stocké sur un serveur Open LDAP exécuté sur une instance EC2 avec le nom d'hôte fictif. {{ip-xxx-xxx-xxx-xxx.ec2.internal}} L'utilisateur est associé à l'unité organisationnelle (UO) {{admins}} et au mot de passe {{123456}} :

  ```
  ldapwhoami -x -w "{{123456}}" -D uid={{presto}},ou={{admins}},dc=ec2,dc=internal -H ldaps://{{ip-xxx-xxx-xxx-xxx.ec2.internal}} 
  ```

  Si le compte est valide et dispose des autorisations appropriées, la commande renvoie :

  ```
  dn:uid=presto,ou=admins,dc=ec2,dc=internal
  ```

Les exemples de configuration dans [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig) incluent ce compte pour plus de clarté, à l'exception de l'exemple 5.10.0, dans lequel il n'est pas pris en charge. Si le serveur LDAP utilise une liaison anonyme, supprimez les `internal-communication.authentication.ldap.password` name/value paires `internal-communication.authentication.ldap.user` et.

### Le nom unique LDAP pour les utilisateurs Presto
<a name="w2aac60c39c13b7c11"></a>

Lorsque vous spécifiez la configuration LDAP pour Presto, vous spécifiez un modèle de liaison composé d'`${USER}`une unité organisationnelle (UO) et de composants de domaine supplémentaires (DCs). Presto remplace `${USER}` par l'UD utilisateur effectif (UID) de chaque utilisateur pendant l'authentification par mot de passe afin qu'il corresponde au nom unique spécifié par ce modèle de liaison. Vous avez besoin de OUs ceux auxquels appartiennent les utilisateurs éligibles et de leurs DCs. Par exemple, pour autoriser les utilisateurs de l'unité d'organisation `admins` ou du domaine `corp.example.com` à s'authentifier auprès de Presto, vous spécifiez `${USER},ou=admins,dc=corp,dc=example,dc=com` en tant que modèle de liaison utilisateur.

**Note**  
Lorsque vous l'utilisez AWS CloudFormation, vous devez utiliser la fonction Fn : :Sub afin de la `${USER}` remplacer par l'ID utilisateur (UID) réel. Pour plus d'informations, consultez la rubrique [Fn::Sub](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html) dans le *Guide de l'utilisateur AWS CloudFormation *.

Lorsque vous utilisez Amazon EMR 5.10.0, vous ne pouvez spécifier qu'un seul modèle de ce type. Avec Amazon EMR 5.11.0 ou version ultérieure, vous pouvez spécifier plusieurs modèles séparés par un signe deux points (:). Les utilisateurs qui tentent de s'authentifier auprès de Presto sont comparés au premier modèle, puis au deuxième, et ainsi de suite. Pour obtenir un exemple, consultez [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig).

## Étape 2 : Définir une configuration de sécurité
<a name="emr-presto-ldap-seccfg"></a>

Créez une configuration de sécurité avec le chiffrement en transit activé. Pour plus d'informations, consultez [Création d'une configuration de sécurité](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html) dans le *Guide de gestion d'Amazon EMR*. Les artefacts de chiffrement que vous fournissez lorsque vous configurez le chiffrement en transit sont utilisés pour chiffrer les communications internes entre les nœuds Presto. Pour plus d'informations, consultez [Mise à disposition des certificats de chiffrement des données en transit](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates). Le certificat de serveur LDAP est utilisé pour authentifier les connexions client auprès du serveur Presto.

## Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto
<a name="emr-presto-ldap-prestoconfig"></a>

Vous utilisez la classification de configuration `presto-config` pour définir des propriétés Presto pour LDAP. Le format et le contenu de `presto-config` sont légèrement différents selon la version d'Amazon EMR et l'installation de Presto (PrestoDB ou Trino). Des exemples de configuration sont fournis plus tard dans cette section. Pour de plus amples informations, veuillez consulter [Configuration des applications](emr-configure-apps.md).

Les étapes suivantes supposent que vous enregistrez les données JSON dans un fichier{{MyPrestoConfig.json}}. Si vous utilisez la console, chargez le fichier dans un emplacement sécurisé dans Amazon S3 afin de pouvoir y faire référence lorsque vous créez le cluster. Si vous utilisez le AWS CLI, vous pouvez référencer le fichier localement.

**Example Amazon EMR 6.1.0 et versions ultérieures avec PrestoSQL (Trino)**  
L'exemple suivant utilise le nom d'hôte LDAP de [Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3](#emr-presto-ldap-server-prereq) pour s'authentifier auprès du serveur LDAP pour la liaison. Deux modèles de liaison utilisateur sont spécifiés, ce qui indique que les utilisateurs des unités d'organisation `admins` et `datascientists` sur le serveur LDAP sont éligibles pour l'authentification auprès du serveur Trino en tant qu'utilisateurs. Les modèles de liaison sont séparés par un signe deux-points (`:`).  
Les versions 6.4.0 et ultérieures d'Amazon EMR utilisent le nouveau nom Trino au lieu de PrestoSQL. Si vous utilisez Trino, remplacez {{`prestosql-config`}} dans la classification de configuration suivante par `trino-config` et `{{prestosql-password-authenticator}}` par `trino-password-authenticator`.  

```
[
   {
      "Classification":"{{prestosql-config}}",
      "Properties":{
         "http-server.authentication.type":"PASSWORD"
      }
   },
   {
      "Classification":"{{prestosql-password-authenticator}}",
      "Properties":{
         "password-authenticator.name":"ldap",
         "ldap.url":"ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
         "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal"
      }
   }
]
```

**Example Amazon EMR 5.16.0 et versions ultérieures**  
L'exemple suivant utilise l'ID utilisateur et le mot de passe LDAP, ainsi que le nom d'hôte LDAP [Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3](#emr-presto-ldap-server-prereq) pour l'authentification auprès du serveur LDAP pour la liaison. Deux modèles de liaison utilisateur sont spécifiés, ce qui indique que les utilisateurs des unités d'organisation `admins` et `datascientists` sur le serveur LDAP sont éligibles pour l'authentification auprès du serveur Presto en tant qu'utilisateurs. Les modèles de liaison sont séparés par un signe deux-points (`:`).  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "PASSWORD"
                }
        },
        {
                "Classification": "presto-password-authenticator",
                "Properties": {
                        "password-authenticator.name": "ldap",
                        "ldap.url": "ldaps://{{ip-xxx-xxx-xxx-xxx.ec2.internal}}:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou={{admins}},dc=ec2,dc=internal:uid=${USER},ou={{datascientists}},dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "{{presto}}",
                        "internal-communication.authentication.ldap.password": "{{123456}}"
                }
        }]
```

**Example Amazon EMR version 5.11.0 à 5.15.0**  
Le format de la classification de configuration `presto-config ` est légèrement différent pour ces versions. L'exemple suivant spécifie les mêmes paramètres que l'exemple précédent.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://{{ip-xxx-xxx-xxx-xxx.ec2.internal}}:636",
                        "authentication.ldap.user-bind-pattern": "uid=${USER},ou={{admins}},dc=ec2,dc=internal:uid=${USER},ou={{datascientists}},dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "{{presto}}",
                        "internal-communication.authentication.ldap.password": "{{123456}}"
                }
        }]
```

**Example Amazon EMR 5.10.0**  
Amazon EMR 5.10.0 prend en charge la liaison anonyme uniquement ; ces entrées sont donc omises. De plus, un seul modèle de liaison peut être spécifié.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://{{ip-xxx-xxx-xxx-xxx.ec2.internal}}:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou={{prestousers}},dc=ec2,dc=internal"
                }
        }]
```

## Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3
<a name="emr-presto-ldap-servercert"></a>

Créez un script qui copie le fichier de certificat sur chaque nœud du cluster et l'ajoute au keystore. Créez le script à l'aide d'un éditeur de texte, enregistrez-le, puis chargez-le dans Amazon S3. Dans[Étape 5 : Créer le cluster](#emr-presto-ldap-createcluster), le fichier de script est référencé sous la forme{{s3://amzn-s3-demo-bucket/LoadLDAPCert.sh}}.

L'exemple de script suivant utilise le mot de passe du keystore par défaut,{{changeit}}. Nous vous recommandons de vous connecter au nœud maître après avoir créé le cluster et de modifier le mot de passe du keystore à l'aide de la commande keytool.

```
#!/bin/bash
aws s3 cp s3://amzn-s3-demo-bucket/ldap_server.crt .
sudo keytool -import -keystore /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/cacerts -trustcacerts -alias ldap_server -file ./ldap_server.crt -storepass {{changeit}} -noprompt
```



## Étape 5 : Créer le cluster
<a name="emr-presto-ldap-createcluster"></a>

Lorsque vous créez le cluster, vous spécifiez Presto et les autres applications que vous voulez qu'Amazon EMR installe. Les exemples suivants font également référence aux propriétés de classification de configuration dans un fichier au format JSON, mais vous pouvez également spécifier la classification de configuration en ligne.

**Pour créer un cluster Presto avec authentification LDAP à l'aide de la console Amazon EMR.**

1. Accédez à la nouvelle console Amazon EMR et sélectionnez **Changer pour l'ancienne console** depuis le menu latéral. Pour plus d'informations sur ce qu'implique le passage à l'ancienne console, consultez la rubrique [Utilisation de l'ancienne console](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Choisissez **Créer un cluster** et **Go to advanced options (Aller aux options avancées)**.

1. Choisissez **Presto** et les autres applications devant être installées par Amazon EMR, puis sous **Configuration logicielle**, sélectionnez la **version** d'Amazon EMR à utiliser. L'authentification LDAP est prise en charge uniquement avec Amazon EMR version 5.10.0 et ultérieure.

1. Sous **Modifier les paramètres logiciels**, choisissez **Charger JSON à partir de S3** , indiquez l'emplacement dans Amazon S3 du fichier de configuration JSON que vous avez créé dans [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig), puis choisissez **Suivant**.

1. Configurez le matériel et la mise en réseau du cluster, puis choisissez **Next (Suivant)**.

1. Choisissez **Bootstrap Actions (Actions d'amorçage)**. Pour **Add bootstrap action (Ajouter une action d'amorçage)**, sélectionnez **Custom action (Action personnalisée)**, puis choisissez **Configure and add (Configurer et ajouter)**.

1. **Entrez un **nom** pour l'action bootstrap, entrez l'**emplacement du script** dans lequel vous l'avez créé[Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3](#emr-presto-ldap-servercert), par exemple **s3://amzn-s3-demo-bucket/Load LDAPCert .sh**, puis choisissez Ajouter.**

1. Sous **General Options (Options générales)**, **Tags (Balises)** et **Additional Options (Options supplémentaires)**, choisissez les paramètres appropriés à votre application, puis choisissez **Next (Suivant)**.

1. Choisissez **Authentication and encryption (Authentification et chiffrement)**, puis sélectionnez la **configuration de sécurité** que vous avez créée dans [Étape 2 : Définir une configuration de sécurité](#emr-presto-ldap-seccfg).

1. Choisissez d'autres options de sécurité en fonction de votre application, puis choisissez **Create cluster (Créer le cluster)**.

**Pour créer un cluster Presto avec authentification LDAP à l'aide du AWS CLI**
+ Utilisez la commande `aws emr create-cluster`. Au minimum, spécifiez l'application Presto, ainsi que la classification de configuration Presto, le script d'amorçage et la configuration de sécurité que vous avez créée au cours des étapes précédentes. L'exemple suivant fait référence au fichier de configuration en tant que fichier JSON enregistré dans le même répertoire que celui où vous exécutez la commande. Le script d'amorçage, d'autre part, doit être enregistré dans Amazon S3. L’exemple suivant utilise `s3://amzn-s3-demo-bucket/LoadLDAPCert.sh`.
**Note**  
Les caractères de continuation de ligne Linux (\\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

  ```
  aws emr create-cluster  --applications Name=presto --release-label emr-5.16.0 \
  --use-default-roles --ec2-attributes KeyName={{MyKeyPair}},SubnetId={{subnet-1234ab5}} \ --instance-count 3 --instance-type m5.xlarge --region us-west-2 --name "MyPrestoWithLDAPAuth" \
  --bootstrap-actions Name="Distribute LDAP server cert",Path="s3://amzn-s3-demo-bucket/LoadLDAPCert.sh" \
  --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json
  ```