Como modificar atributos de exchange online para grupos sincronizados con Azure AD sync sin tener que instalar un exchange local. El poder del editor de reglas de sincronización.
Y seguimos a vueltas con la implementación de AD connect que estoy realizando ahora. Curiosamente, esta debería ser la mas sencilla de las tres que he tenido que llevo en total, ya que al ser una startup, Office365 ha sido su primer y único proveedor de correo y lo único que querían, era sincronizar las contraseñas. Fácil, ¿no? Pues no.
Durante las pruebas iniciales, comencé sincronizando a los usuarios de mi departamento, así como una serie de grupos de la nueva estructura/nomenclatura que estoy implantando en el AD local. Una vez solucionado el único fallo que había tenido en la implantación (podéis saber más aquí), había considerado cerrada ya la parte de configuración y me disponía a migrar el resto de departamentos. En ese momento, mi jefe me llamo y me explico que estaba había accedido al portal de Exchange online para echarle un vistazo a algunas configuraciones de los grupos y no podía hacer algunas operaciones. En concreto, estaba intentando modificar las delivery restrictions de los nuevos grupos globales que se habían sincronizado. Una de las opciones nuevas que estoy implantando con la nueva estructura es el uso de grupos globales como shadow groups de departamento que además se pueden usar como grupos de distribución (ya escribiré un post sobre como se hace). El caso es que estaba intentando cambiar la opción por defecto de las delivery restrictions (que se pueda enviar correos desde cuentas internas y externas), para que solo los puedan usar nuestros usuarios. Y no le dejaba:
Como podéis ver en el mensaje de error, al ser un objeto controlado por el AD local, todos los cambios deben hacerse en este. Bien, tiene sentido. Lo que no tiene mucho sentido, es lo que viene a continuación. Después de investigar, resulta que al no haber tenido nunca un Exchange instalado en nuestra red, los objetos de grupo de nuestro esquema de AD, no tienen los campos necesarios para controlar estas opciones, lo cual, nos deja básicamente con dos opciones. La primera, consiste en extender el esquema de AD como si fuéramos a instalar Exchange pero sin instalarlo, y después, modificar a mano los campos necesarios en todos los grupos que queramos modificar, bien usando ADSIEDIT o powershell. Ingenioso, pero no esta soportado por Microsoft. Lo cual nos deja la segunda opción, que si esta soportada y recomendada por Microsoft, que consiste en desplegar un entorno hibrido de Exchange. Ahí es nada. Para modificar unas cuantas opciones de unos grupos, tengo que instalar un entorno de Exchange on-premise (gracias Microsoft). Al menos te “regalan” la licencia de Exchange (gracias otra vez ¬__¬). Podéis encontrar más información sobre todo este tema en este post.
El caso, es que instalar un servidor de Exchange para hacer algo tan simple no me convence, así que he buscado una tercera opción. Mi idea, consiste en usar las reglas de mapeo de campos de la sincronización de azure AD connect para variar los campos que necesito durante las sincronizaciones. Y para que se entienda bien lo que voy a hacer, aquí viene un poco de teoría.
Azure AD connect no es ni mas ni menos que un gestor de identidades diseñado específicamente para sincronizar directorios locales con Azure. Básicamente su funcionamiento esquemático es el siguiente:
Y sus componentes principales son los siguientes:
· Conectores: Los conectores definen los directorios a los que se conecta Azure AD connect para realizar la sincronización de los campos, así como toda su configuración (esquema, campos a sincronizar, opciones de bind, etc.). El conector que hace referencia a Azure es el contiene onmicrosoft.
· Metaverso: El metaverso es un directorio que en su esquema contiene todos los objetos y todos los campos de cada directorio al que Azure AD Connect está conectado. Se utiliza como almacén intermedio durante las tareas de sincronización entre conectores.
· Reglas de sincronización: Las reglas de sincronización en Azure AD connect se usan para establecer y controlar el mapeo entre los distintos campos de los distintos objetos de los distintos conectores y el metaverso. Hay una regla por cada objeto de cada director y cada dirección (inbound o Outbound) y en cada una de esas reglas, se define como se va a hacer la sincronización de cada uno de los campos del objeto.
En general, la sincronización de un directorio a otro se realiza siempre en dos pasos. Primero se sincronizan los cambios de los objetos del directorio de origen con el metaverso y después se sincronizan los cambios desde el metaverso al directorio de destino. Estas sincronizaciones pueden ser completas (normalmente la primera vez) o deltas (sincronizaciones parciales, que son las habituales). No todos los campos tienen porque estar incluidos en las sincronizaciones, por ejemplo, en la sincronización del AD local al metaverso, solo se sincronizan los campos que existan en el AD local, y los que existen en el metaverso, pero no en el AD local, no se sincronizan:
Como ya habréis podido adivinar, nosotros vamos a modificar la regla de sincronización, del objeto grupo desde el metaverso a Azure AD (regla tipo outgoing, conector onmicrosoft) y forzaremos el campo “MsExchRequireAuthToSendTo” a true, ya que este es campo que controla el comportamiento de las restricciones de envío.
Y después de toda esta teoría, vamos al fregao. Estos son los pasos para realizar la modificación de la regla:
Ejecutamos el Azure Syncronization rules editor:
Seleccionamos las siguientes opciones para filtrar la regla que queremos:
- Direction: Outbound
- Connector: dominio.onmicrosoft.com
- Connector object type: Group
- Connector Attribute: msExchangeRequireAuthToSendTo
Si lo hemos hecho bien, solo aparecerá una regla, que es la que tenemos que modificar:
La seleccionamos y pulsamos el botón edit. A continuación, nos aparecerá un cuadro de dialogo indicándonos que, al ser una regla por defecto, para modificarla se recomienda crear una copia. En mi caso no lo he hecho, así que seleccioné no. Vosotros podéis elegir la opción que queráis. Si pulsáis yes, la regla original se deshabilita por defecto.
En el cuadro de edición de la regla, seleccionamos directamente la opción transformations
Después buscamos el campo que queremos modificar en la lista de campos y cambiamos el tipo de Flow a Constant y el Source a True para forzar el valor. Por último, dejamos el merge type en update para asegurarnos de que solo haga el cambio cuando sea necesario y no en cada sincronización.
Una vez hecho lo anterior, salvamos las modificaciones y salimos del editor. Para comprobar que los cambios que hemos hecho funcionan correctamente, podéis esperar a la siguiente sincronización o forzar una:
El parámetro policytype acepta Initial y delta (initial para sincronizar todos los objetos del directorio y delta para sincronizar solo los cambios). Creo que las dos son validas para lo que queremos probar, pero yo he usado initial porque aún tengo pocos objetos para sincronizar y no hay casi diferencia en tiempo.
Ahora comprobamos en el synchronization service Manager que la sincronización haya finalizado:
Como veis en el cuadro anterior, entre otras cosas se nos indica que para el objeto anterior (grupo), se va a modificar el atributo msExchangeRequireAuthToSendTo con el valor true con una modificación de tipo add (lo que significa que no existía anteriormente).
Por último, nos conectaremos al portal de Exchange online y podremos comprobar, que las delivery options se han modificado correctamente:
Como podéis ver, esta una opción más cómoda para configurar el comportamiento por defecto de los campos que existen en Azure AD pero no existen en el directorio activo local que instalar un Exchange nuevo on site. Además, con un poco de trabajo extra, podríamos usar la opción de scoping filter de las reglas para crear excepciones a estas configuraciones por defecto.
Y poco más que añadir. Si habéis llegado hasta aquí, enhorabuena, menudo tostón os habéis tragado. Nos vemos en la siguiente!
Un saludo.
Comentarios
Publicar un comentario