Logotipo de Zephyrnet

Administre usuarios y membresías grupales en Amazon QuickSight mediante eventos SCIM generados en IAM Identity Center con Azure AD

Fecha:

Amazon QuickSight es un servicio de inteligencia empresarial (BI) escalable y nativo de la nube que admite la federación de identidades. Gestión de identidades y accesos de AWS (IAM) permite a las organizaciones usar las identidades administradas en su proveedor de identidad empresarial (IdP) y federar el inicio de sesión único (SSO) en QuickSight. A medida que más organizaciones crean almacenes de identidades de usuarios centralizados con todas sus aplicaciones, incluidas aplicaciones locales, aplicaciones de terceros y aplicaciones en AWS, necesitan una solución para automatizar el aprovisionamiento de usuarios en estas aplicaciones y mantener sus atributos sincronizados con sus aplicaciones centralizadas. almacén de identidad de usuario.

Al diseñar un repositorio de usuarios, algunas organizaciones deciden organizar a sus usuarios en grupos o usar atributos (como el nombre del departamento) o una combinación de ambos. Si su organización utiliza Microsoft Azure Active Directory (Azure AD) para la autenticación centralizada y utiliza sus atributos de usuario para organizar a los usuarios, puede habilitar la federación en todas las cuentas de QuickSight, así como administrar los usuarios y su pertenencia a grupos en QuickSight mediante eventos generados en AWS. plataforma. Esto permite a los administradores del sistema gestionar de forma centralizada los permisos de usuario desde Azure AD. El aprovisionamiento, la actualización y el desaprovisionamiento de usuarios y grupos en QuickSight ya no requieren la administración en dos lugares con esta solución. Esto garantiza que los usuarios y grupos de QuickSight se mantengan coherentes con la información de Azure AD a través de la sincronización automática.

En esta publicación, lo guiamos a través de los pasos necesarios para configurar SSO federado entre QuickSight y Azure AD a través de AWS IAM Identity Center (sucesor del inicio de sesión único de AWS) donde el aprovisionamiento automático está habilitado para Azure AD. También demostramos la actualización automática de miembros de usuarios y grupos mediante un evento de System for Cross-domain Identity Management (SCIM).

Resumen de la solución

El siguiente diagrama ilustra la arquitectura de la solución y el flujo de usuarios.

arquitectura de la solución y flujo de usuarios.

En esta publicación, IAM Identity Center proporciona un lugar central para reunir la administración de usuarios y su acceso a cuentas y aplicaciones en la nube de AWS. Azure AD es el repositorio de usuarios y está configurado como IdP externo en IAM Identity Center. En esta solución, demostramos el uso de dos atributos de usuario (department, jobTitle) específicamente en Azure AD. IAM Identity Center admite el aprovisionamiento automático (sincronización) de información de usuarios y grupos de Azure AD en IAM Identity Center mediante el protocolo SCIM v2.0. Con este protocolo, los atributos de Azure AD se pasan al Centro de identidad de IAM, que hereda el atributo definido para el perfil del usuario en el Centro de identidad de IAM. IAM Identity Center también admite la federación de identidades con SAML (Security Assertion Markup Language) 2.0. Esto permite que IAM Identity Center autentique identidades mediante Azure AD. Luego, los usuarios pueden SSO en aplicaciones compatibles con SAML, incluido QuickSight. La primera mitad de esta publicación se enfoca en cómo configurar este extremo a extremo (consulte Flujo de inicio de sesión en el diagrama).

A continuación, la información del usuario comienza a sincronizarse entre Azure AD e IAM Identity Center a través del protocolo SCIM. Puede automatizar la creación de un usuario en QuickSight usando un AWS Lambda función desencadenada por el CreateUser El evento SCIM se originó en IAM Identity Center, que se capturó en Puente de eventos de Amazon. En la misma función de Lambda, puede actualizar posteriormente la pertenencia del usuario al agregarlo al grupo especificado (cuyo nombre se compone de dos atributos de usuario: department-jobTitle, de lo contrario, cree el grupo si aún no existe, antes de agregar la membresía.

En esta publicación, esta parte de automatización se omite porque sería redundante con el contenido discutido en las siguientes secciones.

Esta publicación explora y demuestra una UpdateUser Evento SCIM desencadenado por la actualización del perfil de usuario en Azure AD. El evento se captura en EventBridge, que invoca una función de Lambda para actualizar la pertenencia al grupo en QuickSight (consulte Flujo de actualización en el diagrama). Debido a que se supone que un usuario determinado pertenece a un solo grupo a la vez en este ejemplo, la función reemplazará la membresía actual del grupo del usuario con la nueva.

En la Parte I, configura SSO para QuickSight desde Azure AD a través de IAM Identity Center (el flujo de inicio de sesión):

  1. Configure Azure AD como IdP externo en IAM Identity Center.
  2. Agregue y configure una aplicación de IAM Identity Center en Azure AD.
  3. Configuración completa de IAM Identity Center.
  4. Configure el aprovisionamiento automático de SCIM en Azure AD e IAM Identity Center y confirme en IAM Identity Center.
  5. Agregue y configure una aplicación QuickSight en IAM Identity Center.
  6. Configure un IdP SAML y un rol de IAM de federación SAML 2.0.
  7. Configure atributos en la aplicación QuickSight.
  8. Cree un usuario, un grupo y una pertenencia a un grupo de forma manual mediante el Interfaz de línea de comandos de AWS (AWS CLI) o API.
  9. Verifique la configuración iniciando sesión en QuickSight desde el portal del Centro de identidad de IAM.

En la Parte II, configura la automatización para cambiar la membresía del grupo en un evento SCIM (el flujo de actualización):

  1. Comprenda los eventos SCIM y los patrones de eventos para EventBridge.
  2. Cree una asignación de atributos para el nombre del grupo.
  3. Cree una función Lambda.
  4. Agregue una regla de EventBridge para activar el evento.
  5. Verifique la configuración cambiando el valor del atributo de usuario en Azure AD.

Requisitos previos

Para este tutorial, debe tener los siguientes requisitos previos:

  • Centro de identidad de IAM. Para obtener instrucciones, consulte los pasos 1 y 2 en el Guía de introducción a AWS IAM Identity Center.
  • Una suscripción a una cuenta QuickSight.
  • Comprensión básica de IAM y los privilegios necesarios para crear un IdP, funciones y políticas de IAM.
  • Una suscripción de Azure AD. Necesita al menos un usuario con los siguientes atributos para estar registrado en Azure AD:
    • userPrincipalName – Campo obligatorio para el usuario de Azure AD.
    • nombre para mostrar – Campo obligatorio para el usuario de Azure AD.
    • Correo – Campo obligatorio para que IAM Identity Center funcione con QuickSight.
    • título profesional – Se utiliza para asignar un usuario a un grupo
    • de facturación – Se utiliza para asignar un usuario a un grupo.
    • nombre de pila – Campo opcional.
    • apellido – Campo opcional.

Parte I: configurar SSO para QuickSight desde Azure AD a través de IAM Identity Center

Esta sección presenta los pasos para configurar el flujo de inicio de sesión.

Configurar un IdP externo como Azure AD en IAM Identity Center

Para configurar su IdP externo, complete los siguientes pasos:

  1. En la consola de IAM Identity Center, elija Ajustes.
  2. Elige Acciones en Fuente de identidad pestaña, luego elija Cambiar fuente de identidad.
  3. Elige Proveedor de identidad externo, A continuación, elija Siguiente.

Se muestran los metadatos del IdP. Mantenga esta pestaña del navegador abierta.

Agregar y configurar una aplicación de IAM Identity Center en Azure AD

Para configurar su aplicación IAM Identity Center, complete los siguientes pasos:

  1. Abre una nueva pestaña del navegador.
  2. Inicie sesión en el portal de Azure AD con sus credenciales de administrador de Azure.
  3. under Servicios Azure, escoger Directorio activo de Azure.
  4. En el panel de navegación, debajo Gestiona, escoger Aplicaciones empresariales, A continuación, elija Nueva aplicación.
  5. En Examinar Galería de Azure AD sección, buscar Centro de identidad de IAM, A continuación, elija AWS IAM Identity Center (sucesor del inicio de sesión único de AWS).
  6. Ingrese un nombre para la aplicación (en esta publicación, usamos IIC-QuickSight) y elige Crear.
  7. En Gestiona sección, elija Inicio de sesión único, A continuación, elija SAML.
  8. En Asignar usuarios y grupos sección, elija Asignar usuarios y grupos.
  9. Elige Agregar usuario / grupo y agregue al menos un usuario.
  10. Seleccione Usuario como su papel.
  11. En Configurar inicio de sesión único sección, elija ¡Empieza aquí!.
  12. En Configuración básica de SAML sección, elija Editary complete los siguientes parámetros y valores:
  13. Identificador – El valor en el URL del emisor del centro de identidad de IAM campo.
  14. URL de respuesta – El valor en el URL del servicio de aserción al consumidor (ACS) del centro de identidad de IAM campo.
  15. URL de inicio de sesión – Dejar en blanco.
  16. Estado de retransmisión – Dejar en blanco.
  17. URL de cierre de sesión – Dejar en blanco.
  18. Elige Guardar.

La configuración debería parecerse a la siguiente captura de pantalla.

configuración

  1. En Certificados SAML sección, descarga el XML de metadatos de federación archivo y el Certificado (sin procesar) archivo.
    Archivo XML de metadatos de federación y archivo de certificado (sin procesar)

Ya está todo listo con la configuración de inicio de sesión único de Azure AD en este momento. Más adelante, volverá a esta página para configurar el aprovisionamiento automático, así que mantenga abierta esta pestaña del navegador.

Configuración completa del centro de identidad de IAM

Complete la configuración de su IAM Identity Center con los siguientes pasos:

  1. Vuelva a la pestaña del navegador de la consola de IAM Identity Center que mantuvo abierta en el paso anterior.
  2. Metadatos SAML de IdP bajo el Metadatos del proveedor de identidad sección, elija Elija el archivo.
  3. Elija el archivo de metadatos descargado previamente (IIC-QuickSight.xml).
  4. certificado de proveedor de identidad bajo el Metadatos del proveedor de identidad sección, elija Elija el archivo.
  5. Elija el archivo de certificado descargado previamente (IIC-QuickSight.cer).
  6. Elige Siguiente.
  7. Ingrese ACEPTAR, luego elija Cambiar la fuente del proveedor de identidad.

Configure el aprovisionamiento automático de SCIM en Azure AD e IAM Identity Center

Su método de aprovisionamiento todavía está configurado como Manual (no SCIM). En este paso, habilitamos el aprovisionamiento automático para que IAM Identity Center reconozca a los usuarios, lo que permite la federación de identidades en QuickSight.

  1. En Aprovisionamiento automático sección, elija permitir.
    elija Habilitar
  2. Elige Token de acceso para mostrar su ficha.
    Token de acceso
  3. Vuelva a la pestaña del navegador (Azure AD), que mantuvo abierta en el Paso 1.
  4. En Gestiona sección, elija Aplicaciones empresariales.
  5. Elige IIC-QuickSight, A continuación, elija Aprovisionamiento.
  6. Elige Automático in Modo de aprovisionamiento e ingrese los siguientes valores:
  7. URL del inquilino – El valor en el Extremo SCIM campo.
  8. Token secreto – El valor en el Token de acceso campo.
  9. Elige Conexión de prueba.
  10. Después de que la conexión de prueba se complete con éxito, configure Estado de aprovisionamiento a On.
    establezca el Estado de aprovisionamiento en Activado
  11. Elige Guardar.
  12. Elige Iniciar aprovisionamiento para iniciar el aprovisionamiento automático utilizando el protocolo SCIM.

Cuando se complete el aprovisionamiento, se propagará uno o más usuarios de Azure AD a IAM Identity Center. La siguiente captura de pantalla muestra los usuarios que se aprovisionaron en IAM Identity Center.

los usuarios que se aprovisionaron en IAM Identity Center

Tenga en cuenta que en este aprovisionamiento de SCIM, los usuarios en QuickSight deben crearse mediante la función Lambda activada por el evento originado en IAM Identity Center. En esta publicación, creamos una membresía de usuario y grupo a través de AWS CLI (Paso 8).

Agregar y configurar una aplicación QuickSight en IAM Identity Center

En este paso, creamos una aplicación QuickSight en IAM Identity Center. También configura un proveedor, un rol y una política de SAML de IAM para que funcione la aplicación. Complete los siguientes pasos:

  1. En la consola de IAM Identity Center, en la Aplicaciones página, elige Agregar aplicación.
  2. Aplicación preintegrada bajo Selecciona una aplicación, introduzca quicksight.
  3. Seleccione Amazon QuickSight, A continuación, elija Siguiente.
  4. Introduce un nombre para Nombre para mostrar, Tales como Amazon QuickSight.
  5. Elige Descargar bajo Archivo de metadatos SAML del centro de identidad de IAM y guárdalo en tu computadora.
  6. Deje todos los demás campos como están y guarde la configuración.
  7. Abra la aplicación que acaba de crear, luego seleccione Asignar usuarios.

Se enumerarán los usuarios aprovisionados a través de SCIM anteriormente.

  1. Elija todos los usuarios para asignar a la aplicación.

Configurar un IdP SAML y un rol de IAM de federación SAML 2.0

Para configurar su IdP SAML de IAM para el centro de identidad de IAM y el rol de IAM, complete los siguientes pasos:

  1. En la consola de IAM, en el panel de navegación, elija Proveedores de identidad, A continuación, elija Agregar proveedor.
  2. Elige SAML as tipo de proveedore ingresa Azure-IIC-QS as Nombre del proveedor.
  3. under Documento de metadatos, escoger Elija el archivo y cargue el archivo de metadatos que descargó anteriormente.
  4. Elige Agregar proveedor para guardar la configuración.
  5. En el panel de navegación, elija Roles, A continuación, elija Crear rol.
  6. Tipo de entidad de confianza, seleccione Federación SAML 2.0.
  7. Elija un proveedor de SAML 2.0, seleccione el proveedor de SAML que creó y luego elija Permitir el acceso a la consola de administración de AWS y mediante programación.
  8. Elige Siguiente.
  9. En Agregar permiso página, elige Siguiente.

En esta publicación, creamos usuarios de QuickSight a través de un comando de la CLI de AWS, por lo tanto, no estamos creando ninguna política de permisos. Sin embargo, si se requiere la función de autoaprovisionamiento en QuickSight, la política de permisos para el CreateReader, CreateUsery CreateAdmin Se requieren acciones (según el rol de los usuarios de QuickSight).

  1. En Nombra, revisa y crea página, debajo Detalles del rol, introduzca qs-reader-azure para el papel
  2. Elige Crear rol.
  3. Tenga en cuenta el ARN del rol.

El ARN se utiliza para configurar atributos en su aplicación IAM Identity Center.

Configurar atributos en la aplicación QuickSight

Para asociar el IdP de SAML de IAM y el rol de IAM a la aplicación QuickSight en el Centro de identidad de IAM, complete los siguientes pasos:

  1. En la consola de IAM Identity Center, en el panel de navegación, seleccione Aplicaciones.
  2. Seleccione Amazon QuickSight solicitud, y en la Acciones menú, seleccione Editar asignaciones de atributos.
  3. Elige Agregar nueva asignación de atributos.
  4. Configure las asignaciones en la siguiente tabla.
Atributo de usuario en la aplicación Se asigna a este valor de cadena o atributo de usuario en IAM Identity Center
Concepto ${user:email}
https://aws.amazon.com/SAML/Attributes/RoleSessionName ${user:email}
https://aws.amazon.com/SAML/Attributes/Role arn:aws:iam::<ACCOUNTID>:role/qs-reader-azure,arn:aws:iam::<ACCOUNTID>:saml-provider/Azure-IIC-QS
https://aws.amazon.com/SAML/Attributes/PrincipalTag:Email ${user:email}

Tenga en cuenta los siguientes valores:

  • Reemplaza con su ID de cuenta de AWS.
  • PrincipalTag:Email es para la función de sincronización de correo electrónico para usuarios de autoaprovisionamiento que deben habilitarse en la página de administración de QuickSight. En esta publicación, no habilite esta función porque registramos al usuario con un comando AWS CLI.
  1. Elige Guardar los cambios.

Cree un usuario, un grupo y una pertenencia a un grupo con la AWS CLI

Como se describió anteriormente, los usuarios y grupos en QuickSight se crean manualmente en esta solución. Los creamos a través de los siguientes comandos de AWS CLI.

El primer paso es crear un usuario en QuickSight especificando el rol de IAM creado anteriormente y la dirección de correo electrónico registrada en Azure AD. El segundo paso es crear un grupo con el nombre del grupo como valores de atributos combinados de Azure AD para el usuario creado en el primer paso. El tercer paso es agregar al usuario al grupo creado anteriormente; member-name indica el nombre de usuario creado en QuickSight que se compone de <IAM Role name>/<session name>. Ver el siguiente código:

aws quicksight register-user --aws-account-id <ACCOUNTID> --namespace default --identity-type IAM --email <email registered in Azure AD> --user-role READER --iam-arn arn:aws:iam::<ACCOUNTID>:role/qs-reader-azure --session-name <email registered in Azure AD> aws quicksight create-group --aws-account-id <ACCOUNTID> --namespace default --group-name Marketing-Specialist aws quicksight create-group-membership --aws-account-id <ACCOUNTID> --namespace default --member-name qs-reader-azure/<email registered in Azure AD> –-group-name Marketing-Specialist

En este punto, la configuración integral de Azure AD, IAM Identity Center, IAM y QuickSight está completa.

Verifique la configuración iniciando sesión en QuickSight desde el portal IAM Identity Center

Ahora está listo para iniciar sesión en QuickSight utilizando el flujo SSO iniciado por IdP:

  1. Abra una nueva ventana privada en su navegador.
  2. Inicie sesión en el portal del Centro de identidad de IAM (https://d-xxxxxxxxxx.awsapps.com/start).

Se le redirigirá al indicador de inicio de sesión de Azure AD.

  1. Ingrese sus credenciales de Azure AD.

Se le redirigirá de nuevo al portal del Centro de identidad de IAM.

  1. En el portal del centro de identidad de IAM, elija Amazon QuickSight.

Portal IAM Identity Center, elija Amazon QuickSight

Se le redirigirá automáticamente a su hogar de QuickSight.
redirigido automáticamente a su hogar QuickSight

Parte II: Automatice el cambio de membresía del grupo en eventos SCIM

En esta sección, configuramos el flujo de actualización.

Comprender el evento SCIM y el patrón de eventos para EventBridge

Cuando un administrador de Azure AD realiza cambios en los atributos de un perfil de usuario en particular, el cambio se sincronizará con el perfil de usuario en IAM Identity Center a través del protocolo SCIM y la actividad se registrará en un Seguimiento de la nube de AWS evento llamado UpdateUser by sso-directory.amazonaws.com (IAM Identity Center) como origen del evento. Del mismo modo, el CreateUser El evento se registra cuando se crea un usuario en Azure AD, y el DisableUser event es para cuando un usuario está deshabilitado.

La siguiente captura de pantalla en el  Historial de eventos La página muestra dos CreateUser eventos: uno lo registra IAM Identity Center y el otro QuickSight. En esta publicación, usamos el de IAM Identity Center.

Consola de CloudTrail

Para que EventBridge pueda manejar el flujo correctamente, cada evento debe especificar los campos de un evento con los que desea que coincida el patrón de evento. El siguiente patrón de eventos es un ejemplo del UpdateUser evento generado en IAM Identity Center tras la sincronización SCIM:

{ "source": ["aws.sso-directory"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sso-directory.amazonaws.com"], "eventName": ["UpdateUser"] }
}

En esta publicación, demostramos una actualización automática de membresía de grupo en QuickSight que se activa por el UpdateUser Evento SCIM.

Crear asignación de atributos para el nombre del grupo

Para que la función Lambda administre la pertenencia a grupos en QuickSight, debe obtener los dos atributos de usuario (department y jobTitle). Para simplificar el proceso, combinamos dos atributos en Azure AD (department, jobTitle) en un atributo en IAM Identity Center (title), mediante la característica de asignaciones de atributos en Azure AD. A continuación, el Centro de identidad de IAM utiliza el title atributo como un nombre de grupo designado para este usuario.

  1. Inicie sesión en la consola de Azure AD, vaya a Aplicaciones empresariales, IIC-QuickSighty Aprovisionamiento.
  2. Elige Editar asignaciones de atributos.
  3. under Asignaciones, escoger Aprovisionar usuarios de Azure Active Directory.
    Consola de Azure AD, bajo asignaciones
  4. Elige jobTitle de la lista de Atributos de Azure Active Directory.
  5. Cambiar la siguiente configuración:
    1. Tipo de asignaciónExpression
    2. expresiónJoin("-", [department], [jobTitle])
    3. Atributo objetivo title
      ajustes de actualización
  6. Elige Guardar.
  7. Puede salir de la página de aprovisionamiento.

El atributo se actualiza automáticamente en IAM Identity Center. El perfil de usuario actualizado se parece a las siguientes capturas de pantalla (Azure AD a la izquierda, IAM Identity Center a la derecha).

perfil de usuario actualizado
Información relacionada con el trabajo

Crear una función Lambda

Ahora creamos una función Lambda para actualizar la membresía del grupo QuickSight en el evento SCIM. La parte central de la función es obtener la información del usuario. title valor de atributo en IAM Identity Center en función de la información del evento desencadenado y luego para asegurarse de que el usuario existe en QuickSight. Si el nombre del grupo aún no existe, crea el grupo en QuickSight y luego agrega el usuario al grupo. Complete los siguientes pasos:

  1. En la consola Lambda, elija Crear función.
  2. Nombre, introduzca UpdateQuickSightUserUponSCIMEvent.
  3. Runtime, escoger 3.9 Python.
  4. Se acabó el tiempo, establecido en 15 segundos.
  5. Permisos, cree y adjunte un rol de IAM que incluya los siguientes permisos (la entidad de confianza (principal) debe ser lambda.amazonaws.com):
    { "Version": "2012-10-17", "Statement": [ { "Sid": "MinimalPrivForScimQsBlog", "Effect": "Allow", "Action": [ "identitystore:DescribeUser", "quicksight:RegisterUser", "quicksight:DescribeUser", "quicksight:CreateGroup", "quicksight:DeleteGroup", "quicksight:DescribeGroup", "quicksight:ListUserGroups", "quicksight:CreateGroupMembership", "quicksight:DeleteGroupMembership", "quicksight:DescribeGroupMembership", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ]
    }

  6. Escriba código Python usando el SDK de Boto3 para Tienda de identidad y Vista rápida. El siguiente es el código Python de muestra completo:
import sys
import boto3
import json
import logging
from time import strftime
from datetime import datetime # Set logging
logger = logging.getLogger()
logger.setLevel(logging.INFO) def lambda_handler(event, context): ''' Modify QuickSight group membership upon SCIM event from IAM Identity Center originated from Azure AD. It works in this way: Azure AD -> SCIM -> Identity Center -> CloudTrail -> EventBridge -> Lambda -> QuickSight Note that this is a straightforward sample to show how to update QuickSight group membership upon certain SCIM event. For example, it assumes that 1:1 user-to-group assigmnent, only one (combined) SAML attribute, etc. For production, take customer requirements into account and develop your own code. ''' # Setting variables (hard-coded. get dynamically for production code) qs_namespace_name = 'default' qs_iam_role = 'qs-reader-azure' # Obtain account ID and region account_id = boto3.client('sts').get_caller_identity()['Account'] region = boto3.session.Session().region_name # Setup clients qs = boto3.client('quicksight') iic = boto3.client('identitystore') # Check boto3 version logger.debug(f"## Your boto3 version: {boto3.__version__}") # Get user info from event data event_json = json.dumps(event) logger.debug(f"## Event: {event_json}") iic_store_id = event['detail']['requestParameters']['identityStoreId'] iic_user_id = event['detail']['requestParameters']['userId'] # For UpdateUser event, userId is provided through requestParameters logger.info("## Getting user info from Identity Store.") try: res_iic_describe_user = iic.describe_user( IdentityStoreId = iic_store_id, UserId = iic_user_id ) except Exception as e: logger.error("## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: logger.info(f"## User info retrieval succeeded.") azure_user_attribute_title = res_iic_describe_user['Title'] azure_user_attribute_userprincipalname = res_iic_describe_user['UserName'] qs_user_name = qs_iam_role + "/" + azure_user_attribute_userprincipalname logger.info(f"#### Identity Center user name: {azure_user_attribute_userprincipalname}") logger.info(f"#### QuickSight group name desired: {azure_user_attribute_title}") logger.debug(f"#### res_iic_describe_user: {json.dumps(res_iic_describe_user)}, which is {type(res_iic_describe_user)}") # Exit if user is not present since this function is supposed to be called by UpdateUser event try: # Get QuickSight user name res_qs_describe_user = qs.describe_user( UserName = qs_user_name, AwsAccountId = account_id, Namespace = qs_namespace_name ) except qs.exceptions.ResourceNotFoundException as e: logger.error(f"## User {qs_user_name} is not found in QuickSight.") logger.error(f"## Make sure the QuickSight user has been created in advance. Exiting.") logger.error(e) sys.exit() except Exception as e: logger.error("## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: logger.info(f"## User {qs_user_name} is found in QuickSight.") # Remove current membership unless it's the desired one qs_new_group = azure_user_attribute_title # Set "Title" SAML attribute as the desired QuickSight group name in_desired_group = False # Set this flag True when the user is already a member of the desired group logger.info(f"## Starting group membership removal.") try: res_qs_list_user_groups = qs.list_user_groups( UserName = qs_user_name, AwsAccountId = account_id, Namespace = qs_namespace_name ) except Exception as e: logger.error("## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: # Skip if the array is empty (user is not member of any groups) if not res_qs_list_user_groups['GroupList']: logger.info(f"## User {qs_user_name} is not a member of any QuickSight group. Skipping removal.") else: for grp in res_qs_list_user_groups['GroupList']: qs_current_group = grp['GroupName'] # Retain membership if the new and existing group names match if qs_current_group == qs_new_group: logger.info(f"## The user {qs_user_name} already belong to the desired group. Skipping removal.") in_desired_group = True else: # Remove all unnecessary memberships logger.info(f"## Removing user {qs_user_name} from existing group {qs_current_group}.") try: res_qs_delete_group_membership = qs.delete_group_membership( MemberName = qs_user_name, GroupName = qs_current_group, AwsAccountId = account_id, Namespace = qs_namespace_name ) except Exception as e: logger.error(f"## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: logger.info(f"## The user {qs_user_name} has removed from {qs_current_group}.") # Create group membership based on IIC attribute "Title" logger.info(f"## Starting group membership assignment.") if in_desired_group is True: logger.info(f"## The user already belongs to the desired one. Skipping assignment.") else: try: logger.info(f"## Checking if the desired group exists.") res_qs_describe_group = qs.describe_group( GroupName = qs_new_group, AwsAccountId = account_id, Namespace = qs_namespace_name ) except qs.exceptions.ResourceNotFoundException as e: # Create a QuickSight group if not present logger.info(f"## Group {qs_new_group} is not present. Creating.") today = datetime.now() res_qs_create_group = qs.create_group( GroupName = qs_new_group, Description = 'Automatically created at ' + today.strftime('%Y.%m.%d %H:%M:%S'), AwsAccountId = account_id, Namespace = qs_namespace_name ) except Exception as e: logger.error(f"## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: logger.info(f"## Group {qs_new_group} is found in QuickSight.") # Add the user to the desired group logger.info("## Modifying group membership based on its latest attributes.") logger.info(f"#### QuickSight user name: {qs_user_name}") logger.info(f"#### QuickSight group name: {qs_new_group}") try: res_qs_create_group_membership = qs.create_group_membership( MemberName = qs_user_name, GroupName = qs_new_group, AwsAccountId = account_id, Namespace = qs_namespace_name ) except Exception as e: logger.error("## Operation failed due to unknown error. Exiting.") logger.error(e) else: logger.info("## Group membership modification succeeded.") qs_group_member_name = res_qs_create_group_membership['GroupMember']['MemberName'] qs_group_member_arn = res_qs_create_group_membership['GroupMember']['Arn'] logger.debug("## QuickSight group info:") logger.debug(f"#### qs_user_name: {qs_user_name}") logger.debug(f"#### qs_group_name: {qs_new_group}") logger.debug(f"#### qs_group_member_name: {qs_group_member_name}") logger.debug(f"#### qs_group_member_arn: {qs_group_member_arn}") logger.debug("## IIC info:") logger.debug(f"#### IIC user name: {azure_user_attribute_userprincipalname}") logger.debug(f"#### IIC user id: {iic_user_id}") logger.debug(f"#### Title: {azure_user_attribute_title}") logger.info(f"## User {qs_user_name} has been successfully added to the group {qs_new_group} in {qs_namespace_name} namespace.") # return response return { "namespaceName": qs_namespace_name, "userName": qs_user_name, "groupName": qs_new_group }

Tenga en cuenta que esta función Lambda requiere Boto3 1.24.64 o posterior. Si el Boto3 incluido en el Tiempo de ejecución de Lambda es más antiguo que esto, use una capa Lambda para usar la última versión de Boto3. Para obtener más detalles, consulte ¿Cómo resuelvo los errores de "servicio desconocido", "falló la validación de parámetros" y "el objeto no tiene atributo" de una función Lambda de Python (Boto 3)?.

Agregar una regla de EventBridge para activar el evento

Para crear una regla de EventBridge para invocar la función Lambda creada anteriormente, complete los siguientes pasos:

  1. En la consola de EventBridge, cree una nueva regla.
  2. Nombre, introduzca updateQuickSightUponSCIMEvent.
  3. Patrón de evento, ingrese el siguiente código:
    { "source": ["aws.sso-directory"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sso-directory.amazonaws.com"], "eventName": ["UpdateUser"] }
    }

  4. Orden de Targets o Metas, elija la función Lambda que creó (UpdateQuickSightUserUponSCIMEvent).
  5. Habilite la regla.

Verifique la configuración cambiando un valor de atributo de usuario en Azure AD

Modifiquemos el atributo de un usuario en Azure AD y luego verifiquemos si se crea el nuevo grupo y si el usuario se agrega al nuevo.

  1. Vuelva a la consola de Azure AD.
  2. Desde Gestiona, haga clic Usuarios.
  3. Elija uno de los usuarios que utilizó anteriormente para iniciar sesión en QuickSight desde el portal del Centro de identidad de IAM.
  4. Elige Editar propiedades, luego edite los valores para Profesión y Departamento.
    Editar propiedades
  5. Guarde la configuración.
  6. Desde Gestiona, escoger Aplicación empresarial, el nombre de su aplicación y Aprovisionamiento.
  7. Elige Dejar de aprovisionar y luego Iniciar aprovisionamiento en secuencia.

En Azure AD, el intervalo de aprovisionamiento de SCIM es fijado en 40 minutos. Para obtener resultados inmediatos, detenemos e iniciamos manualmente el aprovisionamiento.

Estado de aprovisionamiento

  1. Navegue hasta la consola QuickSight.
  2. En el menú desplegable de nombre de usuario, seleccione Administrar QuickSight.
  3. Elige Gestionar grupos.

Ahora debería encontrar que se crea el nuevo grupo y que el usuario está asignado a este grupo.

se crea un nuevo grupo y el usuario se asigna a este grupo

Limpiar

Cuando haya terminado con la solución, limpie su entorno para minimizar el impacto en los costos. Es posible que desee eliminar los siguientes recursos:

  • función lambda
  • capa lambda
  • Rol de IAM para la función de Lambda
  • Grupo de registros de CloudWatch para la función de Lambda
  • Regla de EventBridge
  • cuenta QuickSight
    • Note : Solo puede haber una cuenta de QuickSight por cuenta de AWS. Por lo tanto, es posible que otros usuarios de su organización ya utilicen su cuenta de QuickSight. Elimine la cuenta de QuickSight solo si la configuró explícitamente para seguir este blog y está absolutamente seguro de que ningún otro usuario la está utilizando.
  • Instancia del centro de identidad de IAM
  • Configuración del proveedor de ID de IAM para Azure AD
  • Instancia de Azure AD

Resumen

Esta publicación proporcionó instrucciones paso a paso para configurar el aprovisionamiento SCIM de IAM Identity Center y la federación SAML 2.0 desde Azure AD para la administración centralizada de usuarios de QuickSight. También demostramos actualizaciones de membresía de grupo automatizadas en QuickSight basadas en atributos de usuario en Azure AD, mediante el uso de eventos SCIM generados en IAM Identity Center y configurando la automatización con EventBridge y Lambda.

Con este enfoque basado en eventos para aprovisionar usuarios y grupos en QuickSight, los administradores de sistemas pueden tener total flexibilidad en cuanto a dónde se pueden esperar las diferentes formas de administración de usuarios según la organización. También garantiza la coherencia de usuarios y grupos entre QuickSight y Azure AD cada vez que un usuario accede a QuickSight.

Esperamos escuchar cualquier pregunta o comentario.


Sobre los autores

Takeshi Nakatani es consultor principal de bigdata en el equipo de servicios profesionales en Tokio. Tiene 25 años de experiencia en la industria de TI, con experiencia en arquitectura de infraestructura de datos. En sus días libres, puede ser baterista de rock o motociclista.

Wakana Vilquin-Sakashita es arquitecto de soluciones especializado para Amazon QuickSight. Trabaja en estrecha colaboración con los clientes para ayudar a dar sentido a los datos a través de la visualización. Anteriormente, Wakana trabajó para S&P Global ayudando a los clientes a acceder a datos, conocimientos e investigaciones relevantes para su negocio.

punto_img

Información más reciente

punto_img