Azure AD Connect: Almacenamiento provisional y recuperación ante desastres

Con un servidor en modo provisional puede realizar cambios en la configuración y obtener una vista previa de los cambios antes de activar el servidor. También permite ejecutar una importación y sincronización completas para comprobar que se esperan todos los cambios antes de realizarlos en el entorno de producción.

Modo provisional

Se puede usar el modo provisional para distintos escenarios como:

  • Alta disponibilidad.
  • Prueba e implementación de nuevos cambios de configuración.
  • Introducción de un nuevo servidor y baja del antiguo.

Durante la instalación puede seleccionar que el servidor esté en modo provisional. Esta acción activará el servidor para la importación y sincronización, pero no realizará ninguna exportación. Un servidor en modo provisional no ejecutará la sincronización de contraseñas ni habilitará la escritura diferida de contraseñas, aunque se seleccionen estas características durante la instalación. Cuando se deshabilita el modo provisional, el servidor iniciará la exportación, y habilitará la sincronización de contraseñas y la escritura diferida de contraseñas.

Nota:

Suponga que tiene una instancia de Azure AD Connect con la característica de sincronización de hash de contraseña habilitada. Cuando se habilita el modo de almacenamiento provisional, el servidor deja de sincronizar los cambios de contraseña desde AD local. Cuando se deshabilita el modo de almacenamiento provisional, el servidor reanuda la sincronización de los cambios de contraseña desde AD local. Si el servidor se mantiene en modo de almacenamiento provisional durante un largo período de tiempo, el servidor puede tardar unos minutos en sincronizar todos los cambios de contraseña que se hubieran producido durante ese período de tiempo.

Todavía puede forzar una exportación mediante el administrador del servicio de sincronización.

Un servidor en modo de almacenamiento provisional sigue recibiendo cambios de Active Directory y Azure AD, y puede asumir rápidamente las responsabilidades de otro servidor en caso de que se produzca un error. Si realiza cambios de configuración en el servidor principal, es su responsabilidad realizar los mismos cambios en el servidor o servidores en modo provisional.

Para aquellos con conocimientos de tecnologías de sincronización anteriores, el modo provisional es diferente, ya que el servidor tiene su propia base de datos SQL. Esta arquitectura permite que el servidor en modo provisional se encuentre en otro centro de datos.

Comprobación de la configuración de un servidor

Para aplicar este método, siga estos pasos:

  1. Preparación
  2. Configuración
  3. Importación y sincronización
  4. Verify
  5. Cambio de servidor activo

Preparación

  1. Instale Azure AD Connect, seleccione el modo provisional y anule la selección de Iniciar la sincronización en la última página del Asistente para instalación. Esto permitirá ejecutar el motor de sincronización de forma manual. Captura de pantalla que muestra la página Listo para configurar en el cuadro de diálogo Azure AD Connect.
  2. Cierre o inicie la sesión y, en el menú de inicio, seleccione Servicio de sincronización.

Configuración

Si ha realizado cambios personalizados en el servidor principal y desea comparar la configuración con el servidor de almacenamiento provisional, utilice el documentador de configuración de Azure AD Connect.

Importación y sincronización

  1. Seleccione Conectores y elija el primer conector de tipo Active Directory Domain Services. Haga clic en Ejecutar y seleccione Importación completa y Aceptar. Realice estos pasos para todos los conectores de este tipo.
  2. Seleccione el conector de tipo Azure Active Directory (Microsoft) . Haga clic en Ejecutar y seleccione Importación completa y Aceptar.
  3. Asegúrese de que sigue seleccionada la pestaña Conectores. Para cada conector de tipo Active Directory Domain Services, haga clic en Ejecutar, y seleccione Sincronización diferencial y Aceptar.
  4. Seleccione el conector de tipo Azure Active Directory (Microsoft) . Haga clic en Ejecutar, seleccione Sincronización diferencial y, después, Aceptar.

Ahora ha almacenado provisionalmente los cambios de exportación en Azure AD y AD local (si está usando la implementación híbrida de Exchange). Los siguientes pasos le permiten inspeccionar lo que está a punto de cambiar antes de que comience realmente la exportación a los directorios.

Verify

  1. Inicie un símbolo del sistema y vaya a %ProgramFiles%\Microsoft Azure AD Sync\bin.
  2. Ejecutar: csexport "Name of Connector" %temp%\export.xml /f:x El nombre del conector puede encontrarse en el Servicio de sincronización. Para Azure AD, tendrá un nombre similar a "contoso.com – Azure AD".
  3. Ejecutar: CSExportAnalyzer %temp%\export.xml > %temp%\export.csv Tiene un archivo en %temp% denominado export.csv que se puede examinar en Microsoft Excel. Este archivo contiene todos los cambios que se van a exportar.
  4. Realice los cambios necesarios en los datos o la configuración y ejecute estos pasos de nuevo (Importación y sincronización y Comprobación) hasta que se esperen los cambios que se van a exportar.

Descripción del archivo export.csv

La mayor parte del archivo se explica por sí solo. Algunas abreviaturas para comprender el contenido:

  • OMODT: tipo de modificación de objeto. Indica si la operación en un nivel de objeto es Agregar, Actualizar o Eliminar.
  • AMODT: tipo de modificación de atributo. Indica si la operación en un nivel de atributo es Agregar, Actualizar o Eliminar.

Recuperación de identificadores comunes

El archivo export.csv contiene todos los cambios que se van a exportar. Cada fila corresponde a un cambio de un objeto en el espacio del conector y el objeto se identifica mediante el atributo DN. El atributo DN es un identificador único asignado a un objeto en el espacio del conector. Cuando haya muchas filas o cambios en el archivo export.csv que analizar, puede ser difícil averiguar para qué objetos son los cambios con solo el atributo DN. Para simplificar el proceso de análisis de los cambios, use el script de PowerShell csanalyzer.ps1. El script recupera los identificadores comunes (por ejemplo, displayName o userPrincipalName) de los objetos. Para usar el script:

  1. Copie el script de PowerShell de la sección CSAnalyzer en un archivo denominado "csanalyzer.ps1".
  2. Abra una ventana de PowerShell y vaya a la carpeta donde se creó el script de PowerShell.
  3. Ejecute .\csanalyzer.ps1 -xmltoimport %temp%\export.xml.
  4. Ahora tiene un archivo denominado "processedusers1.csv" que se puede examinar en Microsoft Excel. Tenga en cuenta que el archivo proporciona una asignación del atributo DN a identificadores comunes (por ejemplo, displayName y userPrincipalName). Actualmente no incluye los cambios de atributo reales que se van a exportar.

Cambio de servidor activo

Azure AD Connect se puede configurar en una configuración de alta disponibilidad activa-pasiva, donde un servidor insertará activamente los cambios en los objetos de AD sincronizados en Azure AD y el servidor pasivo almacenará provisionalmente estos cambios en caso de que tenga que asumir el control.

Nota

No se puede configurar Azure AD Connect en una configuración activa-activa. Debe ser activa-pasiva. Asegúrese de que solo un servidor de Azure AD Connect está sincronizando activamente los cambios.

Para más información sobre cómo configurar un servidor de sincronización de Azure AD Connect en modo provisional, consulte modo provisional.

Es posible que tenga que realizar una conmutación por error de los servidores de sincronización por varios motivos, como actualizar la versión de Azure AD Connect o recibir una alerta de que el servicio de mantenimiento del servicio de sincronización no recibe información actualizada. En estos casos, puede intentar una conmutación por error de los servidores de sincronización siguiendo los pasos siguientes.

Requisitos previos

  • Un servidor de sincronización de Azure AD Connect actualmente activo
  • Un servidor de sincronización de Azure AD Connect en modo provisional

Cambiar el servidor de sincronización activa actual a modo provisional

Hay que asegurarse de que solo un servidor de sincronización está sincronizando los cambios en un momento dado a lo largo de este proceso. Si actualmente se puede acceder al servidor de sincronización activa, puede realizar los pasos siguientes para moverlo al modo provisional. Si no es accesible, asegúrese de que el servidor o la máquina virtual no recuperen el acceso inesperadamente cerrando el servidor o aislándolo de las conexiones salientes y continúe con los pasos sobre cómo cambiar el servidor de sincronización provisional actual a modo activo.

  1. Para el servidor de Azure AD Connect activo actualmente, abra la consola de Azure AD Connect y haga clic en "Configurar modo provisional" y, a continuación, en Siguiente:

    Captura de pantalla que muestra el modo provisional resaltado en el cuadro de diálogo en Active Azure AD Connect.

  2. Deberá iniciar sesión en Azure AD con credenciales de Administrador global o Administrador de identidades híbridas:

    Captura de pantalla que muestra el mensaje de inicio de sesión en el cuadro de diálogo en Active Azure AD Connect.

  3. Marque la casilla de Habilitar modo provisional y haga clic en Siguiente:

    Captura de pantalla que muestra la configuración del modo provisional en el cuadro de diálogo en Active Azure AD Connect.

  4. El servidor de Azure AD Connect comprobará si hay componentes instalados y, a continuación, le preguntará si desea iniciar el proceso de sincronización:

    Captura de pantalla que muestra la pantalla Listo para configurar en Active Azure AD Connect.

Dado que el servidor estará en modo provisional, no escribirá cambios en Azure AD, sino que conservará los cambios en AD en su espacio conector, listo para escribirlos.
Se recomienda dejar el proceso de sincronización activado en el servidor en modo provisional para que, si se activa, tome el control rápidamente y no tenga que realizar una sincronización grande para ponerse al día con el estado actual de la sincronización de AD/Azure AD.

  1. Después de seleccionar si se va a iniciar o detener el proceso de sincronización y hacer clic en Configurar, el servidor de Azure AD Connect se configurará en modo de provisional.
    Una vez completado, aparecerá una pantalla que le pedirá que confirma que el modo provisional está habilitado.
    Puede hacer clic en Salir para finalizar.

  2. Para confirmar que el servidor está correctamente en modo de provisional, abra la consola del servicio de sincronización.
    Desde aquí, no debería haber más trabajos de exportación, ya que el cambio y las importaciones Full (completas) y Delta (diferenciales) se sufijaron con "(Stage Only)" (solo modo provisional) como se ve a continuación:

    Captura de pantalla que muestra la consola del servicio de sincronización en el cuadro de diálogo en Active Azure AD Connect.

Cambio del servidor de sincronización provisional actual a modo activo

En este punto, todos nuestros servidores de sincronización de Azure AD Connect deben estar en modo provisional y no exportar cambios. Ahora podemos mover nuestro servidor de sincronización provisional a modo activo y sincronizar activamente los cambios.

  1. Ahora vaya al servidor de Azure AD Connect originalmente en modo provisional y abra la consola de Azure AD Connect.

    Haga clic en "Configurar modo provisional" y haga clic en Siguiente:

    Captura de pantalla que muestra el modo provisional resaltado en el cuadro de diálogo en Staging Azure AD Connect.

    El mensaje situado en la parte inferior de la consola indica que este servidor está en modo provisional.

  2. Inicie sesión en Azure AD y, a continuación, vaya a la pantalla Modo provisional.

    Desmarque la casilla de Habilitar modo provisional y haga clic en Siguiente:

    Captura de pantalla que muestra la configuración del modo provisional en el cuadro de diálogo en Staging Azure AD Connect.

    Según la advertencia de esta página, es importante asegurarse de que ningún otro servidor de Azure AD Connect se está sincronizando activamente.

    Solo debe haber un servidor de sincronización de Azure AD Connect activo en cualquier momento.

  3. Cuando se le pida que inicie el proceso de sincronización, marque esta casilla y haga clic en Configurar:

    Captura de pantalla que muestra la pantalla Listo para configurar en Staging Azure AD Connect.

  4. Una vez finalizado el proceso, debería obtener la siguiente pantalla de confirmación donde puede hacer clic en Salir para finalizar:

    Captura de pantalla que muestra la pantalla de confirmación en Staging Azure AD Connect.

  5. Puede confirmar de nuevo su correcto funcionamiento abriendo la consola del servicio de sincronización y comprobando si se están ejecutando trabajos de exportación:

    Captura de pantalla que muestra la consola del servicio de sincronización en el cuadro de diálogo en Staging Azure AD Connect.

Recuperación ante desastres

Parte del diseño de implementación es planear qué hacer en caso de que se produzca un desastre en el que se pierda el servidor de sincronización. Hay diferentes modelos de uso y cuál es el que se debe usar dependerá de varios factores como los siguientes:

  • ¿Cuál es su grado de tolerancia por no ser capaz de realizar cambios en objetos en Azure AD durante el tiempo de inactividad?
  • Si usa la sincronización de contraseñas, ¿aceptarán los usuarios que tienen que usar la antigua contraseña en Azure AD en caso de que la cambien de forma local?
  • ¿Tiene una dependencia en operaciones en tiempo real, como la escritura diferida de contraseñas?

En función de las respuestas a estas preguntas y de la directiva de su organización, puede implementar una de las estrategias siguientes:

  • Recompilación si es necesario.
  • Servidor en espera de reserva, conocido como modo provisional.
  • Uso de máquinas virtuales.

Si no utiliza la base de datos de SQL Express integrada, también debe revisar la sección sobre alta disponibilidad de SQL .

Recompilación si es necesario

Una estrategia viable es planear una recompilación del servidor si es necesario. Normalmente, la instalación del motor de sincronización y la realización de la importación y sincronización iniciales se pueden completar en unas pocas horas. Si no hay un servidor de reserva disponible, es posible usar temporalmente un controlador de dominio para hospedar el motor de sincronización.

El servidor del motor de sincronización no almacena ningún estado acerca de los objetos, por lo que se puede recompilar la base de datos a partir de los datos de Active Directory y Azure AD. El atributo sourceAnchor se usa para unir los objetos de local y de la nube. Si recompila el servidor con objetos existentes locales y en la nube, el motor de sincronización los hará coincidir de nuevo en la reinstalación. Las acciones que necesita documentar y guardar son los cambios de configuración realizados en el servidor, como reglas de filtrado y de sincronización. Estas configuraciones personalizadas deben volver a aplicarse antes de iniciar la sincronización.

Servidor en espera de reserva - modo provisional

Si tiene un entorno más complejo, se recomienda tener uno o más servidores en espera. Durante la instalación puede habilitar un servidor que esté en modo provisional.

Para obtener más información, consulte Modo provisional.

Uso de máquinas virtuales

Un método común y admitido es ejecutar el motor de sincronización en una máquina virtual. En caso de que el host tenga un problema, la imagen con el servidor del motor de sincronización se puede migrar a otro servidor.

alta disponibilidad de SQL

Si no utiliza la versión de SQL Server Express que se incluye con Azure AD Connect, también debe tener en cuenta la alta disponibilidad para SQL Server. Las soluciones de alta disponibilidad compatibles incluyen la agrupación en clústeres de SQL y AOA (Grupos de disponibilidad AlwaysOn). Entre las soluciones no admitidas se incluye la creación de reflejo.

Se agregó la compatibilidad de AOA de SQL a Azure AD Connect en la versión 1.1.524.0. Debe habilitar AOA de SQL antes de instalar Azure AD Connect. Durante la instalación, Azure AD Connect detecta si la instancia de SQL proporcionada está habilitada para AOA de SQL o no. Si AOA de SQL está habilitada, Azure AD Connect averigua si AOA de SQL está configurada para usar la replicación sincrónica o asincrónica. Cuando configure la escucha de grupo de disponibilidad, la propiedad RegisterAllProvidersIP debe establecerse en 0. Esto se debe a que Azure AD Connect actualmente usa SQL Native Client para conectarse a SQL y SQL Native Client no admite el uso de la propiedad MultiSubNetFailover.

Apéndice: CSAnalyzer

Vea la sección de comprobación sobre cómo usar este script.

Param(
	[Parameter(Mandatory=$true, HelpMessage="Must be a file generated using csexport 'Name of Connector' export.xml /f:x)")]
	[string]$xmltoimport="%temp%\exportedStage1a.xml",
	[Parameter(Mandatory=$false, HelpMessage="Maximum number of users per output file")][int]$batchsize=1000,
	[Parameter(Mandatory=$false, HelpMessage="Show console output")][bool]$showOutput=$false
)

#LINQ isn't loaded automatically, so force it
[Reflection.Assembly]::Load("System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | Out-Null

[int]$count=1
[int]$outputfilecount=1
[array]$objOutputUsers=@()

#XML must be generated using "csexport "Name of Connector" export.xml /f:x"
write-host "Importing XML" -ForegroundColor Yellow

#XmlReader.Create won't properly resolve the file location,
#so expand and then resolve it
$resolvedXMLtoimport=Resolve-Path -Path ([Environment]::ExpandEnvironmentVariables($xmltoimport))

#use an XmlReader to deal with even large files
$result=$reader = [System.Xml.XmlReader]::Create($resolvedXMLtoimport) 
$result=$reader.ReadToDescendant('cs-object')
if($result)
{
	do 
	{
		#create the object placeholder
		#adding them up here means we can enforce consistency
		$objOutputUser=New-Object psobject
		Add-Member -InputObject $objOutputUser -MemberType NoteProperty -Name ID -Value ""
		Add-Member -InputObject $objOutputUser -MemberType NoteProperty -Name Type -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name DN -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name operation -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name UPN -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name displayName -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name sourceAnchor -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name alias -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name primarySMTP -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name onPremisesSamAccountName -Value ""
		Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name mail -Value ""

		$user = [System.Xml.Linq.XElement]::ReadFrom($reader)
		if ($showOutput) {Write-Host Found an exported object... -ForegroundColor Green}

		#object id
		$outID=$user.Attribute('id').Value
		if ($showOutput) {Write-Host ID: $outID}
		$objOutputUser.ID=$outID

		#object type
		$outType=$user.Attribute('object-type').Value
		if ($showOutput) {Write-Host Type: $outType}
		$objOutputUser.Type=$outType

		#dn
		$outDN= $user.Element('unapplied-export').Element('delta').Attribute('dn').Value
		if ($showOutput) {Write-Host DN: $outDN}
		$objOutputUser.DN=$outDN

		#operation
		$outOperation= $user.Element('unapplied-export').Element('delta').Attribute('operation').Value
		if ($showOutput) {Write-Host Operation: $outOperation}
		$objOutputUser.operation=$outOperation

		#now that we have the basics, go get the details

		foreach ($attr in $user.Element('unapplied-export-hologram').Element('entry').Elements("attr"))
		{
			$attrvalue=$attr.Attribute('name').Value
			$internalvalue= $attr.Element('value').Value

			switch ($attrvalue)
			{
				"userPrincipalName"
				{
					if ($showOutput) {Write-Host UPN: $internalvalue}
					$objOutputUser.UPN=$internalvalue
				}
				"displayName"
				{
					if ($showOutput) {Write-Host displayName: $internalvalue}
					$objOutputUser.displayName=$internalvalue
				}
				"sourceAnchor"
				{
					if ($showOutput) {Write-Host sourceAnchor: $internalvalue}
					$objOutputUser.sourceAnchor=$internalvalue
				}
				"alias"
				{
					if ($showOutput) {Write-Host alias: $internalvalue}
					$objOutputUser.alias=$internalvalue
				}
				"proxyAddresses"
				{
					if ($showOutput) {Write-Host primarySMTP: ($internalvalue -replace "SMTP:","")}
					$objOutputUser.primarySMTP=$internalvalue -replace "SMTP:",""
				}
			}
		}

		$objOutputUsers += $objOutputUser

		Write-Progress -activity "Processing ${xmltoimport} in batches of ${batchsize}" -status "Batch ${outputfilecount}: " -percentComplete (($objOutputUsers.Count / $batchsize) * 100)

		#every so often, dump the processed users in case we blow up somewhere
		if ($count % $batchsize -eq 0)
		{
			Write-Host Hit the maximum users processed without completion... -ForegroundColor Yellow

			#export the collection of users as a CSV
			Write-Host Writing processedusers${outputfilecount}.csv -ForegroundColor Yellow
			$objOutputUsers | Export-Csv -path processedusers${outputfilecount}.csv -NoTypeInformation

			#increment the output file counter
			$outputfilecount+=1

			#reset the collection and the user counter
			$objOutputUsers = $null
			$count=0
		}

		$count+=1

		#need to bail out of the loop if no more users to process
		if ($reader.NodeType -eq [System.Xml.XmlNodeType]::EndElement)
		{
			break
		}

	} while ($reader.Read)

	#need to write out any users that didn't get picked up in a batch of 1000
	#export the collection of users as CSV
	Write-Host Writing processedusers${outputfilecount}.csv -ForegroundColor Yellow
	$objOutputUsers | Export-Csv -path processedusers${outputfilecount}.csv -NoTypeInformation
}
else
{
    Write-Host "Imported XML file is empty. No work to do." -ForegroundColor Red
}

Pasos siguientes

Temas de introducción