Todo el mundo utiliza directorios dentro o fuera del ordenador. Después de todo, si no fuera por las programaciones televisivas que aparecen en los periódicos, se perderían horas cambiando de canal, buscando algo que ver.

Otro tipo de directorio que muchos encuentran indispensable es la guía de teléfonos. De hecho, las guías telefónicas son la fuente de analogía para dos formas de búsqueda necesarias en los directorios informáticos. Existe la búsqueda en "páginas blancas" por atributo, por medio de la cual se puede conocer el nombre u otro dato del objeto y cuya búsqueda se realiza utilizando ese fragmento de información. El segundo tipo de búsqueda, llamada búsqueda en "páginas amarillas", se realiza por categoría. El tener los dos tipos de búsqueda disponibles implica que no es necesario conocer muchos datos de un objeto para localizarlo.

La falta de coherencia que puede ir unida a los directorios tiene grandes consecuencias en una red de cualquier tamaño. Los servicios de directorio reales -un catálogo global de servicios y recursos de la red- no existen en las redes Microsoft Windows NT. Las funciones de directorio disponibles en la versión 4 proporcionan los tan importantes inicio único y punto de administración único que los entornos empresariales necesitan, pero tienen serias deficiencias cuando se involucra una gran cantidad de usuarios. Los intentos de organizar documentos en carpetas y directorios funcionan hasta cierto punto, pero cuando el número de objetos se incrementa, su administración se vuelve compleja y pesada.

Hasta ahora, el servicio de directorio informático considerado como el mejor era Servicios de directorio de Novell (NDS, Novell Directory Services), incorporado en NetWare 4.0 en 1993.

Introducción a los Servicios de Directorio (DC)

En un entorno informático Windows NT normal, un usuario puede iniciar sesión en la red con un nombre de usuario, digamos Mperez, y una contraseña. Asumiendo que tiene los permisos necesarios, Mperez puede pulsar con el ratón en Entorno de red o conectarse a una unidad de red y buscar los archivos que necesite.

Todo esto funciona muy bien hasta que el ámbito de la red cambia. La empresa introduce correo electrónico y Mperez obtiene otra identidad (mariaperez@dominio.com). Los servicios, bases de datos y herramientas administrativas adicionales -cada uno identificando a María Pérez de forma ligeramente distinta- necesitan estar accesibles por el mismo usuario. Cuando se considera que todo esto es sólo para uno de cientos e incluso miles de usuarios, no cuesta ver lo difícil de resolver que pueden resultar los errores que pueden presentarse. A medida que el número de objetos en una red crece, los servicios de directorio -un lugar centralizado donde almacenar la información administrativa que se emplea para gestionar el sistema informático completo- se vuelven esenciales.

Los servicios de directorio se diferencian de un directorio en que son tanto la fuente de la información de directorio como los servicios que hacen que la información esté disponible para los usuarios. Al ser al mismo tiempo una herramienta de administración y una herramienta para el usuario final, los servicios de directorio necesitan contemplar estas necesidades:

Aunque Microsoft ha empleado alguna vez el término «servicios de directorio» en relación con Windows NT (al igual que en el Administrador de servicios de directorio para NetWare), Windows NT no proporciona un auténtico servicio de directorio jerárquico. En Windows NT, las funciones de directorio se dividen en una gran cantidad de servicios basados en dominios. El Servidor del Sistema de nombres de dominio (DNS, Domain Name System) proporciona la traducción de nombres en números IP y se integra con los servidores con Protocolo de configuración dinámica de host (DHCP, Dynamic Host Configuration Protocol) utilizados para asignar dinámicamente direcciones TCP/IP. El Servicio de nombres de Internet para Windows (WINS, Windows Internet Naming Service) se utiliza para la resolución de nombres de NetBIOS y lo necesitan las redes Windows NT para compartir archivos y algunas aplicaciones. La seguridad se implementa por medio de listas de control de acceso (ACLs, Access Control List), la base de datos del gestor de cuentas de seguridad (SAM, Security Accounts Manager) y otros servicios.

En Microsoft Windows 2000 Server, Active Directory reemplaza la colección de funciones de directorio de Windows NT con una implementación integrada que incluye DNS, DHCP, Protocolo de acceso ligero a directorios (LDAP, Lightweight Directory Access Protocol) y Kerberos.

X.500 es un estándar para servicios de directorio establecido por la Unión internacional de telecomunicaciones (ITU, International Telecommunications Union). La Organización internacional de normalización/ Comisión electrotécnica internacional (ISO/IEC, International Standars Organization/International Electrotechnical Commission) también ha publicado el mismo estándar. El estándar X.500 define el modelo de información utilizado en los servicios de directorio. En este modelo, toda la información de un directorio se almacena en entradas, cada una de las cuales pertenece al menos a una clase de objetos. La información real de una entrada se determina por los atributos que contiene.

El estándar original X.500 de 1988 se centró principalmente en los protocolos que debían implementarse. El Protocolo de acceso a directorios (DAP, Directory Access Protocol) especifica cómo acceden las aplicaciones de usuario a la información del directorio. El Protocolo de servicios de directorio (DSP, Directory Service Protocol) se utiliza para propagar las peticiones al directorio entre los servidores de directorio cuando el servidor de directorio local no puede satisfacerlas.

Ningún servicio de directorio existente implementa completamente el estándar X.500, pero todos se modelan según las especificaciones básicas de X.500, como Active Directory. 

Active Directory en Windows 2000 (AD)

Active Directory posee numerosas ventajas, no sólo el poder manejar instalaciones de cualquier tamaño, desde un único servidor con unos cientos de objetos hasta miles de servidores con millones de objetos. Active Directory también simplifica enormemente el proceso de localizar recursos a lo largo de una gran red. La Interfaz de servicios de Active Directory (ADSI, Active Directory Services Interface) permite a los desarrolladores hacer que sus aplicaciones soporten el directorio, proporcionando a los usuarios una única forma de acceder a múltiples directorios, ya estén basados en LDAP, NDS o en los Servicios de directorio de NT (NTDS, NT Directory Services).

En Windows 2000, Active Directory integra el concepto de espacio de nombres de Internet con los servicios de directorio del sistema operativo. Esta combinación permite la unificación de múltiples espacios de nombres entre, por ejemplo, la mezcla de entornos software y hardware de las redes corporativas, incluso de un lado a otro de las fronteras entre sistemas operativos. La capacidad de subsumir directorios empresariales individuales en un directorio de propósito general implica que Active Directory puede reducir notablemente los costes de la administración de múltiples espacios de nombres.

Active Directory no es un directorio X.500. En cambio, utiliza LDAP como protocolo de acceso y soporta el modelo de información X.500 sin requerir sistemas que soporten toda la sobrecarga de X.500. LDAP está basado en TCP/IP y es considerablemente más simple que el DAP de X.500. Al igual que X.500, el modelo de directorio de LDAP se basa en entradas, donde se utiliza el nombre distinguido para identificar una entrada sin ambigüedad. Pero en lugar de utilizar la estructurada codificación de datos de X.500, LDAP adopta un enfoque sencillo basado en cadenas para representar las entradas de directorio. LDAP utiliza muchas de las técnicas de acceso a directorio especificadas en el estándar DAP de X.500 pero requiere menos recursos del cliente, haciéndolo más práctico cuando se tiende a usarlo sobre un enlace TCP/IP.

Active Directory también soporta directamente el Protocolo de transferencia de hipertexto (HTTP, Hypertext Transfer Protocol). Todo objeto de Active Directory se puede mostrar como una página en Lenguaje de marcas de hipertexto (HTML, Hypertext Markup Languaje) en un explorador Web. El directorio soporta extensiones para que el Servicio de información de Internet (IIS, Internet Information Service) de Microsoft traduzca las peticiones HTTP para objetos del directorio en páginas HTML para mostrarlas en cualquier cliente HTML.

Active Directory permite un punto único de administración para todos los recursos públicos, entre los que se pueden incluir archivos, dispositivos periféricos, conexiones al host, bases de datos, accesos Web, usuarios, otros objetos arbitrarios, servicios, etc. Utiliza el DNS de Internet como servicio de localización, organiza los objetos en dominios dentro de una jerarquía de unidades organizativas (OU, Organizational Unit) y permite que varios dominios se conecten en una estructura en árbol. Los conceptos de Controlador primario de dominio (PDC, Primary Domain Controller) y Controlador de reserva del dominio (BDC, Backup Domain Controller) desaparecen. Active Directory sólo utiliza controladores de dominio, y las actualizaciones se replicarán en el resto de controladores de dominio.

Terminología y conceptos de Active Directory

Algunos de los términos empleados para describir conceptos de Active Directory se han utilizado durante algún tiempo en otros contextos, por lo que resulta importante comprender lo que significan cuando se utilizan específicamente en referencia al Active Directory.

Espacio de nombres y resolución de nombres

«Espacio de nombres» es quizás un término poco familiar para un concepto muy familiar. Cada servicio de directorio es un espacio de nombres -un área circunscrita en la cual un nombre se puede resolver-. Un listado de programas televisivos constituye un espacio de nombres en el cual se puede traducir un programa de televisión al canal correspondiente. Un sistema de archivos informático constituye un espacio de nombres en el cual se puede relacionar un nombre de archivo con el propio archivo.

Active Directory constituye un espacio de nombres en el cual se puede relacionar el nombre de un objeto del directorio con el propio objeto. La resolución de nombres es el proceso de relacionar un nombre con algún objeto o información que representa dicho nombre.

Atributo

Cada fragmento de información que describe algún aspecto de una entrada se denomina atributo. Un atributo está formado por un tipo del atributo y uno o más valores del atributo. Un ejemplo de un tipo de atributo puede ser "número de teléfono", y un ejemplo de valor del atributo número de teléfono puede ser «914 785 426».

Objeto

Un objeto es un conjunto determinado de atributos que representa algo concreto, como un usuario, una impresora o una aplicación. Los atributos contienen la información que describe lo que se identifica por medio del objeto de directorio. Entre los atributos de un usuario se podrían incluir el nombre del usuario, los apellidos y la dirección de correo electrónico. La clasificación de un objeto define qué tipos de atributos se utilizan. Por ejemplo, los objetos clasificados como «usuarios» podrían permitir el uso de tipos de atributos como «nombre», «número de teléfono» y «dirección de correo electrónico», mientras que la clase de objetos «empresa» permitiría tipos de atributos como «nombre de la empresa» y «tipo de negocio». Un atributo puede tener uno o más valores, dependiendo de su tipo.

Identidad del objeto

Cada objeto en Active Directory tiene una identidad única. Los objetos se pueden mover o renombrar, pero su identidad nunca cambia. Los objetos se conocen internamente por su identidad, no por su nombre actual. La identidad de un objeto es un identificador único global (GUID, Globally Unique Identifier), asignado por el Agente del sistema del directorios (DSA, Directory System Agent) cuando se crea el objeto. El GUID se almacena en un atributo, objectGUID, que forma parte de todo objeto. El atributo objectGUID no se puede modificar ni borrar. Cuando se almacena una referencia a un objeto de Active Directory en un almacén externo (por ejemplo, una base de datos), se debería utilizar objectGUID porque, a diferencia de un nombre, no cambiará.

Contenedor

Un contenedor se parece a un objeto en el hecho de que posee atributos y forma parte del espacio de nombres de Active Directory. Sin embargo, a diferencia de un objeto, un contenedor no representa algo concreto. Es un almacén de objetos y otros contenedores.

Árbol y subárbol

Un árbol en Active Directory es simplemente una extensión de la idea de árbol de directorios. Es una jerarquía de objetos y contenedores que muestra cómo se relacionan los objetos o el camino desde un objeto hasta otro. Los puntos finales del árbol son generalmente objetos.

Un subárbol es cualquier camino sin interrupciones del árbol, incluyendo todos los miembros de cada contenedor de dicho camino.

Nombre distinguido

Todo objeto en Active Directory tiene lo que se denomina un nombre distinguido (DN, Distinguished Name). En este contexto, «distinguido» implica las cualidades que permiten distinguir al nombre. Los nombres distinguidos identifican el dominio que contiene el objeto además del camino completo a través de la jerarquía del contenedor utilizado para alcanzar el objeto. Un DN típico podría ser CN=María Pérez,OU=Investigación,DC=dominio,DC=com. Este DN identifica al objeto usuario «María Pérez» en el departamento de investigación, en el dominio dominio.com.

CN se interpreta como nombre propio (Common Name), OU como unidad organizacional (Organizational Unit) y DC significa controlador de dominio (Domain Controller). Algunos atributos se derivan del modelo X.500; un administrador puede definir otros.

Active Directory utiliza también un nombre distinguido relativo (RDN, Relative Distinguished Name), el cual forma parte del nombre distinguido que es un atributo del propio objeto. En el ejemplo anterior, el RDN del objeto usuario es CN = María Pérez. El RDN del objeto padre es OU = Investigación.

El fragmento "DC=" de un nombre distinguido permite a los directorios X.500 conectarse al espacio de nombres DNS, lo que también hace Active Directory. La raíz del espacio de nombres global de Active Directory es el espacio de nombres DNS. De este modo, los nombres de dominio DNS se mezclan con el esquema de denominación de Active Directory. Por ejemplo, dominio.com es un nombre de dominio DNS correcto y también podría ser el nombre de un dominio de Active Directory. La integración con DNS implica que Active Directory se adapte perfectamente a entornos de Internet e intranet. Los servidores de Active Directory pueden conectarse directamente a Internet para simplificar las conexiones seguras y el comercio electrónico con clientes y socios.

Esquema

" Esquema" es un término utilizado generalmente en el trabajo con bases de datos. En el contexto de Active Directory, el esquema son todos los fragmentos que componen un Active Directory: los objetos, atributos, contenedores, etc. Active Directory posee un esquema predeterminado que define la mayoría de las clases de objetos habituales, como usuarios, grupos, computadoras, departamentos, políticas de seguridad y dominios.

El esquema de Active Directory se puede actualizar de forma dinámica. Esto es, una aplicación puede ampliar el esquema con nuevos atributos y clases y utilizar las extensiones inmediatamente. Las actualizaciones del esquema se realizan creando o modificando los objetos esquema almacenados en el directorio. ACLs protege los objetos esquema, de forma que sólo los usuarios autorizados puedan modificar el esquema.

ARQUITECTURA DE ACTIVE DIRECTORY

Active Directory no es, estrictamente hablando, un servicio de directorio X.500, aunque como el resto de servicios de directorio, se deriva de ese estándar. Las características de la arquitectura de Active Directory son:

El Directory System Agent (DSA)

El DSA es el proceso que proporciona acceso al almacén físico de la información del directorio ubicada en un disco duro. El DSA es parte del subsistema Local System Authority (LSA) de Windows 2000. Los clientes pueden acceder a la información del directorio por medio de alguno de los siguientes mecanismos:

Formatos de denominación

Active Directory soporta varios formatos de denominación para adaptarse tanto a los usuarios como a las aplicaciones:

El modelo de datos

El modelo de datos de Active Directory se deriva del modelo de datos de X.500. El directorio contiene objetos que representan elementos variados, descritos por medio de atributos. El universo de objetos que se pueden almacenar en el directorio está definido en el esquema. Para cada clase de objeto, el esquema define qué atributos debe tener un ejemplar de la clase, qué atributos adicionales podría tener y qué clase de objetos puede ser su padre.

Implementación del esquema

El esquema de Active Directory está implementado como un conjunto de ejemplares de clases de objetos almacenados en el directorio. Esto difiere bastante de los directorios que poseen un esquema pero lo almacenan como un archivo de texto que se lee al iniciar. Almacenar el esquema en el directorio tiene muchas ventajas. Por ejemplo, las aplicaciones de los usuarios pueden leerlo para averiguar qué objetos y propiedades se encuentran disponibles.

El modelo de seguridad

Active Directory es parte de la base de confianza informática de Windows 2000 y participa completamente en la infraestructura de seguridad de Windows 2000. El modelo de seguridad distribuida se basa en el protocolo de autenticación Kerberos del MIT (versión 5). La autenticación Kerberos incorpora seguridad tanto de clave pública como de clave privada, utilizando el mismo soporte ACL que el sistema operativo subyacente, Windows 2000. Los ACL protegen todos los objetos de Active Directory. Determinan quién puede ver el objeto, qué atributos puede ver cada usuario y qué acciones puede realizar cada usuario sobre el objeto. Si un usuario no tiene permiso para ver un objeto o un atributo, nunca conocerá su existencia.

Un ACL, a su vez, se construye con Entradas de control de acceso (ACE, Access Control Entries) almacenadas junto al objeto que protege el ACL. En Windows NT y Windows 2000, un ACL se almacena como un valor binario, llamado descriptor de seguridad. Cada ACE contiene un identificador de seguridad (SID, Security Identifier) que identifica al director (usuario o grupo) al cual el ACE aplica y proporciona la información sobre qué tipo de acceso permite o rechaza el ACE.

Los ACL de los objetos del directorio contienen ACE que se aplican a la totalidad del objeto y ACE que se aplican a atributos individuales del objeto. Esto permite a un administrador controlar no sólo qué usuarios pueden ver un objeto, sino también qué propiedades pueden ver. Por ejemplo, todos los usuarios podrían tener permiso para leer los atributos correo electrónico y número de teléfono del resto de usuarios, pero el acceso a las propiedades de seguridad de los usuarios estaría prohibido para todos excepto para los miembros de un grupo de seguridad especial de administradores. Además, los usuarios individuales deberían tener permiso de escritura a atributos personales como el teléfono y las direcciones de correo de sus propios objetos usuario.

Active Directory es el almacén del sistema de seguridad, incluyendo las cuentas de usuario, grupos y dominios. Este almacén reemplaza a la base de datos del registro de cuentas y es un componente de confianza dentro del LSA.

Delegación y herencia

La delegación es una de las características de seguridad más importante de Active Directory. Un administrador puede autorizar a un usuario a realizar un conjunto específico de acciones en algunos subárboles identificados del directorio. Esto se denomina administración. La administración delegada permite un control muy fino sobre quién puede hacer qué y permite a los administradores delegar autoridad sin conceder privilegios elevados. Esto elimina también la necesidad de los administradores de dominio con amplia autoridad sobre grandes segmentos de la población de usuarios.

Los administradores conceden permisos sobre operaciones concretas en clases de objetos concretas añadiendo ACE al ACL del contenedor.

La herencia permite propagar un ACE dado desde el contenedor en el que fue aplicado a todos los hijos de dicho contenedor. La herencia se puede combinar con la delegación para conceder derechos administrativos a subárboles completos del directorio con una única operación.

Contextos de denominación y particiones

Active Directory se compone de uno o más contextos de denominación o particiones. Un contexto de denominación es cualquier subárbol contiguo del directorio. Los contextos de denominación son las unidades de división. Un servidor único siempre contiene al menos tres contextos de denominación:

El Catálogo global

El DN de un objeto incluye suficiente información para localizar una copia de la partición que contiene al objeto. Muchas veces, sin embargo, el usuario o la aplicación no conoce el DN del objeto objetivo, o qué partición debería contener el objeto. El Catálogo global (GC, Global Catalog) permite a los usuarios y a las aplicaciones encontrar objetos en un árbol de dominio de Active Directory, proporcionando uno o más atributos del objeto deseado.

El Catálogo global contiene una copia parcial de cada contexto de denominación del directorio. También contiene el esquema y los contextos de denominación de la configuración. Esto significa que el GC contiene una copia de cada objeto de Active Directory, pero con sólo un pequeño número de sus atributos. Los atributos en el GC son los utilizados con mayor frecuencia en las operaciones de búsqueda (como el nombre y apellidos de un usuario, el nombre de entrada al sistema, etc.) y aquellos necesarios para encontrar una copia completa del objeto. El GC permite a los usuarios encontrar los objetos de interés rápidamente sin conocer qué dominio los contiene y sin que sea necesario un espacio de nombres ampliado contiguo en la empresa.

El Catálogo global está integrado en el sistema de réplicas de Active Directory. La topología de réplicas del GC también se genera de forma automática. Las propiedades replicadas en el GC incluyen un conjunto base definido por Microsoft. Los administradores pueden especificar propiedades adicionales para satisfacer las necesidades de su instalación.