Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de la autenticación LDAP
El Protocolo ligero de acceso a directorios (LDAP) es un protocolo de aplicación para consultar y modificar objetos que corresponden a recursos, como usuarios y equipos, almacenados en un proveedor de servicios de LDAP-compatible directorio, como Active Directory o un servidor OpenLDAP. Puede usar el complemento de autenticación LDAP en Amazon EMR para usar LDAP para la autenticación JupyterHub de JupyterHub
En esta sección se describen los pasos siguientes para configurar y habilitar LDAP mediante el complemento LDAP Authenticator para. JupyterHub Los pasos se realizan mientras está conectado a la línea de comandos del nodo principal. Para obtener más información, consulte Conexión al nodo maestro y a los servidores de blocs de notas.
Cree un archivo de configuración LDAP con información sobre el servidor LDAP, como la dirección IP del host, el puerto, los nombres de enlace, etc.
Modifique
/etc/jupyter/conf/jupyterhub_config.pypara habilitar el complemento de autenticación LDAP para JupyterHub.Cree y ejecute un script que configure LDAP en el contenedor
jupyterhub.Consulta LDAP para los usuarios y, a continuación, crea directorios principales dentro del contenedor para cada usuario. JupyterHub requiere directorios principales para alojar los blocs de notas.
Ejecute un script que se reinicie JupyterHub
importante
Antes de configurar LDAP, pruebe la infraestructura de red para asegurarse de que el servidor LDAP y el nodo principal del clúster puedan comunicarse según sea necesario. TLS suele utilizar el puerto 389 a través de una conexión TCP sencilla. Si su conexión LDAP utiliza SSL, el puerto TCP conocido para SSL es 636.
Crear del archivo de configuración de LDAP
En el siguiente ejemplo se utilizan los siguientes valores de configuración de marcador de posición. Reemplácelos por parámetros que coincidan con su implementación.
El servidor LDAP ejecuta la versión 3 y está disponible en el puerto 389. Es el puerto no SSL estándar para LDAP.
El nombre distinguido (DN) base es
dc=example, dc=org.
Utilice un editor de texto para crear el archivo ldap.confhostSustitúyalo por la dirección IP o el nombre de host resoluble de su servidor LDAP.
base dc=example,dc=org uri ldap://hostldap_version 3 binddn cn=admin,dc=example,dc=orgbindpw admin
Habilite el complemento de autenticación LDAP para JupyterHub
Utilice un editor de texto para modificar el archivo /etc/jupyter/conf/jupyterhub_config.py y añadir propiedades ldapauthenticatorhostSustitúyalo por la dirección IP o el nombre de host resoluble del servidor LDAP. En el ejemplo se presupone que los objetos de usuario se encuentran dentro de una unidad organizativa (ou) denominada people y se utilizan los componentes de nombres distintivos establecidos anteriormente. ldap.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'
Configuración de LDAP en el contenedor
Utilice un editor de texto para crear un script bash con los siguientes contenidos:
#!/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"
Guarde el script en el nodo principal y, a continuación, ejecútelo desde la línea de comandos del nodo principal. Por ejemplo, con el script guardado como configure_ldap_client.sh haga que el archivo sea ejecutable:
chmod +x configure_ldap_client.sh
Y ejecute el script:
./configure_ldap_client.sh
Adición de atributos a Active Directory
Para buscar a cada usuario y crear la entrada adecuada en la base de datos, el contenedor JupyterHub Docker requiere las siguientes propiedades de UNIX para el objeto de usuario correspondiente en Active Directory. Para obtener más información, consulte la sección ¿Cómo puedo seguir editando los atributos de la GID/UID RFC 2307 ahora que los atributos de Unix ya no están disponibles para el complemento MMC de usuarios y equipos de Active Directory? Plug-in en el artículo Aclaración sobre el estado de la administración de identidades para Unix (IDMU) y la función de servidor NIS en la versión preliminar técnica de Windows Server 2016 y en versiones posteriores.
homeDirectoryEsta es la ubicación del directorio de inicio del usuario, que suele ser
/home/.usernamegidNumberEs un valor mayor que 60 000 que todavía no esté utilizando ningún otro usuario. Compruebe en el archivo
etc/passwdcuáles son los gids en uso.uidNumberEs un valor mayor que 60 000 que todavía no esté utilizando ningún otro grupo. Compruebe en el archivo
etc/groupcuáles son los uids en uso.uidEs lo mismo que el.
username
Crear directorios de inicio de los usuarios
JupyterHub necesita directorios principales dentro del contenedor para autenticar a los usuarios de LDAP y almacenar los datos de la instancia. El siguiente ejemplo muestra dos usuarios, shirley y diego, en el directorio LDAP.
El primer paso consiste en consultar en el servidor LDAP la información del identificador de usuario y del identificador de grupo de cada usuario mediante ldapsearch, host por la dirección IP o el nombre de host resoluble de su servidor LDAP:
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
El ldapsearch comando devuelve una LDIF-formatted respuesta similar a la siguiente para los usuarios shirley y 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
Con la información de la respuesta, ejecute comandos en el contenedor para crear un directorio de inicio para cada nombre común de usuario (cn). Utilice uidNumber y gidNumber para fijar la propiedad del directorio de inicio de ese usuario. Los siguientes comandos de ejemplo hacen esto para el usuario. 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"
nota
El autenticador LDAP para no JupyterHub admite la creación de usuarios locales. Para obtener más información, consulte Nota de la configuración del autenticador LDAP sobre la creación de usuarios locales
Para crear manualmente un usuario local, utilice el siguiente comando.
sudo docker exec jupyterhub bash -c "echo 'shirley:x:$uidNumber:$gidNumber::/home/shirley:/bin/bash' >> /etc/passwd"
Reinicie el contenedor JupyterHub
Ejecute los siguientes comandos para reiniciar el contenedor de jupyterhub:
sudo docker stop jupyterhub sudo docker start jupyterhub