Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git

Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git

por Raúl Unzué

Automatización con Terraform de Active Directory

Para el administrador de sistemas, la gestión operativa de Active Directory (AD) tradicionalmente se centra en la interfaz gráfica "dsa.msc" (Usuarios y Equipos de Active Directory). La creación manual de objetos, como usuarios, la asignación a múltiples grupos o la reubicación en Unidades Organizativas (OU), resulta eficiente para tareas esporádicas. Sin embargo, este enfoque se vuelve insostenible y peligroso ante demandas de aprovisionamiento masivo o rotación constante de personal.

El principal problema del modelo de "clics manuales" reside en su falta de control, la gestión es imperativa (paso a paso), altamente propensa a errores humanos (inconsistencias en nombres o atributos), y carece de trazabilidad histórica. Si se produce una modificación crítica en un grupo de seguridad, la ausencia de un registro claro y auditable del cambio compromete la postura de seguridad y el cumplimiento normativo.

Aquí es donde interviene Terraform.

Terraform, el motor líder en Infraestructura como Código (IaC), trasciende su aplicación habitual en entornos de nube (AWS, Azure). Gracias al proveedor Active Directory (AD) On-Premise, ahora es posible aplicar la metodología declarativa directamente a su infraestructura local basada en Windows Server 2025. Esto implica que tu defines el estado ideal de tu Active Directory (los usuarios y grupos que deben existir) en un archivo de configuración de texto (HCL). Terraform garantiza que el estado real de su Dominio (el DC 2025) converja y se mantenga sincronizado con esa definición declarada.

Los beneficios inmediatos son:

  • Auditoría y Versionado: Cada cambio se codifica, permitiendo su gestión a través de sistemas de control de versiones (Git) y una trazabilidad perfecta.
  • Eficiencia Operativa: Creación rápida y consistente de objetos, eliminando errores tipográficos y minimizando el tiempo de aprovisionamiento.
  • Transparencia (Self-Documentation): El código HCL actúa como la documentación viva de la estructura de identidades de su dominio.

A continuación, exploraremos cómo utilizar Terraform para codificar la creación de un nuevo equipo especializado, como "Vigilantes del Código", y sus miembros dentro de su Active Directory local.

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 1

Requisitos técnicos y Configuración Inicial Terraform y AD

Para que Terraform pueda "hablar" con tu Windows Server 2025, necesita usar el protocolo WinRM (Windows Remote Management).

Primero comprobamos que se "ven" dentro de nuestra red. Desde Terraform:

ip a

ping controlador-dominio

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 2

Upgrade Terraform

Adicionalmente, aseguraros de utilizar la última versión de Terraform:

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 3

Seguís las instrucciones de la página oficial:

wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
 sudo apt update && sudo apt install terraform

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 4

Y validamos:

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 5

Habilitar WinRM en Windows Server 2025

En entornos de laboratorio, podéis ejecutar el siguiente comando en consola de PowerShell con privilegios de Administrador (para otras configuraciones utilizar configuraciones seguras con HTTPs y reglas específicas):

winrm quickconfig -force

Parámetro Propósito
winrm quickconfig Configura los ajustes básicos de WinRM.
-force Omite las peticiones de confirmación (Y/N).

 

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 6

Verificación:

  • Servicio: Verifique que el servicio WinRM esté en ejecución.
  • Listener: Escriba winrm enumerate winrm/config/listener para ver los listeners activos. Debería ver un listener en Transport: HTTP y Port - 5985.
  • Firewall: En el Firewall de Windows, busque la regla "Windows Remote Management (HTTP-In)".

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 7

Validar comunicación desde la máquina de Terraform con un Telnet:

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 8

Preparar entorno para Terraform

Una vez preparado el entorno, tenemos que pasar a configurar los parámetros para poder generar los usuarios y grupos de Active Directory que necesitemos. Creamos una carpeta donde guardar los ficheros:

root@TERRAFORM01:~# mkdir w2005ad

La configuración de Terraform va a estar compuesta por estos componentes:

Fichero Propósito Principal Función Detallada
provider.tf El Conector y las Credenciales Es el punto de partida. Define qué proveedor (módulo de software) usará Terraform (hashicorp/ad) y cómo conectarse a su servidor. Aquí se establecen los datos de acceso para que Terraform pueda comunicarse de forma remota con su Windows Server 2025 mediante WinRM.
groups.tf La Declaración de Grupos Define el recurso (resource) de tipo ad_group. Declara que debe existir un grupo de seguridad llamado "Grupo_Vigilantes_Codigo" en una ubicación específica (container).
users.tf La Declaración de Identidades Define los recursos de tipo ad_user. Declara la existencia de dos usuarios (neo y trinity) con sus atributos clave: nombre de usuario (sam_account_name), nombre visible (display_name) y la política de contraseña inicial.
membership.tf Las Relaciones de Pertenencia Define el recurso ad_group_membership. Este fichero es el que enlaza los recursos creados previamente. Es crucial: utiliza las referencias internas de Terraform (ad_group.vigilantes_codigo.id y ad_user.neo.id) para asegurar que los usuarios se añadan al grupo solo después de que ambos hayan sido creados.

Configurar Provider de Terraform

Nos ponemos manos a la obra, generamos provider.tf para que sepa como autenticarse con el DC:

# provider.tf

terraform {

  required_providers {

    ad = {

      source = "hashicorp/ad"

      version = ">= 0.1.0" # Aseg  rate de usar una versi  n compatible.

    }

  }

}

provider "ad" {

  # Direccion IP o nombre de host del Controlador de Dominio (su WS 2025)

  winrm_hostname = "neguad01.negu.local"

  # Le decimos a Terraform que use las variables de entorno:

  # TF_VAR_ad_user y TF_VAR_ad_pass

  winrm_username = var.ad_user

  winrm_password = var.ad_pass

  # Eliminamos la credencial codificada

}

# Anadir el bloque 'variables' para declarar que espera estos valores:

variable "ad_user" {

  type = string

  description = "Usuario para conexion WinRM (e.g., Administrador@dominio.local)"

}

variable "ad_pass" {

  type = string

  description = "Password para conexion WinRM"

}

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 9

Agregamos las variables en Terraform:

export TF_VAR_ad_user="Administrador@midominio.local"

export TF_VAR_ad_pass="SuPasswordSuperSegura123"

Configurar Unidad Organizativa (OU)

Aseguramos que exista la unidad organizativa donde vamos a dejar los usuarios, por ejemplo:

  • Ruta de la OU: OU=Usuarios_Terraform,DC=negu,DC=local

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 10

Código Terraform: Usuarios y Grupos

Ahora vamos a declarar un nuevo grupo y dos usuarios, y luego agregaremos esos usuarios al grupo.

Grupo de Directorio Activo

Para ello definimos "groups.tf":

# group.tf

resource "ad_group" "vigilantes_codigo" {

  name             = "Grupo_Vigilantes_Codigo"

  sam_account_name = "VigilantesCodigo"

  container        = "OU=Usuarios_Terraform,DC=midominio,DC=local"

  description      = "Equipo encargado de las revisiones de c  digo de alto riesgo."

}

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 11

Creación Usuarios de DA

Creamos dos usuarios, "Neo" y "Trinity".

# users.tf

# Usuario 1: Neo

resource "ad_user" "neo" {

  principal_name   = "neo.anderson"

  sam_account_name = "neo.anderson"

  display_name     = "Neo Anderson"

  

  # Especificamos la OU donde se creará el usuario.

  container        = "OU=Usuarios_Terraform,DC=midominio,DC=local"

  

  # Establecemos la contraseña inicial (¡debe ser compleja!)

  initial_password = "LaMatrixEsReal123" 

  

  # Forzamos el cambio de contraseña en el primer login

  pwd_last_set = 0

}

# Usuario 2: Trinity

resource "ad_user" "trinity" {

  principal_name   = "trinity.adams"

  sam_account_name = "trinity.adams"

  display_name     = "Trinity Adams"

  

  container        = "OU=Usuarios_Terraform,DC=midominio,DC=local"

  initial_password = "LaMatrixEsReal123"

  pwd_last_set = 0

}

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 12

Añadir usuarios a grupo

Finalmente, añadimos los usuarios al grupo creado, ¡usando referencias cruzadas de Terraform!

# membership.tf

resource "ad_group_membership" "vigilantes_miembros" {

  # Referencia al nombre del grupo creado en el paso 2.1

  group_id = ad_group.vigilantes_codigo.id

  

  # Referencias a los IDs de los usuarios creados en el paso 2.2

  group_members = [

    ad_user.neo.id,

    ad_user.trinity.id

  ]

}

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 13

Implementación código Terrafom

Ahora sólo tenemos que ejecutar el código generado de la siguiente forma:

  1. Lanzamos "terraform init":

    Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 14

  2. Lanzamos "terraform plan":

    Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 15

  3. Y aplicamos con "terraform apply":

    Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 16

Si os da error de autenticación, y habéis revisado el usuario, es porque por defecto se intenta usar Kerberos, para una prueba podéis relajar la seguridad y habilitar posteriormente HTTPS como indicamos al principio de la entrada:

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 17

Por último, validamos la creación:

Geeknetic Terraform y Active Directory On-Premise: Automatización de la Creación de Cuentas al Estilo Git 18

Terraform: El Futuro de la Gestión de Identidades

Hemos dejado atrás la época de trabajar "a martillazos y con suerte". Al unir la herramienta Terraform con nuestro Active Directory en Windows Server 2025, hemos convertido la tarea de dar de alta o baja de usuarios, en un proceso automatizado seguro.

Ya no habrá que cruzar los dedos por si alguien puso un guion bajo donde iba un espacio, o si un permiso importante se quedó sin dar. Todo queda escrito, guardado en un libro de registro digital (Git) y puede ser revisado por cualquiera.

Pero la joya de la corona es esto, la detección de intrusos automáticos. Si alguien (incluso tú, por error) toca un permiso a mano y estropea un grupo clave, Terraform, al ejecutar su revisión, levanta la mano y dice: "¡Eh! Esto no está como debería".

Fin del Artículo. ¡Cuéntanos algo en los Comentarios!

Redactor del Artículo: Raúl Unzué

Raúl Unzué

Soy un apasionado de la virtualización con más de 20 años de experiencia, especializado en soluciones como VMware(premio vExpert y vExpert Pro desde 2013), Proxmox e Hyper-V. Durante mi carrera, he ayudado a empresas a optimizar sus infraestructuras TI mientras comparto mis conocimientos como redactor IT. Mi objetivo es traducir lo complejo en algo práctico y accesible, combinando teoría con experiencia real. Si te interesa la virtualización, las herramientas TI o simplemente aprender algo nuevo, espero ayudarte con mis artículos.