Utiliza SAML para SSO desde Power BI a fuentes internas

Al habilitar el inicio de sesión único (SSO), puede facilitar que los informes y paneles de Power BI actualicen los datos de orígenes locales mientras respeta los permisos de nivel de usuario configurados en esos orígenes. Para habilitar la conectividad de SSO sin problemas, use el lenguaje de marcado de aserción de seguridad (SAML).

Nota:

Solo puede conectarse a un origen de datos mediante single Sign-On SAML con una puerta de enlace de datos local. Para conectarse a un origen de datos adicional mediante single Sign-On SAML, debe usar una puerta de enlace de datos local diferente.

Orígenes de datos admitidos para SAML

Microsoft admite actualmente SAP HANA con SAML. Para obtener más información sobre cómo configurar y configurar el inicio de sesión único para SAP HANA mediante SAML, consulte SAML SSO for BI Platform to HANA (Inicio de sesión único de SAML para la plataforma de BI en HANA).

Se admiten orígenes de datos adicionales con Kerberos (incluido SAP HANA).

Para SAP HANA, se recomienda habilitar el cifrado antes de establecer una conexión SAML SSO. Para habilitar el cifrado, configure el servidor de HANA para que acepte conexiones cifradas y, a continuación, configure la puerta de enlace para usar el cifrado para comunicarse con el servidor de HANA. Dado que el controlador ODBC de HANA no cifra las aserciones de SAML de forma predeterminada, la aserción de SAML firmada se envía desde la puerta de enlace al servidor de HANA sin cifrar y es vulnerable a la interceptación y reutilización por parte de terceros.

Importante

Dado que SAP ya no admite OpenSSL, Microsoft también ha interrumpido su soporte técnico. Las conexiones existentes siguen funcionando, pero ya no puede crear nuevas conexiones. Use la biblioteca criptográfica de SAP (CommonCryptoLib) o sapcrypto, en su lugar.

Nota:

En las instrucciones siguientes se hace referencia a los comandos OpenSSL para la creación de certificados. Aunque estos comandos se muestran con fines ilustrativos, SAP recomienda usar CommonCryptoLib. Consulte la documentación de SAP para conocer los procedimientos recomendados actuales.

Configuración de la puerta de enlace y el origen de datos

Para usar SAML, debe establecer una relación de confianza entre los servidores HANA para los que desea habilitar el inicio de sesión único y la puerta de enlace. En este escenario, la puerta de enlace actúa como proveedor de identidad SAML (IdP). Puede establecer esta relación de varias maneras. SAP recomienda usar CommonCryptoLib para completar los pasos de instalación. Para más información, consulte la documentación oficial de SAP.

Creación de los certificados

Puede establecer una relación de confianza entre un servidor de HANA y el IdP del gateway, firmando el certificado X509 del IdP del gateway con una entidad de certificación raíz (CA) de confianza para el servidor de HANA.

Para crear los certificados, haga lo siguiente:

  1. En el dispositivo que ejecuta SAP HANA, cree una carpeta vacía para almacenar los certificados y, a continuación, vaya a esa carpeta.

  2. Cree los certificados raíz mediante la ejecución del comando siguiente:

    openssl req -new -x509 -newkey rsa:2048 -days 3650 -sha256 -keyout CA_Key.pem -out CA_Cert.pem -extensions v3_ca'''
    

    Asegúrese de copiar y guardar la frase de contraseña para usar este certificado para firmar otros certificados. Debería ver los archivos CA_Cert.pem y CA_Key.pem que se están creando.

  3. Cree los certificados idP mediante la ejecución del comando siguiente:

    openssl req -newkey rsa:2048 -days 365 -sha256 -keyout IdP_Key.pem -out IdP_Req.pem -nodes
    

    Debería ver los archivos IdP_Key.pem y IdP_Req.pem que se están creando.

  4. Firme los certificados IdP con los certificados raíz.

    openssl x509 -req -days 365 -in IdP_Req.pem -sha256 -extensions usr_cert -CA CA_Cert.pem -CAkey CA_Key.pem -CAcreateserial -out IdP_Cert.pem
    

    Debería ver los archivos CA_Cert.srl y IdP_Cert.pem que se están creando. En este momento, solo debe preocuparse por el archivo IdP_Cert.pem.

Crear una asignación para el certificado del proveedor de identidad SAML

Para configurar una asignación para el certificado del proveedor de identidades SAML, haga lo siguiente:

  1. En SAP HANA Studio, haga clic con el botón derecho en el nombre del servidor de SAP HANA y, a continuación, seleccione Seguridad>Abrir consola de seguridad>Proveedor de identidad SAML.

  2. Seleccione la opción Biblioteca criptográfica de SAP . No use la opción Biblioteca criptográfica OpenSSL, que está en desuso por SAP.

    Captura de pantalla del panel Proveedores de identidades de SAML con la opción Biblioteca criptográfica de SAP seleccionada.

  3. Para importar el certificado firmado IdP_Cert.pem, seleccione el botón azul Importar , como se muestra en la siguiente imagen:

    Captura de pantalla del botón Importar en el panel Proveedores de identidades de SAML.

  4. Recuerde asignar un nombre para el proveedor de identidades.

Importación y creación de los certificados firmados en HANA

Para importar y crear los certificados firmados en HANA, haga lo siguiente:

  1. En SAP HANA Studio, ejecute la consulta siguiente:

    CREATE CERTIFICATE FROM '<idp_cert_pem_certificate_content>'
    

    Este es un ejemplo:

    CREATE CERTIFICATE FROM
    '-----BEGIN CERTIFICATE-----
    MIIDyDCCArCgA...veryLongString...0WkC5deeawTyMje6
    -----END CERTIFICATE-----
    '
    
  2. Si no hay ningún entorno de seguridad personal (PSE) con el propósito SAML, cree uno ejecutando la consulta siguiente en SAP HANA Studio:

    CREATE PSE SAMLCOLLECTION;
    set pse SAMLCOLLECTION purpose SAML;
    
  3. Para agregar el certificado firmado recién creado al PSE, ejecute el siguiente comando:

    alter pse SAMLCOLLECTION add CERTIFICATE <certificate_id>;
    

    Por ejemplo:

    alter pse SAMLCOLLECTION add CERTIFICATE 1978320;
    

    Para comprobar la lista de certificados creados, ejecute la consulta siguiente:

    select * from PUBLIC"."CERTIFICATES"
    

    El certificado ahora está instalado correctamente. Para confirmar la instalación, puede ejecutar la consulta siguiente:

    select * from "PUBLIC"."PSE_CERTIFICATES"
    

Mapear al usuario

Para mapear al usuario, haga lo siguiente:

  1. En SAP HANA Studio, seleccione la carpeta Seguridad .

    Captura de pantalla de la estructura de carpetas de seguridad en el panel izquierdo.

  2. Expanda Usuarios y, a continuación, seleccione el usuario al que desea asignar el usuario de Power BI.

  3. Active la casilla SAML y, a continuación, seleccione Configurar, como se muestra en la siguiente imagen:

    Captura de pantalla del panel Parámetros de usuario para seleccionar la casilla SAML y el vínculo Configurar.

  4. Seleccione el proveedor de identidades que creó en la sección Crear asignación para el certificado del proveedor de identidades SAML. En Identidad externa, escriba el UPN del usuario de Power BI (normalmente, la dirección de correo electrónico que el usuario usa para iniciar sesión en Power BI) y, a continuación, seleccione Agregar.

    Captura de pantalla de la ventana Configurar identidades SAML externas.

    Si ha configurado la puerta de enlace para usar la opción de configuración ADUserNameReplacementProperty, introduzca el valor que reemplazará el UPN original del usuario de Power BI. Por ejemplo, si establece ADUserNameReplacementProperty en SAMAccountName, escriba el SAMAccountName del usuario.

Configuración de la puerta de enlace

Ahora que ha configurado el certificado y la identidad de la puerta de enlace, convierta el certificado en un formato de archivo PFX y, a continuación, configure la puerta de enlace para que use el certificado haciendo lo siguiente:

  1. Convierta el certificado en formato PFX ejecutando el siguiente comando. Este comando denomina al archivo resultante samlcert.pfx y establece la raíz como contraseña, como se muestra aquí:

    openssl pkcs12 -export -out samltest.pfx -in IdP_Cert.pem -inkey IdP_Key.pem -passin pass:root -passout pass:root
    
  2. Copie el archivo PFX en la máquina del portal de enlace

    a) Haga doble clic en samltest.pfx y, a continuación, seleccione Máquina> localSiguiente.

    b. Escriba la contraseña y, a continuación, seleccione Siguiente.

    c. Seleccione Colocar todos los certificados en el almacén siguiente y, a continuación, seleccione Examinar>Personal>Aceptar.

    Captura de pantalla de la opción Colocar todos los certificados en la siguiente opción de almacén en el Asistente para importación de certificados.

    d. Seleccione Siguiente y, a continuación, seleccione Finalizar.

  3. Para conceder a la cuenta de servicio de puerta de enlace acceso a la clave privada del certificado, haga lo siguiente:

    a) En la máquina de puerta de enlace, ejecute Microsoft Management Console (MMC).

    Captura de pantalla de la ventana Ejecutar en la máquina de pasarela para ejecutar Microsoft Management Console.

    b. En MMC, seleccione Agregar archivo>o quitar complemento.

    Captura de pantalla del comando Agregar o quitar complemento en Microsoft Management Console.

    c. Seleccione Agregar certificados> y, a continuación, seleccione Cuenta de equipo>.

    d. Seleccione Equipo local>Finalizar>aceptar.

    e. Expanda Certificados>Personales> y busque el certificado.

    f. Haga clic con el botón derecho en el certificado y, a continuación, seleccione Todas las tareas>Administrar claves privadas.

    Captura de pantalla del comando Administrar claves privadas.

    g. Agregue la cuenta de servicio de puerta de enlace a la lista. De forma predeterminada, la cuenta es NT SERVICE\PBIEgwService. Para averiguar qué cuenta ejecuta el servicio de puerta de enlace, ejecute services.msc y busque el servicio de puerta de enlace de datos local.

    Captura de pantalla de la lista del servicio de puerta de enlace de datos local.

Por último, agregue la huella digital del certificado a la configuración de la puerta de enlace:

  1. Para enumerar los certificados en la máquina, ejecute el siguiente comando de PowerShell:

    Get-ChildItem -path cert:\LocalMachine\My
    
  2. Copie la huella digital del certificado que creó.

  3. Vaya al directorio de puerta de enlace, que es C:\Archivos de programa\Puerta de enlace de datos local de forma predeterminada.

  4. Abra PowerBI.DataMovement.Pipeline.GatewayCore.dll.configy busque la sección SapHanaSAMLCertThumbprint . Pegue la huella digital que copió en el paso 2.

  5. Reinicie el servicio de puerta de enlace.

Ejecución de un informe de Power BI

Ahora puede usar la página Manage Gateway en Power BI para configurar el origen de datos de SAP HANA. En Configuración avanzada, habilite el inicio de sesión único a través de SAML. Al hacerlo, puede publicar informes y conjuntos de datos que se enlazan a ese origen de datos.

Captura de pantalla de la configuración avanzada con inicio de sesión único para SAML.

Nota:

SSO usa la autenticación de Windows; asegúrate de que la cuenta de Windows pueda acceder a la máquina de puerta de enlace. Si no está seguro, asegúrese de agregar NT-AUTHORITY\Usuarios autenticados (S-1-5-11) al grupo "Usuarios" de la máquina local.

Solución de problemas de uso de SAML para el inicio de sesión único en SAP HANA

En esta sección se proporcionan pasos extensos para solucionar problemas de uso de SAML para el inicio de sesión único en SAP HANA. El uso de estos pasos puede ayudarle a autodiagnóstico y corregir cualquier problema que pueda surgir.

Credenciales rechazadas

Después de configurar el inicio de sesión único basado en SAML, es posible que vea el siguiente error en el portal de Power BI: "Las credenciales proporcionadas no se pueden usar para el origen de SapHana". Este error indica que SAP HANA rechazó las credenciales de SAML.

Los seguimientos de autenticación del lado servidor proporcionan información detallada para solucionar problemas de credenciales en SAP HANA. Para configurar el seguimiento para el servidor de SAP HANA, haga lo siguiente:

  1. En el servidor de SAP HANA, active el seguimiento de autenticación ejecutando la consulta siguiente:

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') set ('trace', 'authentication') = 'debug' with reconfigure 
    
  2. Reproduzca el problema.

  3. En SAP HANA Studio, abra la consola de administración y seleccione la pestaña Archivos de diagnóstico .

  4. Abra el seguimiento del servidor de índices más reciente y busque SAMLAuthenticator.cpp.

    Debe encontrar un mensaje de error detallado que indique la causa principal, como se muestra en el ejemplo siguiente:

    [3957]{-1}[-1/-1] 2018-09-11 21:40:23.815797 d Authentication   SAMLAuthenticator.cpp(00091) : Element '{urn:oasis:names:tc:SAML:2.0:assertion}Assertion', attribute 'ID': '123123123123123' is not a valid value of the atomic type 'xs:ID'.
    [3957]{-1}[-1/-1] 2018-09-11 21:40:23.815914 i Authentication   SAMLAuthenticator.cpp(00403) : No valid SAML Assertion or SAML Protocol detected
    
  5. Una vez finalizada la solución de problemas, desactive el seguimiento de autenticación ejecutando la consulta siguiente:

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') UNSET ('trace', 'authentication');
    

Verificar y solucionar problemas de errores de puerta de enlace

Para seguir los procedimientos de esta sección, debe recopilar registros de puerta de enlace.

Error de SSL (certificado)

Síntomas de error

Este problema tiene varios síntomas. Al intentar agregar un nuevo origen de datos, es posible que vea un mensaje de error similar al siguiente:

Unable to connect: We encountered an error while trying to connect to . Details: "We could not register this data source for any gateway instances within this cluster. Please find more details below about specific errors for each gateway instance."

Al intentar crear o actualizar un informe, es posible que vea un mensaje de error como el de la imagen siguiente:

Captura de pantalla de la ventana no se puede cargar el modelo de solución de problemas de SSL.

Al investigar el Mashup[date]*.log, verá el siguiente mensaje de error:

A connection was successfully established with the server, but then an error occurred during the login process and the certificate chain was issued by an authority that is not trusted

Resolution

Para resolver este error SSL, vaya a la conexión del origen de datos y, a continuación, en la lista desplegable Validar certificado de servidor , seleccione No, como se muestra en la siguiente imagen:

Captura de pantalla que muestra el error SSL que se está resolviendo en el panel Configuración del origen de datos.

Después de seleccionar esta configuración, el mensaje de error ya no aparecerá.

Error de SignXML de pasarela

El error SignXML de puerta de enlace puede ser el resultado de una configuración incorrecta de SapHanaSAMLCertThumbprint o puede ser un problema con el servidor HANA. Las entradas de los registros de la puerta de enlace ayudan a identificar dónde reside el problema y a resolverlo.

Síntomas de error

Entradas de registro para SignXML: Found the cert...: si el archivo GatewayInfo[fecha].log contiene este error, se encontró el certificado SignXML y los esfuerzos de solución de problemas deben centrarse en los pasos que se encuentran en la sección "Comprobar y solucionar problemas del lado servidor de HANA".

Entradas de registro para Couldn't find saml cert: si el archivo GatewayInfo[date].log contiene este error, SapHanaSAMLCertThumbprint se establece incorrectamente. En la sección de resolución siguiente se describe cómo resolver el problema.

Resolution

Para establecer correctamente SapHanaSAMLCertThumbprint, siga las instrucciones de la sección "Configurar la puerta de enlace ". Las instrucciones comienzan con Por último, agregue la huella digital del certificado a la configuración de la puerta de enlace.

Después de cambiar el archivo de configuración, debe reiniciar el servicio de puerta de enlace para que el cambio surta efecto.

Validación

Cuando SapHanaSAMLCertThumbprint está configurado correctamente, los registros de puerta de enlace tendrán entradas que incluyan SignXML: Found the cert.... En este momento, debería poder continuar con la sección "Comprobar y solucionar problemas del lado servidor de HANA ".

Si la puerta de enlace no puede usar el certificado para firmar la aserción de SAML, es posible que vea un error en los registros similares a los siguientes:

GatewayPipelineErrorCode=DM_GWPipeline_UnknownError GatewayVersion= InnerType=CryptographicException InnerMessage=<pi>Signing key is not loaded.</pi> InnerToString=<pi>System.Security.Cryptography.CryptographicException: Signing key is not loaded.

Para resolver este error, siga las instrucciones que comienzan con el paso 3 en la sección "Configurar la puerta de enlace ".

Después de cambiar la configuración, reinicie el servicio de puerta de enlace para que el cambio surta efecto.

Comprobación y solución de problemas del lado servidor de HANA

Use las soluciones de esta sección si la puerta de enlace puede encontrar el certificado y firmar la aserción de SAML, pero sigue experimentando errores. Deberá recopilar rastros de autenticación de HANA, como se describió anteriormente en la sección "Credenciales rechazadas".

Proveedor de identidades de SAML

La presencia de la Found SAML provider cadena en los seguimientos de autenticación de HANA indica que el proveedor de identidades de SAML está configurado correctamente. Si la cadena no está presente, la configuración es incorrecta.

Resolution

En primer lugar, determine si su organización usa OpenSSL o commoncrypto como sslcryptoprovider. Para determinar qué proveedor se usa, haga lo siguiente:

  1. Abra SAP HANA Studio.

  2. Abra la Consola de Administración para el tenant que estás usando.

  3. Seleccione la pestaña Configuración y use sslcryptoprovider como filtro, como se muestra en la siguiente imagen:

    Captura de pantalla de la información de sslcryptoprovider en SAP HANA Studio.

A continuación, compruebe que la biblioteca criptográfica está configurada correctamente haciendo lo siguiente:

  1. Vaya a Consola de seguridad en SAP HANA Studio; para ello, seleccione la pestaña Proveedores de identidades de SAML y haga lo siguiente:

    • Si sslcryptoprovider es OpenSSL, seleccione Biblioteca criptográfica de OpenSSL.
    • Si sslcryptoprovider es commonCrypto, seleccione Biblioteca criptográfica de SAP.

    En la imagen siguiente, se selecciona la biblioteca criptográfica de SAP :

    Captura de pantalla de SAP HANA Studio con la biblioteca criptográfica de SAP seleccionada como sslcryptoprovider.

  2. Implemente los cambios seleccionando el botón Implementar en la esquina superior derecha, como se muestra en la siguiente imagen:

    Captura de pantalla del botón Implementar para implementar los cambios de la solución.

Validación

Cuando los seguimientos estén configurados correctamente, notificarán Found SAML provider y no notificarán SAML Provider not found. Puede continuar con la sección siguiente, "Solución de problemas de la firma de aserción de SAML".

Si se establece el proveedor de servicios criptográficos, pero SAML Provider not found se sigue notificando, busque una cadena en el seguimiento que comience con el texto siguiente:

Search SAML provider for certificate with subject =

En esa cadena, asegúrese de que el asunto y el emisor sean exactamente los mismos tal como se muestra en la pestaña Proveedor de identidades de SAML de la Consola de Seguridad. Una diferencia de incluso un solo carácter puede causar el problema. Si encuentra una diferencia, puede corregir el problema en la biblioteca criptográfica de SAP para que las entradas coincidan exactamente.

Si cambiar la biblioteca criptográfica de SAP no corrige el problema, puede editar manualmente los campos Emitido a y Emitidos por simplemente haciendo doble clic en ellos.

Resolver problemas de la firma de aserción de SAML

Es posible que encuentre seguimientos de autenticación de HANA que contengan entradas similares a las siguientes:

[48163]{-1}[-1/-1] 2020-09-11 21:15:18.896165 i Authentication SAMLAuthenticator.cpp(00398) : Unable to verify XML signature [48163]{-1}[-1/-1] 2020-09-11 21:15:18.896168 i Authentication MethodSAML.cpp(00103) : unsuccessful login attempt with SAML ticket!

La presencia de estas entradas significa que la firma no es de confianza.

Resolution

Si usa OpenSSL como sslcryptoprovider, compruebe si los archivos trust.pem y key.pem están en el directorio SSL. Para obtener más información, consulte el blog de SAP Protección de la comunicación entre SAP HANA Studio y SAP HANA Server a través de SSL.

Si está utilizando commoncrypto como su proveedor de cifrado SSL, compruebe si hay una colección con su certificado en la entidad.

Validación

Cuando los rastros estén configurados correctamente, notificarán Found valid XML signature.

Solución de problemas de asignación de UPN

Es posible que encuentre trazas de HANA que contengan entradas similares a las siguientes:

SAMLAuthenticator.cpp(00886) : Assertion Subject NameID: `[email protected]` SAMLAuthenticator.cpp(00398) : Database user does not exist

El error indica que nameId [email protected] se encuentra en las aserciones de SAML, pero no existe o no se asigna correctamente en hanA Server.

Resolution

Vaya al usuario de la base de datos de HANA y, en la casilla SAML seleccionada, seleccione el vínculo Configurar . Aparece la ventana siguiente:

Captura de pantalla que muestra que se muestra el nombre de usuario incorrecto.

Como se describe en el mensaje de error, HANA estaba intentando encontrar [email protected], pero la identidad externa solo se muestra como johnny. Estos dos valores deben coincidir. Para resolver el problema, en Identidad externa, cambie el valor a [email protected]. Tenga en cuenta que este valor distingue mayúsculas de minúsculas.

Para obtener más información sobre la puerta de enlace de datos local y DirectQuery, consulte los siguientes recursos: