Utilisation de LDAP l'authentification pour Presto sur Amazon EMR - Amazon EMR

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 LDAP l'authentification pour Presto sur Amazon EMR

Suivez les étapes décrites dans cette section pour configurerLDAP. Chaque étape contient des exemples et des liens vers des informations complémentaires.

Étape 1 : recueillir des informations sur votre LDAP serveur et copier le certificat du serveur sur Amazon S3

Vous aurez besoin des informations et des éléments de la section suivante auprès de votre LDAP serveur pour configurer LDAP l'authentification.

Adresse IP ou nom d'hôte du LDAP serveur

Le coordinateur Presto sur le nœud EMR principal Amazon doit pouvoir accéder au LDAP serveur à l'adresse IP ou au nom d'hôte spécifiés. Par défaut, Presto communique avec le LDAP serveur LDAPS via le port 636. Si votre LDAP implémentation nécessite un port personnalisé, vous pouvez le spécifier à l'aide de la ldap.url propriété avec Amazon EMR 5.16.0 ou version ultérieure, ou en utilisant authentication.ldap.url des versions antérieures. Remplacez 636 par le port personnalisé comme illustré dans les exemples de configuration presto-config de Étape 3 : Création d'une configuration JSON avec les propriétés Presto pour LDAP. 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 LDAP du serveur

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 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 LDAP du serveur et le télécharger sur Amazon S3. L'exemple de certificat est s3://MyBucket/ldap_server.crt.

Les paramètres du LDAP serveur pour la liaison anonyme

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 autorisé à établir une liaison au serveur afin que le LDAP serveur PrestoDB puisse établir une connexion. Vous spécifiez le mot de passe UID et à l'aide internal-communication.authentication.ldap.password des propriétés internal-communication.authentication.ldap.user et de la classification presto-config de configuration. Amazon EMR 5.10.0 ne prend pas en charge ces paramètres. La liaison anonyme doit donc être prise en charge sur le LDAP serveur lorsque vous utilisez cette version.

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

Pour obtenir l'état de la liaison anonyme sur le LDAP serveur
  • Utilisez la commande 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 est autorisé à accéder à un LDAP serveur qui utilise une authentification simple
  • Utilisez la commande ldapwhoami à partir d'un client Linux, comme illustré dans l'exemple suivant. L'exemple utilise un utilisateur fictif, presto, stocké sur un LDAP serveur Open exécuté sur une EC2 instance portant le nom d'hôte fictif ip-xxx-xxx-xxx-xxx.ec2.internal. L'utilisateur est associé à l'unité organisationnelle (UO) admins et avec le 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éation d'une configuration JSON avec les propriétés Presto pour LDAP 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 LDAP serveur utilise une liaison anonyme, supprimez les paires internal-communication.authentication.ldap.password nom/valeur internal-communication.authentication.ldap.user et.

Le nom LDAP distinctif (DN) pour les utilisateurs de Presto

Lorsque vous spécifiez la LDAP configuration de 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'ID utilisateur (UID) réel de chaque utilisateur lors de l'authentification par mot de passe afin qu'il corresponde au nom distinctif (DN) spécifié par ce modèle de liaison. Vous avez besoin de OUs ceux auxquels appartiennent les utilisateurs éligibles et de leursDCs. 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 réel (UID). Pour plus d'informations, consultez la rubrique Fn::Sub 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. À l'aide d'Amazon EMR 5.11.0 ou version ultérieure, vous pouvez spécifier plusieurs modèles séparés par 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éation d'une configuration JSON avec les propriétés Presto pour LDAP.

Étape 2 : Définir une configuration de sécurité

Créez une configuration de sécurité avec le chiffrement en transit activé. Pour plus d'informations, consultez la section Création d'une configuration de sécurité dans le guide EMR de gestion Amazon. 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. Le certificat de LDAP serveur est utilisé pour authentifier les connexions des clients au serveur Presto.

Étape 3 : Création d'une configuration JSON avec les propriétés Presto pour LDAP

Vous utilisez la classification presto-config de configuration pour définir les propriétés Presto pourLDAP. Le format et le contenu de presto-config sont légèrement différents selon la EMR version d'Amazon 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.

Les étapes suivantes supposent que vous enregistrez les JSON données dans un fichier, MyPrestoConfig.json. Si vous utilisez la console, chargez le fichier sur un emplacement sécurisé dans Amazon S3 afin de pouvoir le référencer lors de la création du cluster. Si vous utilisez le AWS CLI, vous pouvez référencer le fichier localement.

Exemple Amazon EMR 6.1.0 et versions ultérieures avec Presto SQL (Trino)

L'exemple suivant utilise le nom LDAP d'hôte de Étape 1 : recueillir des informations sur votre LDAP serveur et copier le certificat du serveur sur Amazon S3 pour s'authentifier auprès LDAP du serveur à des fins de liaison. Deux modèles de liaison utilisateur sont spécifiés, ce qui indique que les utilisateurs au sein de l'unité admins d'organisation et de l'datascientistsunité d'organisation sur le LDAP serveur sont éligibles à 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 (:).

EMRLes versions 6.4.0 et ultérieures d'Amazon utilisent le nouveau nom Trino au lieu de Presto. SQL Si vous utilisez Trino, remplacez configuration de prestosql-config dans la classification de configuration suivante avec trino-config et prestosql-password-authenticator avectrino-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" } } ]
Exemple Amazon EMR 5.16.0 et versions ultérieures

L'exemple suivant utilise l'ID LDAP utilisateur et le mot de passe, ainsi que le nom LDAP d'hôte de Étape 1 : recueillir des informations sur votre LDAP serveur et copier le certificat du serveur sur Amazon S3 pour s'authentifier auprès LDAP du serveur à des fins de liaison. Deux modèles de liaison utilisateur sont spécifiés, ce qui indique que les utilisateurs au sein de l'unité admins d'organisation et de l'datascientistsunité d'organisation sur le LDAP serveur sont éligibles à 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" } }]
Exemple Amazon EMR 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" } }]
Exemple Amazon EMR 5.10.0

Amazon EMR 5.10.0 prend uniquement en charge la liaison anonyme, 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 LDAP du serveur et le télécharger sur Amazon S3

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, le fichier de script est référencé comme s3://MyBucket/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 principal après avoir créé le cluster et modifié le mot de passe du keystore à l'aide de la commande keytool.

#!/bin/bash aws s3 cp s3://MyBucket/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

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

Pour créer un cluster Presto avec LDAP authentification à l'aide de la console Amazon EMR
  1. Accédez à la nouvelle EMR console Amazon et sélectionnez Basculer vers l'ancienne console dans la navigation latérale. Pour plus d'informations sur ce qu'implique le passage à l'ancienne console, consultez la rubrique Utilisation de l'ancienne console.

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

  3. Choisissez Presto ainsi que d'autres applications EMR à installer par Amazon, puis sous Configuration logicielle, sélectionnez la version d'Amazon EMR à utiliser. LDAPl'authentification n'est prise en charge qu'avec Amazon EMR 5.10.0 et versions ultérieures.

  4. Sous Modifier les paramètres du logiciel, choisissez Charger JSON depuis S3, entrez l'emplacement dans Amazon S3 du fichier de JSON configuration que vous avez crééÉtape 3 : Création d'une configuration JSON avec les propriétés Presto pour LDAP, puis choisissez Next.

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

  6. 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).

  7. 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 LDAP du serveur et le télécharger sur Amazon S3, par exemple s3 ://MyBucket/L oadLDAPCert .sh, puis choisissez Ajouter.

  8. 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).

  9. 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é.

  10. 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 LDAP authentification à 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 JSON fichier enregistré dans le répertoire 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://MyBucket/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://MyBucket/LoadLDAPCert.sh" \ --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json