[ARTICULO] Active Directory Domain Services | Virtualización Segura de DCs con Windows Server 2012

Virtualizar controladores de dominio, en los últimos años, ha sido una actividad comúnmente realizada por todos los que administramos plataformas de Active Directory Domain Services.

Hasta la llegada de Windows Server 2012, la virtualización de DCs no estaba completamente soportada: había problemas potenciales en la operatoria y consideraciones que debían ser respetadas para evitar problemáticas serias.

En este artículo vamos a recorrer cuáles fueron las novedades, en torno a virtualización, de Active Directory Domain Services en Windows Server 2012.

 

[toc]

 

Introducción

Objetivo y Alcance

Esta publicación tiene como objetivo mostrar a las organizaciones y administradores TI cuáles son las novedades relacionadas a virtualización de controladores de dominio a partir de Windows Server 2012, y cómo pueden estas ser aprovechadas para mejorar la operatoria y ejecución de actividades críticas.

Esta publicación se refiere a las siguientes tecnologías:

  • Active Directory Domain Services en Windows Server 2012 y Windows Server 2012 R2.
  • Windows Server 2012, versiones Standard y Datacenter.
  • Windows Server 2012 R2, versiones Standard y Datacenter.

 

Audiencia

Este documento está dirigido a Consultores, Profesionales IT y personas que desarrollan tareas de Consultoría, Administración y Soporte o que simplemente están interesados en aprender nuevas cosas.

 

Comentarios y Corrección de Errores

Hemos realizado nuestro mejor esfuerzo para no cometer errores, pero al fin y al cabo somos seres humanos. Si deseás reportar algún error o darnos feedback de qué te pareció esta publicación, por favor no dejes de comunicarte con nosotros a través de correo electrónico a la siguiente dirección: info@tectimes.net.

 

Desarrollo

Virtualización de Controladores de Dominio pre-Windows Server 2012

Como hemos comentado en la introducción, virtualizar controladores de dominio, en los últimos años, ha sido una actividad comúnmente realizada por todos los que administramos plataformas de Active Directory Domain Services.

Sin embargo, esta práctica estaba repleta de consideraciones que se podrían resumir en la siguiente frase: “Never Pause, Never Clone, Never Snapshot”.

Documentos oficiales de Microsoft (http://technet.microsoft.com/en-us/library/d2cae85b-41ac-497f-8cd1-5fbaa6740ffe(v=ws.10)#operational_considerations_for_virtualized_domain_controllers) identifican las consideraciones de operación a tener en cuenta para controladores de dominio virtualizados:

 

Ilustración 1 – Consideraciones oficiales de Microsoft sobre controladores de dominio virtualizados.
Ilustración 1 – Consideraciones oficiales de Microsoft sobre controladores de dominio virtualizados.

 

Más allá de esto, la virtualización de controladores de dominio ha sido (y será por lo menos en el mediano plazo) una práctica muy común.

Vamos a recorrer tres puntos “críticos” sobre la virtualización de DCs “pre-Windows Server 2012” de modo tal de entender cuáles eran los desafíos a afrontar, para luego meternos en cómo fueron solucionados en Windows Server 2012.

 

Instantáneas (Snapshots)

La aplicación de instantáneas (o conocido como “snapshots”) traía problemas potenciales a infraestructuras de Aplicaciones Distribuidas (como lo es AD):

  • Desplazamiento de Reloj Lógico.
  • Operaciones ocurren fuera de la conciencia del OS.

El reloj lógico, en Active Directory Domain Services, es utilizado para rastrear cambios. Este reloj lótico es el Update Sequence Number (USN). El USN graba la secuencia de actualizaciones realizadas en cada Controlador de Dominio en relación al tiempo lineal:

 

Ilustración 2 – Reloj lógico de Active Directory Domain Services (Update Sequence Number - USN).
Ilustración 2 – Reloj lógico de Active Directory Domain Services (Update Sequence Number – USN).

 

En el ejemplo siguiente vemos la siguiente secuencia de acciones:

  • T1: se crea una instantánea en el DC2. En ese momento el DC1 y DC2 están sincronizados y con una replicación saludable. El valor de USN es de 100.
  • T2: Luego de la instantánea, se realiza el alta de 100 usuarios nuevos. Esto lleva el USN a 200 y quita identificadores relativos del pool disponible para dicho DC (DC2).
  • T3: Por algún motivo, se vuelve atrás el DC2, puntualmente a la instantánea tomada en T1. Esto hace que el USN vuelva a ser de 100 y el pool de identificadores relativos vuelva a ser el anterior al T2.
  • T4: Este cambio no es reconocido ni procesado por el sistema operativo, lo que produce que algunos usuarios no estén replicados en el DC2. Adicionalmente hay un potencial riesgo de SIDs conflictivos.

 

Ilustración 3 – Ejemplo representado en línea de tiempo sober problemáticas de aplicar instantáneas pre-Windows 2012 para Controladores de Dominio.
Ilustración 3 – Ejemplo representado en línea de tiempo sober problemáticas de aplicar instantáneas pre-Windows 2012 para Controladores de Dominio.

 

Esto tiene un impacto en la replicación:

  • Lingering Objects.
  • Contraseñas inconsistentes.
  • Valores de atributos inconsistentes.
  • Inconsistencias en Esquema de AD ante eventual rollback del Schema Master.

Adicionalmente, se potencia un impacto en los Security Principals:

  • Duplicación de SIDs.
  • Acceso no autorizado a recursos por un período de tiempo.
  • En última instancia, además, los usuarios afectados no podrán iniciar sesión

 

Clonación de Discos

La clonación de discos tampoco es un procedimiento soportado pre-Windows Server 2012. ¿Por qué? Porque clonar discos requeriría ejecutar un proceso de SYSPREP para poder renovar el identificador único de equipo (SID) de modo tal que no existan inconsistencias dentro del Bosque / Dominio. Sin embargo, SYSPREP no está soportado cuando ya existen implementaciones de roles dentro de Windows Server.

 

Exportación de Equipos Virtuales

Muy similar al punto anterior: las recomendaciones oficiales indican que no debemos realizar el export de una máquina virtual, dado que puede registrarse una alteración en el USN que no podrá ser interpretada por el sistema operativo cuando restauremos la exportación.

 

Virtualización de Controladores de Dominio a partir de Windows Server 2012

Windows Server 2012 vino a revolucionar la virtualización de controladores de dominio, y más aún la virtualización de aplicaciones distribuidas (como ya veremos). Esto se da gracias a un identificador llamado “VM-Generation ID”, que permite que el sistema operativo tenga las herramientas necesarias para detectar acciones ejecutadas desde un hypervisor y tomar decisiones.

 

Introducción a Generation ID

VM-Generation ID es un componente que debe ser soportado por el Hypervisor, como Hyper-V de Windows Server 2012 y VMWare.

Es un identificador de 128 bits que los sistemas operativos virtualizados y aplicaciones instaladas en los sistemas pueden aprovechar y se ponen a disposición de las aplicaciones a través del controlador de Windows Server 2012. Como vemos, VM-Generation ID no es un componente exclusivo para virtualización de controladores de dominio, sino que es un componente que interactúa con el sistema operativo de modo tal que puede ser aprovechado por cualquier aplicación, y puntualmente aplicación distribuida (que es donde justamente existen mayores riesgos por temas de sincronización de datos.

VM-Generation ID es un atributo no replicado que se aloja en el objeto “Computer”, de modo tal que puntualmente para Active Directory Domain Services permite al DC detectar cambios y proteger a dicho servicio de eventuales inconsistencias. Con ese identificador, además, se pueden tomar decisiones para que el mismo sistema (sin intervención del administrador) remedie la situación.

Si bien las siguientes consideraciones son aplicables a cualquier sistema distribuido (que en su programación aproveche esta funcionalidad), vamos a puntualizar la semántica de la generación de VM-Generation ID específicamente para Active Directory:

  • Si una operación de Virtualización causa un contexto de cambio en Active Directory: el sistema de virtualización debe proveer un nuevo VM-Generation ID.
  • Si una operación de Virtualización no causa un contexto de cambio Active Directory: el sistema de virtualizción NO debe proveer un nuevo VM-Generation ID.
  • Si no está claro si una operación de virtualización provocará un contexto de cambio en Active Directory: el sistema de virtualización DEBE proveer un nuevo VM-Generation ID.

 

¿Cómo funciona VM-Generation ID en la “vida real”? Vamos a analizar dos casos muy comunes: el soporte a instantáneas (snapshots) y el soporte a clonación de DCs.

 

Soporte a Instantáneas (snapshots)

Como ya hemos comentado, Windows Server 2012 da un soporte completo a controladores de dominio virtualizados y, por supuesto, brinda detección y tratamiento en la aplicación de instantáneas.

VM-Generation ID en Active Directory:

  • Permite al DC para detectar cambios y proteger Active Directory.
  • Es un atributo no replicado alojado en el Objeto “Computer”.

 

VM-Generation ID en la Replicación:

  • El DC compara el VM-Generation ID en NTDS.DIT contra el actual.
  • Si es diferente invalida el RID Pool y solicita actualización.

 

¿Cómo es el proceso? Vamos a verlo con el mismo ejemplo utilizado para instantáneas “pre-Windows Server 2012”:

 

Ilustración 4 – Soporte a Instantáneas a partir de Windows Server 2012.
Ilustración 4 – Soporte a Instantáneas a partir de Windows Server 2012.

 

Si analizamos el timeline de eventos, podemos identificar:

  • T1: se crea una instantánea en el DC2. En ese momento el DC1 y DC2 están sincronizados y con una replicación saludable. El valor de USN es de 100.
  • T2: Luego de la instantánea, se realiza el alta de 100 usuarios nuevos. Esto lleva el USN a 200 y quita identificadores relativos del pool disponible para dicho DC (DC2).
  • T3: Por algún motivo, se vuelve atrás el DC2, puntualmente a la instantánea tomada en T1. Esto hace que el USN vuelva a ser de 100 y el pool de identificadores relativos vuelva a ser el anterior al T2.
  • T4: El controlador de dominio detecta que ha sufrido una operación de restauración o rollback de instantánea, por lo cual como mecanismo de protección del servicio de directorio solicita actualizaciones al otro controlador de dominio, de modo tal que el USN y el RID POOL vuelven a ser los esperados. Una vez que esto ocurre, el controlador de dominio tiene datos actualizados y está sanamente operable.

 

Soporte a Clonación de Controladores de Dominio

Una de las novedades que más pueden ayudarnos a acelerar los procesos de implementación de controladores de dominio es el soporte para clonación.

Este soporte se basa en elegir un controlador de dominio (que no debe ser el PDC Emulator) y configurar diversos parámetros por línea de comandos y en Active Directory. Luego de ello el controlador de dominio puede apagarse y copiar el contenido de su disco virtual a otra máquina virtual. Una vez que la nueva máquina virtual es encendida, se realiza un proceso de verificación comparando si el VM-Generation ID alojado en el BIOS virtual es el mismo o distinto al alojado en el equipo. En caso que no sea el mismo (o sea la máquina fue clonada) comienza el proceso formal de clonación y generalización.

Como resultado de ello, obtendremos un controlador de dominio nuevo, unido al dominio por supuesto, y con los parámetros de nombre, ip y demás configurados previamente en la preparación.

El otro controlador de dominio, que se utilizó como base, detecta esto e inicia normalmente.

Para ser un poquito más gráficos, vamos a describir gráficamente este proceso:

 

Ilustración 5 – Proceso de clonación de controlador de dominio en Windows Server 2012.
Ilustración 5 – Proceso de clonación de controlador de dominio en Windows Server 2012.

 

Recordemos que VM-Generation ID es un parámetro que debe estar soportado por el Hypervisor. De tal como que es muy simple comparar que dicho parámetro coincida (o no) con el equipo virtual (valor alojado en el sistema) y el sistema, como en este caso, pueda tomar la decisión de iniciar un clonado.

Si bien este no es un tutorial, vamos a describir brevemente el proceso de clonación:

  • Identificar el DC adecuado para clonación.
  • Autorizar el DC para clonación agregandolo al grupo “Cloneable Domain Controllers”.
  • Correr el CMDLet New-ADDCCloneConfigfile
    • Verifica los pre-requisitos.
    • Verifica la autorización del DC.
    • Permite especificar el Nombre, Dirección IP, Servidores DNS, Sitio, etc.
    • Un ejemplo está proporcionado en: %windir%\system32\SampleDCCloneConfig.xml
  • Ejecutar Get-ADDCCloningExcludedApplicationList [-generateXML] para compatibilidad de aplicaciones.
  • Apagar y exportar el disco del DC a clonar.
  • Iniciar normalmente el otro DC utilizado de base.
  • Importar el clon del DC a clonar tantas veces como se desee e iniciar el/los equipos

 

Debajo vemos un ejemplo del archivo de configuración XML previo al clonado del equipo:

 

Ilustración 6 – Ejemplo de archivo XML para clonación de controladores de dominio en Windows Server 2012.
Ilustración 6 – Ejemplo de archivo XML para clonación de controladores de dominio en Windows Server 2012.

 

Conclusiones

El soporte completo para virtualización de controladores de dominio (y en el fondo aplicaciones distribuidas) nos brinda un horizonte de posibilidades para aprovechar desde la Administración de Entornos Distribuidos.

Desde el lado de Active Directory Domain Services podemos comenzar a explorarlo y utilizarlo ya. Para el resto de aplicaciones distribuidas, dependerá de cada fabricante el soporte y desarrollo que haga para aprovechar las ventajas de VM-Generation ID.

Con respecto a los virtualizadores o hypervisores, Hyper-V soporta, en su versión 2012 y 2012 R2, VM-Generation ID. VMWare también lo ha soportado en últimas actualizaciones, de modo tal que el mercado está abierto para poder aprovechar estas ventajas.

Esperamos que esta publicación haya servido para introducirse en el soporte de virtualización en Active Directory, y estamos como siempre disponibles ante cualquier duda o consulta. ¡Muchas gracias por visitarnos y leernos!

 

Referencias y Links

 

 

0 0 votes
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Engineering Manager at MODO (https://modo.com.ar), the payment solution that allows you to connect your money and your world to simplify everyday life. Modo is a payment solution in which you can send, order and pay from your mobile device in the safest, most practical and convenient way. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments