Una de las razones detrás de la popularidad de los directorios LDAP (y una de las razones para el éxito continuado de LDAP) es su adaptabilidad para almacenar tipos de información tan diferentes . El esquema LDAP define y controla los tipos de datos que pueden ser almacenados para entradas individuales. Este articulo cubrirá en cuatro partes, unos de los pocos fundamentos que necesitarás para iniciar la personalización de tu esquema de servidor de directorio LDAP, para adecuarlo a tus necesidades.
¿ Qué es un Esquema de Directorio LDAP ?
En un directorio LDAP, el esquema es la colección de atributos definidos, clases de objetos definidas, y ACIs para controlar dónde es almacenado cada dato.
Cualquier base de datos, sin tener en cuenta su complejidad o tecnología subyacente, tiene un esquema. En términos simples, un esquema es el modelo de los datos, el diseño en lo tocante a cómo los datos se almacenan, qué tipos de datos son rastreados, y las relaciones entre datos almacenados en varias entradas.
Cuando configuras tu directorio LDAP, la información para cualquier entrada dada se almacena en una serie de atributos . Tu puedes crear nuevos tipos de valores que serán almacenados en el directorio.
Colectivamente, a todos los atributos que pueden ser utilizados para un tipo específico de objeto se les llama Clases de Objetos (Object Class, en ingles) . Como con los atributos, puedes definir nuevas clases de objetos para adecuarlas a tus necesidades. Dentro de cada clase de objetos, puedes designar que algunos atributos son requeridos, y otros que son meramente opcionales.
(Para aquellos con un bagaje en bases de datos tradicionales, puede ser útil pensarlo de ésta manera: los campos son similares a los atributos, las tablas son similares a las clases de objetos.)
Además, puedes diseñar tu direcotrio LDAP para que puedas
almacenar objetos similares juntos en la misma rama del directorio LDAP.
Comprendiendo los Atributos LDAP
Simplemente recuerda, un atributo es un contenedor que se puede utilizar para almacenar un solo tipo de información dentro de tu diretorio. Por ejemplo, cuando describes tu coche, tu puedes seguir el rastro de sus atributos incluyendo color, marca, modelo, año, matricula y el estado, la provincia o el pais que emitió la licencia.
Cada uno de esos atributos describe un atributo individual de tu coche. En general, querras separar datos separadamente donde sea posible. (Te has dado cuenta como la información de la matricula está troceada separadamente?)
La personalización del esquema permite al administrador designar tantos tipos de atributos como necesite. Si quieres registrar comida favorita, cumpleaños, fecha del alquiler, o cualquier otra cosa -- todo lo que tienes que hacer es añadir los atributos aporpiados al fichero de configuración de tu servidor de directorio.
Cuando se define un atributo, especificarás cada uno de los siguientes
aspectos. Cubriremos cada una de esos items en detalle.
Para principiantes, antes de crear un atributo nuevo escribe lo que quieres para comprobar si hay un atributo estándar designado para ese proposito. Enlaces a sites listando atributos bien definidos y clases de objetos (object classes) se pueden encontrar en: http://www.ldapman.org/schema-references
Asumiendo que un atributo existente no existía ya, necesitarás añadirlo tú mismo. Para empezar, cada atributo necesita un nombre. Tu nombre de atributo debería ser elegido para que se eviten potenciales conflictos con atributos que puedan ser "oficialmente designados" en el futuro. Puedes querer utilizar tu nombre de empresa u organización para comenzar tu nombre de atributo. Por ejemplo, en Gizmo, Inc., registran los ID de pases de parking dados a cada empleado. Cuando define su esquema, el administrador LDAP de Gizmo puede elegir el nombre de atributo "gizmoNumeroDePaseDeParking". Puede ser razonablemente cierto que estos atributos nunca entraran en conflicto con los "oficialmente designados" utilizados en un momento posterior.
Nótese que las mayúsculas en "gizmoNumeroDePaseDeParking".
Esto es puramente estético, pero verás los atributos (y las
clases de objetos -object classes-) típicamente listados en este
formato. La primera palabra está siempre en minúsculas, y
la primera inicial de cada palabra siguiente está en mayúsculas.
Tu nombre de atributo debería ser bastante largo para ser razonablemente
autodescriptivo, y puede ser compuesrta de letras a-z, números 0-9,
y el caracter guión (dash). (El carácter inicial debe ser
una letra.) Los espacios, subrayados, y carácteres especiales no
están permitidos.
Descripción:
Una definición de una frase del proposito de uso del atributo.
Identificadores de Objecto (Object Identifiers):
Los Identificadores de Objeto (Object Identifiers), o OIDs, son los números de referencia numérica utilizados por el mecanismo interno de base de datos del directorio LDAP . Los nombres de atributos están ahí para tí y para mí, pero los ordenadores son más eficientes cuando tratan con números. Si estás familiarizado con DNS, el concepto es bastante similar -- la mayoría de nosotros utilizamos nombres de máquinas como www.sendmail.net, pero los ordenadores traducen el nombre "amigable para el humano" en direcciones IP antes de tragarse el trabajo.
Cuando la gente en Gizmo especifica un nombre de atributo de "gizmoNumeroDePaseDeParking", el ordenador convierte el nombre en el correspondiente número OID para almacenar y recuperar, en este ejemplo el número OID podría ser 1.3.6.1.4.1.1234.
¿ Necesitas registrar por ti mismo número OID antes de que puedas crear atributos personalizados y clases de objetos (object classes) ? La respuesta depende de tu servidor de Directorio. Muchos de los servidores de directorios que disponibles solamente te permiten especificar un nombre alfanumérico para un número oid. Si Gizmo no había registrado un OID, ellos pueden tener asignado al atributo "gizmoNumeroDePaseDeParking" un OID de "gizmoNumeroDePaseDeParking-oid". Todavía es único, y de ese modo aún sirve para cumplir su proposito.
Puede que no necesites registrar tu propio OID, pero no obstante es una buena idea. Los atributos LDAP, las definiciones de sintáxis y las clases de objetos, todos utilizan OIDs. Así lo hacen SNMP y otros protocolos que soportan el esquema de identificación unificado ANSI.
Obtener tu propio OID es bastante fácil. Puedes ir a ANSI (American
National Standards Institute) y pagar $1000 por un número, o puedes
obtener un gratis de la Autoridad de Internet Asigadora de Números
(IANA) en: http://www.iana.org/
Sintáxis:
Cuando configuras cada atributo, parte de la especificación incluye
la sintaxis que deseas utilizar. Las sintaxis más comunes se listan
aquí:
codigo | nombre sintáctico | Descripción |
dn | Distinguished Name | Permite cualquier cadena alfanumérica.
La coincidencia de patrones de campos de tipo DN está normalizada para equivalencia DN. Por ejemplo, "uid=ratboy,ou=accounts,dc=ldapman,dc=com" es equivalente a "uid=Ratboy, ou=Accounts, dc=LDAPman, dc=com" |
cis | Case Ignore String | Permite cualquier cadena alfanumérica. La información almacenada utilizando cis es guardada preservando las mayúsculas, pero las coincidencias se ejecutan ignorando las mayúsculas. Este es el uso comunmente más utilizado de escritura de sintáxis a causa de su versatilidad. |
ces | Case Exact String | Permite cadenas alfanuméricas. Las coincidencias contra los atributos de formato cis distinguen entre mayúsculas y minúsculas. Utilizado para atributos como contraseñas, dónde sólo desees coincidencia exacta de cadenas. |
int | Integer | Solo se permite almacenar enteros en este atributo. |
tel | Telephone Number | Como cis, pero cuando buscamos contra atributos de este tipo, la coincidencia ignora los espacios y los guiones. Esto permite que "510-555-1212" coincida con "510 555 1212". |
bin | binary | Utilizado para almacenar datos binarios en un formato estandarizado. |
Algunos directorios LDAP te permiten añadir sintáxis personalizadas al almacenamiento del directorio. Mientras que los detalles acerca de cómo hacer esto, están más allá del alcance de este articulo, mencionaré de paso cuando habras querido hacer esto. Cuando creas tu propia sintáxis, puedes programar el servidor de directorio para permitir solo ciertos caracteres en este atributo y puedes especificar como casa contra el atributo contra en el que es ejecutado.
Digamos que quieres almacenar códigos hexadecimales en tu directorio,
y no quieres preocuparte demasiado del formato con que los códigos
son almacenados. (Alguien puede introducir "00 A2 34 FF" mientras que otros
pueden introducir "00a234ff", y una tercera persona puede introducir "00a2.34ff".
Quieres que las busquedas de cualquiera de estos formatos aparezcan.) Para
ajustarse a tus necesidades, querras definir una nueva sintáxis
del tipo "hex" (COMPRUEBA ESTO!), permitiendo caracteres 0-9, A-F, espacios,
y periodos. Las busquedas podrían ignorar las mayúsculas
y normalizadas para eliminar todos los espacios y periodos. Presto! Misión
conseguida. Para más información sobre la creación
de sintáxis personalizada, por favor comprueba la documentación
espacifica de tu servidor de Directorio.
Perdoneme, es usted soltero (single)?
Algunos (pero no todos) los servidores de Directorio permiten especificar que algunos atributos son "únicos". El uso del atributo "único" se hace cuando quieres garantizar que para un registro dado en tu directorio, hay como máximo un valor para ese tipo de atributo. Consideremos una entrada para Mike Jones. Puedes almacenar multiples entradas para su CN (uno para "Mike Jones", otro para "Michael Jones") pero cuando almacenas su servidor primario de correo quieres garantizare que como máximo hay un valor único.
Esto es todo por mi parte. En esta segunda parte de este articulo, hemos discutido acerca de las clases de objeto y como se construyen desde los atributos. En la parte tercera, utilizaremos la información de estas partes primera y segunda para diseñar unas pocas clases de objetos nuevas y personalizar tu esquema de diretorio LDAP.
Espero que hayas encontrado este articulo útil. Por favor, vuelve a www.sendmail.net para comprobar las partes segunda y tercera de este articulo.
Si tienes comentarios o preguntas, envia un correo a donnelly@ldapman.org.
michael
donnelly
3
august 2000