Muchas veces nos encontramos con que el cliente del proyecto en el que estamos utiliza Azure para la gestión global de todos sus usuarios, por lo que nos vemos obligados a utilizar Azure como IDP para GCP, activando la sincronización de usuarios y Single Sign On contra Azure.
Por eso, en este post nos centraremos en la configuración del aprovisionamiento automático de usuarios de Azure en GCP utilizando Google Cloud / G Suite Connector suministrado por Microsoft.
La sincronización de usuarios de Azure a GCP se puede hacer de dos formas; la elección de una u otra depende de si para la gestión de usuarios en Azure se está usando Azure AD o si bien se usa un AD on premise. En este post, hablaremos de la sincronización contra Azure AD.
Hay que tener en cuenta la existencia de Azure de dos tipos de usuarios distintos:
- Miembros: usuarios nativos de la organización de Azure AD que tienen un conjunto de permisos predeterminados.
- Invitados o B2B: usuarios invitados a colaborar con la organización que tienen sus permisos restringidos y son del tipo “Guest”. La invitación se realiza mediante mail.
Para la sincronización de los usuarios usaremos Google Cloud / G Suite Connector disponible en Azure.
Antes de lanzarnos a configurar los conectores, y habiendo tenido en cuenta las consideraciones del punto anterior, necesitaremos:
- Un dominio o subdominio DNS para el mapeo de usuarios, se debe tener permisos para incorporar un registro TXT en el mismo.
- El dominio será el dominio de identidades de Cloud Identity por lo que el formato de la identidad de Google será [email protected]
- Usuarios de Azure AD en el que el campo de “mail” sea ese dominio (no el UPN, los usuarios internos los sincronizamos según el mail).
- Usuarios externos: estos usuarios posiblemente tendrán un mail que no será ese dominio, y el UPN será de dominio *.onmicrosoft.com. Al sincronizarse se renombrarán al dominio elegido (se aconseja un subdominio del principal pe: externos.dominioelegido.com, este dominio se añadirá como secundario en Cloud Identity).
Usaremos dos G Suite Connector distintos: uno, dedicado a la sincronización de los usuarios internos; y otro, para los usuarios externos, puesto que cada uno se sincronizará en base a un atributo distinto.
A través de Azure AD -> Enterprise applications -> Añadir, instalaremos el conector seleccionandolo del marketplace:
Después en AzureAD -> Enterprise Applications, seleccionaremos el conector y pinchamos en properties. Aquí tendremos opción de añadir un nombre más descriptivo al conector, por lo demás las opciones deben quedar como aparecen en la imagen:
En el menú de la derecha seleccionaremos Users and Groups y seleccionamos los usuarios o grupo de usuarios que entrarán en la sincronización (posteriormente, se filtrarán mediante scopes).
Tras esto, seleccionamos en el menú de la izquierda Provisioning -> Edit provisioning y nos aparecerá una pantalla como la siguiente:
Seleccionamos el desplegable de Admin Credentials e introducimos las credenciales del usuario de Cloud Identity con permisos para realizar la sincronización.
Testeamos la conexión para ver que funciona correctamente.
A continuación, en la misma pantalla seleccionaremos el desplegable de Mappings -> Provision Azure Active Directory Users -> Source Object Scope y seleccionaremos Añadir filtro.
En este paso configuraremos un scope para los usuarios seleccionados en pasos anteriores.
En Azure los usuarios externos llevan en su atributo originalUserPrincipalName la cadena --md-var-hashtag-EXT--md-var-hashtag-@, al añadir este scope filtramos por esa cadena para asegurarnos que solo se sincronicen los usuarios que no la lleven; es decir, los usuarios internos.
Para ello dejaremos el scope como aparece a continuación:
Como último paso, volveremos a AzureAD -> Enterprise Applications, seleccionaremos nuestro conector -> Provisioning y activaremos la sincronización.
En este momento, la sincronización comenzará y al cabo de unos minutos nos indicará la cantidad de usuarios que han sido sincronizados con Cloud Identity.
En la sincronización de usuarios externos existe el problema de que el dominio de mail de estos usuarios es del tipo nombreempresa.onmicrosoft.com y no se corresponde con un dominio dado de alta en Cloud Identity, por lo que utilizaremos un scope filtrándolos por el campo originalUserPrincipalName y la cadena --md-var-hashtag-EXT--md-var-hashtag-@ (que solo contienen los usuarios externos) y después reescribiremos el dominio a uno elegido por nosotros.
El proceso sería el siguiente:
Usaremos un nuevo conector dedicado a estos usuarios, lo instalaremos y configuraremos su propiedades como en el conector desplegado anteriormente.
A diferencia del anterior en el parte de definición de scope, seleccionaremos todos los usuarios cuyo originalUserPrincipalName contenga la cadena --md-var-hashtag-EXT--md-var-hashtag-, el regex a aplicar puede observarse en la siguiente captura.
Ahora que hemos añadido el scope para sincronizar solo los usuarios externos, vamos a reescribir su dominio de mail para añadirlos a uno elegido por nosotros.
Vamos a AzureAD -> Enterprise applications -> Seleccionamos el conector para usuarios externos -> Provisioning -> Edit Provisioning -> Mapping -> Provision Azure Active Directory Users.
En la parte de Attribute mappings pinchamos sobre la primera fila que tendrá el siguiente aspecto:
Nos aparecerá una ventana en la parte derecha y cambiaremos los parámetros para dejarlos como en la imagen:
Con esta expresión reescribiremos el dominio original del usuario (dominioempresa.onmicrosoft.com) al dominio creado en Cloud Identity (dominioelegido.com).
Después pinchamos en Ok, Salvar y activaremos la sincronización.
- El conector hace uso de los eventos de AzureAD así como de un registro interno en el que da de alta los usuarios que está gestionando, por lo que es necesario que la sincronización siempre esté corriendo.
- Si apagamos la sincronización y damos de baja un usuario en AzureAD y después la arrancamos de nuevo, el conector no registrará este evento y no suspenderá el usuario en Cloud Identity.
- En ningún caso el conector elimina usuarios de Cloud Identity, solo los deja suspendidos.
- Si el conector encuentra usuarios ya creados en Cloud Identity no sincronizados por él y estos usuarios no existen en AzureAD, no realizará ninguna acción sobre ellos.
- Si encuentra usuarios en AzureAD que no se encuentran en Cloud Identity, los creará.
- Si encuentra que un usuario existente en AzureAD, sincronizado por él en Cloud Identity se ha eliminado posteriormente de este último, lo volverá a crear.
- Si se saca del scope del conector un usuario o se hace un soft-delete de él en AzureAD, el conector dejará suspendido el usuario en Cloud Identity.
- Si se elimina un usuario de AzureAD (hard delete) sincronizado con el conector en Cloud Identity, este dejará el usuario suspendido en CI con el prefijo “del_”.
Como hemos visto, la configuración del aprovisionamiento de usuarios en GCP contra Azure no es para nada complicada. Tenemos que recordar que una vez esté configurada esta sincronización, los usuarios todavía no podrían logarse, para ello será necesario configurar el SSO contra Azure AD, pero este tema lo trataremos en el siguiente post.
Tell us what you think.