OpenLDAP es una implementación
libre y de código abierto del protocolo
Lightweight Directory Access Protocol (LDAP) desarrollada por el proyecto
OpenLDAP.
Está liberada bajo su
propia licencia OpenLDAP
Public License. LDAP es un protocolo de
comunicación independiente de la plataforma.
Muchas distribuciones
GNU/Linux incluyen el software OpenLDAP para el soporte LDAP. Este software también corre en
plataformas BSD, AIX, HP-UX, Mac OS X, Solaris, Microsoft Windows (NT y
derivados, incluyendo 2000, XP, Vista), y z/OS.
OpenLDAP es un servicio de directorio
que, entre otras cosas, nos permite contener los datos (logins, claves) de una
serie de usuarios y realizar la autentificación en máquinas clientes a través
de un único servidor OpenLDAP.
Componentes:
Básicamente,
OpenLDAP posee tres componentes principales:
ü
slapd
- Dominio de servidor y herramientas
ü
Bibliotecas
que implementan el protocolo LDAP
ü
Programas
cliente: ldapsearch, ldapadd, ldapdelete, entre otros.
Adicionalmente, el proyecto OpenLDAP es anfitrión de los
sub-proyectos:
ü
JLDAP
- biblioteca de clases LDAP para Java.
ü
JDBC-LDAP
- controlador Java JDBC – LDAP.
ü
ldapc++
- biblioteca de clases LDAP para C++.
Algunos
desarrollos son creados específicamente para facilitar la gestión de sistemas
de directorio como OpenLDAP para usuarios que buscan una interfaz intuitiva,
además de añadir otras herramientas y características.
Ventajas del servicio:
Hay una serie de ventajas
respecto a otros sistemas de directorio que hacen que OpenLDAP sea el sistema
más flexible y escalable como por ejemplo está optimizado en lectura de
registros, la posibilidad de múltiples directorios independientes, la mayoría
de aplicaciones y sistemas operativos disponen de soporte para LDAP, realizar
criterios de búsqueda complejos, permitir la réplica de la base de datos a otro
servidor.
Un
ejemplio de una entrada individual LDAP
Miremos un ejemplo. Utilizaremos el registro de LDAP de Fran Smith, nuestro amigable empleado de Foobar, Inc. El formato de esta entrada es un LDIF, el formato utilizado cuando exportamos e importamos entradas del directorio LDAP.
Replicación LDAP
Los servidores LDAP pueden ser configurados para replicar algunos o todos de sus datos, basándose en enviar o recojer la información, utilizando autentificación simple o autetificación basada en certificados.
Por ejemplo, Foobar tiene un servidor LDAP "público" corriendo en el puerto 389 de ldap.foobar.com. Este servidor es utilizado por la característica direccionamieto de correo electrónico pinpont de Communicator de Netscape, el comando "ph" de UNIX, y otras localizaciones dónde el usuario pudiera consultar un número de teléfono de un empleado o el contacto de un cliente. El servidor LDAP maestro de la empresa está ejecutandose en el mismo sistema pero, en cambio, en el puerto 1389.
Podrías no querrer que los empleados necesariamente esten buscando en el directorio para preguntar por el gerente de activos o recibir datos, no sería deseable ver las cuentas de TI (como "root") mostrandose en el directorio de la empresa. Para acomodar esas desagradables realidades, Foobar replica subárboles de directorio seleccionados desde su servidor LDAP maetroa su servidor "público". La replicación excluye los subárboles conteniendo datos que ellos desean ocultar. Para mantener las cosas actualizadas en todo momento, el servidor del directorio master se configura para hacer inmediatamente la sincronización basada en envio. Nótese que esta aproximación está diseñada por conveniencia, no por seguridad: la idea es permitir a potenciales usuarios hacer simples consultas al otro puerto LDAP si desean buscar todos los datos disponibles.
Digamos que Foobar está gestionando si informacion de contacto de clientes via LDAP, sobre una conexión de bajo ancho de banda entre Oakland y Europa. Pueden querer configurar la repliación desde ldap.foobar.com:1389 a munich-ldap.foobar.com:389 como sigue:
Securidad y control de acceos
LDAP provee de una complejo nivel de instancias de control de acceso, o ACIs. A causa de que el acceso puede ser controlado en el lado del servidor, es muchos más seguro que los metodos de seguridad que trabajan haciendo seguro a través del software cliente.
Con LDAP ACIs, puedes hacer cosas como:
Miremos un ejemplo. Utilizaremos el registro de LDAP de Fran Smith, nuestro amigable empleado de Foobar, Inc. El formato de esta entrada es un LDIF, el formato utilizado cuando exportamos e importamos entradas del directorio LDAP.
dn: uid=fsmith, ou=employees, dc=foobar, dc=com
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: foobarPerson
uid: fsmith
givenname: Fran
sn: Smith
cn: Fran Smith
cn: Frances Smith
telephonenumber: 510-555-1234
roomnumber: 122G
o: Foobar, Inc.
mailRoutingAddress: fsmith@foobar.com
mailhost: mail.foobar.com
userpassword: {crypt}3x1231v76T89N
uidnumber: 1234
gidnumber: 1200
homedirectory: /home/fsmith
loginshell: /usr/local/bin/bash
Para empezar,
los valores de los atributos son almacenados con las mayúsculas
intactas, pero las búsquedas contra ellos no distinguen mayúsculas
por defecto. Ciertos atributos (como la contraseña) distinguen mayúsculas
cuando se buscan.
Separemos esta
entrada y observemosla pieza a pieza.
dn: uid=fsmith, ou=employees, dc=foobar, dc=com
Este es el DN
completo de la entrada LDAP de Fran, incluyendo el path completo a la entrada
en el árbol del directorio. LDAP (y X.500) utilizan uid
para representar "ID de Usuario", no debe ser confundido con el número
uid de UNIX.
objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson objectclass: foobarPersonUno puede asignar tantas clases de objeto como sean aplicables a cualquier tipo de objeto dado. La clase de objeto person requiere que los campos cn (nombre común) y sn (apellido, por sus iniciales en inglés surname). La clse de objeto person también permite otros campos opcionales, incluyendo nombre dado (givenname), número de teléfono (telephonenumber) y otros más. La clase de objeto organizationalPerson añade más opciones a los valores de person e inetOrgPerson añade aún mñas opciones a esta (incluyendo la información de correo electrónico). Finalmente foobarPerson es una clase de objeto personalizada de Foobar que añade todos los atributos del cliente que ellos desean conservar en su empresa.
uid: fsmith givenname: Fran sn: Smith cn: Fran Smith cn: Frances Smith telephonenumber: 510-555-1234 roomnumber: 122G o: Foobar, Inc.Como se menciono antes, uid representa el ID de Usuario. Simplemente tradúcelo en tu cabeza por "login" dondequiera que los veas. Date cuenta que hay múltiples entradas para el CN. Como se mencionó anteriormente, LDAP permite que algunos atributos tengan valores múltiples, con el número de valores sean arbitrarias. ¿ Cuando puedes querer esto ? Digamos que estás buscando en el directorio LDAP de la empresa el número de teléfono de Fran. Mientras que tu puedes conocerla como Fran (habiendola oido derramar sus tripas sobre las margaritas del almuerzo en más de una ocasión), la gente en RRHH pueden referirse a ella (algo más formalmente) como Frances. A causa de que ámbas versiones de su nombre están almacenadas, las dos búsquedas encontrarán exitosamente el número de teléfono de Fran, su dirección de correo electrónico, el número de su cubículo, y demás.
mailRoutingAddress: fsmith@foobar.com
mailhost: mail.foobar.com
Como la mayoría
de las empresas en Internet, Foobar utiliza Sendmail para la entrega de
correo interno y su enrutamiento. Foobar almacena toda la información
de enrutamiento de correo de los usuarios en LDAP, el cual es totalmente
soportado por las recientes versiones de Sendmail.
userpassword: {crypt}3x1231v76T89N
uidnumber: 1234
gidnumber: 1200
gecos: Frances Smith
homedirectory: /home/fsmith
loginshell: /usr/local/bin/bash
Nótese que los
adminitradores de sistema de Foobar almacenan toda la información
de contraseñas NIS también en LDAP. En Foobar la clase de
objeto foobarPerson añade ésta capacidad. Notese
que la contraseña del usuario es almacenada en el formato crypt
de UNIX. El uid de UNIX es almacenado aquí como uidnumber.
Tenga en cuenta, que hay una RFC completa acerca de almacenar información
NIS en LDAP. Hablaré de integración con NIS en un futuro
articulo.
Replicación LDAP
Los servidores LDAP pueden ser configurados para replicar algunos o todos de sus datos, basándose en enviar o recojer la información, utilizando autentificación simple o autetificación basada en certificados.
Por ejemplo, Foobar tiene un servidor LDAP "público" corriendo en el puerto 389 de ldap.foobar.com. Este servidor es utilizado por la característica direccionamieto de correo electrónico pinpont de Communicator de Netscape, el comando "ph" de UNIX, y otras localizaciones dónde el usuario pudiera consultar un número de teléfono de un empleado o el contacto de un cliente. El servidor LDAP maestro de la empresa está ejecutandose en el mismo sistema pero, en cambio, en el puerto 1389.
Podrías no querrer que los empleados necesariamente esten buscando en el directorio para preguntar por el gerente de activos o recibir datos, no sería deseable ver las cuentas de TI (como "root") mostrandose en el directorio de la empresa. Para acomodar esas desagradables realidades, Foobar replica subárboles de directorio seleccionados desde su servidor LDAP maetroa su servidor "público". La replicación excluye los subárboles conteniendo datos que ellos desean ocultar. Para mantener las cosas actualizadas en todo momento, el servidor del directorio master se configura para hacer inmediatamente la sincronización basada en envio. Nótese que esta aproximación está diseñada por conveniencia, no por seguridad: la idea es permitir a potenciales usuarios hacer simples consultas al otro puerto LDAP si desean buscar todos los datos disponibles.
Digamos que Foobar está gestionando si informacion de contacto de clientes via LDAP, sobre una conexión de bajo ancho de banda entre Oakland y Europa. Pueden querer configurar la repliación desde ldap.foobar.com:1389 a munich-ldap.foobar.com:389 como sigue:
periodic pull: ou=asia,ou=customers,o=sendmail.com
periodic pull: ou=us,ou=customers,o=sendmail.com
immediate push: ou=europe,ou=customers,o=sendmail.com
La conexión
de recepción mantendrá las cosas en sincronia cada 15 minutos,
lo cual probablemente podría ser bastante ajustado en este escenario.
La conexión de envío garantizará que cualquier cambio
hecho a la información del contacto Europeo será enviado
a Munich inmediatamente.
Dado este esquema
de replicación, ¿ dónde podrían los usuarios
conectar para acceder a sus datos ? Los usuarios en Munich simplemente
podrían conectar a su servidor local. Si se estuvieran haciendo
cambios a los datos, el servidor local LDAP podría referirse para
esos cambios al servidor LDAP maestro, el cual podría enviar todos
los cambios de nuevo el servidor local para mantenerlo en sincronia. este
es uno de los tremendos beneficios para los usuarios locales: todas sus
consultas LDAP (la mayoría en lectura) son hechas contra su servidor
local, que es sustancialmente más rápido. Cuando es momento
de hacer un cambio a su información, los usuarios finales no necesitan
preocuparse acerca de la reconfiguración de su software cliente,
porque los servidores de directorio LDAP manejan el intercambio de datos
por ellos.
Securidad y control de acceos
LDAP provee de una complejo nivel de instancias de control de acceso, o ACIs. A causa de que el acceso puede ser controlado en el lado del servidor, es muchos más seguro que los metodos de seguridad que trabajan haciendo seguro a través del software cliente.
Con LDAP ACIs, puedes hacer cosas como:
- Conceder a los usuarios la capacidad de cambiarse su número de teléfono de casa y su domicilio, mientras que se les restringe el acceso a solo lectura para otro tipo de datos (como título de trabajo o login de gerente).
- Conceder a cualquiera en el grupo "HR-admins" (administradores de RRHH) la capacidad de modificar la información de los usuarios para los siguientes campos: gerente, título de trabajo, número ID del empleado, nombre del departamento, y número del departamento. No habrán permisos de escritura para otros campos.
- Denegar el acceso de lectura a cualquiera que intente consultar al LDAP por la contraseña de un usuario, mientras que se seguirá permitiendo al usuario cambiar su propia contraseña.
- Conceder permisos solo de lectura a los gerentes para los números de teléfono de casa de sus informadores directos, mientras que se deniega este privilegio a cualquier otro.
- Conceder a cualquiera en el grupo "host-admins" crear, borrar, y editar todos los aspectos de información del hosts almacenados en LDAP.
- A través de una página Web, permitir a la gente en "foobar-ventas" selectivamente conceder o denegarse a ellos mismos el acceso de lectura a subsets de la base de datos de contactos de cliente. Esto podría, a su vez, permitir a esos individuos descargar información de contacto de los clientes a sus ordenadores portátiles o a sus PDA. (Esto será más útil si tu herramienta de forzamiento de automatización para ventas es LDAP-izable.)
- A través de una página Web, permitir a cualquier propietario de grupo añadir o eliminar entradas de sus grupos. Por ejemplo, esto podría permitir a los gerentes de ventas conceder o eliminar el acceso a la gente de ventas para modificar las páginas Web. Esto podría permitir a los propietarios de los alias de correo añadir o eliminar usuarios sin contactar con TI. Las listas de distribución designadas como "pública" pueden permitir que los usuarios se añadan o se eliminen ellos mismos (pero solo a ellos mismos) de o a esos alias de correo. Las restricciones pueden basarse también en direcciones IP o nombres de máquina. Por ejemplo, los campos pueden hacerse legibles solo si la dirección IP del usuario empeiza por 192.168.200.*, o si la resolución inversa del nombre de máquina del usuario por DNS se mapea a *.foobar.com.
Consulta de datos
LDAP brinda un conjunto de funciones (procedimientos) para llevar a cabo solicitudes en los datos para buscar, cambiar y eliminar entradas en los directorios.A continuación encontrará una lista de las principales operaciones que puede realizar LDPA:
Funcionamiento Descripción Abandon (Abandonar) Cancela la operación previa enviada al servidor Add (Agregar) Agrega una entrada en el directorio Bind (Enlazar) Inicia una nueva sesión en el servidor LDAP Compare (Comparar) Compara las entradas en un directorio según los criterios Delete (Eliminar) Elimina una entrada de un directorio Extended (Extendido) Realiza operaciones extendidas Rename (Cambiar nombre) Cambia el nombre de una entrada Search (Buscar) Busca entradas en un directorio Unbind (Desenlazar) Finaliza una sesión en el servidor LDAP
|
No hay comentarios:
Publicar un comentario