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'LDAPauthentification
Le Lightweight Directory Access Protocol (LDAP) est un protocole d'application permettant d'interroger et de modifier des objets correspondant à des ressources telles que des utilisateurs et des ordinateurs stockés dans un fournisseur de services d'annuaire LDAP compatible tel qu'Active Directory ou un serveur Open LDAP Server. Vous pouvez utiliser le plugin LDAP d'authentification pour JupyterHub
Les étapes de cette section vous guident à travers les étapes suivantes pour configurer et activer LDAP l'utilisation du plug-in LDAP Authenticator pour. JupyterHub Pour effectuer ces étapes, vous devez être connecté à la ligne de commande du nœud principal. Pour de plus amples informations, veuillez consulter Connexion au nœud principal et aux serveurs de bloc-notes.
Créez un fichier LDAP de configuration contenant des informations sur le LDAP serveur, telles que l'adresse IP de l'hôte, le port, les noms de liaison, etc.
Modifiez
/etc/jupyter/conf/jupyterhub_config.py
pour activer le plug-in LDAP d'authentification pour. JupyterHubCréez et exécutez un script qui se configure LDAP dans le
jupyterhub
conteneur.Interrogez LDAP les utilisateurs, puis créez des répertoires personnels dans le conteneur pour chaque utilisateur. JupyterHub nécessite des répertoires personnels pour héberger les blocs-notes.
Exécuter un script qui redémarre JupyterHub
Important
Avant de procéder à la configurationLDAP, testez votre infrastructure réseau pour vous assurer que le LDAP serveur et le nœud principal du cluster peuvent communiquer selon les besoins. TLSutilise généralement le port 389 via une TCP connexion simple. Si votre LDAP connexion l'utiliseSSL, le TCP port connu pour SSL est 636.
Création du fichier LDAP de configuration
L'exemple ci-dessous utilise les valeurs de configuration d'espace réservé suivantes. Remplacez ces valeurs par des paramètres qui correspondent à votre implémentation.
Le LDAP serveur exécute la version 3 et est disponible sur le port 389. Il s'agit du SSL non-port standard pourLDAP.
Le nom unique de base est
dc=example, dc=org
.
Utilisez un éditeur de texte pour créer le fichier ldap.confhost
avec l'adresse IP ou le nom d'hôte résoluble de votre LDAP serveur.
base dc=example,dc=org uri ldap://
host
ldap_version 3 binddn cn=admin
,dc=example
,dc=org
bindpw admin
Activer le LDAP plug-in d'authentification pour JupyterHub
Utilisez un éditeur de texte pour modifier le fichier /etc/jupyter/conf/jupyterhub_config.py
et ajouter les propriétés ldapauthenticatorhost
avec l'adresse IP ou le nom d'hôte résoluble du LDAP serveur. L'exemple suppose que les objets utilisateur se trouvent au sein d'une unité organisationnelle (ou) nommée people
, et utilise les composants de nom unique que vous avez définis précédemment à l'aide deldap.conf
.
c.JupyterHub.authenticator_class = 'ldapauthenticator.LDAPAuthenticator' c.LDAPAuthenticator.use_ssl = False c.LDAPAuthenticator.server_address = '
host
' c.LDAPAuthenticator.bind_dn_template = 'cn={username},ou=people
,dc=example
,dc=org
'
Configurer LDAP dans le conteneur
Utilisez un éditeur de texte pour créer un script bash avec le contenu suivant :
#!/bin/bash # Uncomment the following lines to install LDAP client libraries only if # using Amazon EMR release version 5.14.0. Later versions install libraries by default. # sudo docker exec jupyterhub bash -c "sudo apt-get update" # sudo docker exec jupyterhub bash -c "sudo apt-get -y install libnss-ldap libpam-ldap ldap-utils nscd" # Copy ldap.conf sudo docker cp ldap.conf jupyterhub:/etc/ldap/ sudo docker exec jupyterhub bash -c "cat /etc/ldap/ldap.conf" # configure nss switch sudo docker exec jupyterhub bash -c "sed -i 's/\(^passwd.*\)/\1 ldap/g' /etc/nsswitch.conf" sudo docker exec jupyterhub bash -c "sed -i 's/\(^group.*\)/\1 ldap/g' /etc/nsswitch.conf" sudo docker exec jupyterhub bash -c "sed -i 's/\(^shadow.*\)/\1 ldap/g' /etc/nsswitch.conf" sudo docker exec jupyterhub bash -c "cat /etc/nsswitch.conf" # configure PAM to create home directories sudo docker exec jupyterhub bash -c "echo 'session required pam_mkhomedir.so skel=/etc/skel umask=077' >> /etc/pam.d/common-session" sudo docker exec jupyterhub bash -c "cat /etc/pam.d/common-session" # restart nscd service sudo docker exec jupyterhub bash -c "sudo service nscd restart" # Test sudo docker exec jupyterhub bash -c "getent passwd" # Install ldap plugin sudo docker exec jupyterhub bash -c "pip install jupyterhub-ldapauthenticator"
Enregistrez le script sur le nœud principal, puis exécutez-le à partir de la ligne de commande du nœud principal. Par exemple, avec le script enregistré sous le nom configure_ldap_client.sh
, rendez le fichier exécutable :
chmod +x configure_ldap_client.sh
Exécutez ensuite le script :
./configure_ldap_client.sh
Ajout d'attributs à Active Directory
Pour rechercher chaque utilisateur et créer l'entrée appropriée dans la base de données, le conteneur JupyterHub docker nécessite les UNIX propriétés suivantes pour l'objet utilisateur correspondant dans Active Directory. Pour plus d'informations, consultez la section Comment continuer à modifier les attributsGID/UIDRFC2307 maintenant que le plug-in d'attributs Unix n'est plus disponible pour le composant logiciel enfichable Utilisateurs et ordinateurs MMC Active Directory ? dans l'article Clarification concernant l'état de la gestion des identités pour Unix (IDMU) et le rôle NIS du serveur dans la version préliminaire technique de Windows Server 2016 et au-delà
homeDirectory
Il s'agit de l'emplacement de l’annuaire de base de l'utilisateur, qui est généralement
/home/
.username
gidNumber
Il s'agit d'une valeur supérieure à 60 000 qui n'est pas déjà utilisée par un autre utilisateur. Vérifiez le fichier
etc/passwd
pour les GID en cours d'utilisation.uidNumber
Il s'agit d'une valeur supérieure à 60 000 qui n'est pas déjà utilisée par un autre groupe. Vérifiez le fichier
etc/group
pour les UID en cours d'utilisation.uid
C'est la même chose que
username
.
Création de répertoires de base utilisateur
JupyterHub a besoin de répertoires personnels dans le conteneur pour authentifier LDAP les utilisateurs et stocker les données d'instance. L'exemple suivant montre deux utilisateurs, Shirley et Diego, dans le LDAP répertoire.
La première étape consiste à interroger le LDAP serveur pour obtenir les informations d'identifiant d'utilisateur et d'identifiant de groupe de chaque utilisateur à l'aide de ldapsearchhost
avec l'adresse IP ou le nom d'hôte résoluble de votre LDAP serveur :
ldapsearch -x -H ldap://
host
\ -D "cn=admin,dc=example,dc=org" \ -w admin \ -b "ou=people,dc=example,dc=org" \ -s sub \ "(objectclass=*)" uidNumber gidNumber
La ldapsearch
commande renvoie une réponse LDIF au format -qui ressemble à ce qui suit pour les utilisateurs Shirley et Diego.
# extended LDIF # LDAPv3 # base <ou=people,dc=example,dc=org> with scope subtree # filter: (objectclass=*) # requesting: uidNumber gidNumber sn # people, example.org dn: ou=people,dc=example,dc=org # diego, people, example.org dn: cn=diego,ou=people,dc=example,dc=org sn: B uidNumber: 1001 gidNumber: 100 # shirley, people, example.org dn: cn=shirley,ou=people,dc=example,dc=org sn: A uidNumber: 1002 gidNumber: 100 # search result search: 2 result: 0 Success # numResponses: 4 # numEntries: 3
À l'aide des informations contenues dans la réponse, exécutez des commandes dans le conteneur de manière à créer un répertoire de base pour chaque nom commun d'utilisateur (cn
). Utilisez la valeur de uidNumber
et de gidNumber
pour corriger la propriété du répertoire de base pour cet utilisateur. Les exemples de commandes suivants le font pour l'utilisateur : shirley
.
sudo docker container exec jupyterhub bash -c "mkdir /home/
shirley
" sudo docker container exec jupyterhub bash -c "chown -R $uidNumber /home/shirley
" sudo docker container exec jupyterhub bash -c "sudo chgrp -R $gidNumber /home/shirley
"
Note
LDAPauthenticator for JupyterHub ne prend pas en charge la création d'utilisateurs locaux. Pour plus d'informations, consultez la note de configuration de l'LDAPauthentificateur sur la création d'utilisateurs locaux
Pour créer manuellement un utilisateur local, utilisez la commande suivante.
sudo docker exec jupyterhub bash -c "echo '
shirley
:x:$uidNumber:$gidNumber::/home/shirley
:/bin/bash' >> /etc/passwd"
Redémarrer le JupyterHub conteneur
Exécutez la commande suivante pour redémarrer le conteneur jupyterhub
:
sudo docker stop jupyterhub sudo docker start jupyterhub