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
Suivez les étapes de cette section pour configurer LDAP. Chaque étape contient des exemples et des liens vers des informations complémentaires.
Étapes de configuration de l'authentification LDAP
- Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3
- Étape 2 : Définir une configuration de sécurité
- Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto
- Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3
- Étape 5 : Créer le cluster
Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3
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
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. 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
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 de serveur LDAP et le charger dans Amazon S3. L'exemple de certificat ests3://amzn-s3-demo-bucket/ldap_server.crt
.
Les paramètres du serveur LDAP pour des liaisons anonymes
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
à 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
à 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 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 au mot de passe123456
: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 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 paires nom/valeur internal-communication.authentication.ldap.user
et internal-communication.authentication.ldap.password
.
Le nom unique LDAP pour les utilisateurs Presto
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 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.
É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 Création d'une configuration de sécurité 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. 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
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.
Les étapes suivantes supposent que vous enregistrez les données JSON dans un fichierMyPrestoConfig.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.
Exemple 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 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
dans la classification de configuration suivante par prestosql-config
trino-config
et
par prestosql-password-authenticator
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" } } ]
Exemple 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 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
" } }]
Exemple 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
" } }]
Exemple 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
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é sous la formes3://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
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.
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.
-
Choisissez Créer un cluster et Go to advanced options (Aller aux options avancées).
-
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.
-
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, puis choisissez Suivant.
-
Configurez le matériel et la mise en réseau du cluster, puis choisissez Next (Suivant).
-
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).
-
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, par exemple s3://amzn-s3-demo-bucket/Load LDAPCert .sh, puis choisissez Ajouter.
-
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).
-
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é.
-
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 l'authentification LDAP à l'aide de l' 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 utilises3://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