Uso del Lenguaje de marcado de aserción de seguridad para el SSO desde Power BI en orígenes de datos locales
Al habilitar el inicio de sesión único (SSO), puede facilitar que los informes y paneles de Power BI actualicen los datos de los orígenes locales, a la vez que se respetan los permisos de nivel de usuario configurados en dichos orígenes. Para habilitar la conectividad de SSO directa, use Lenguaje de marcado de aserción de seguridad (SAML).
Nota
Solo puede conectarse a un origen de datos mediante SAML de inicio de sesión único con una puerta de enlace de datos local. Para conectarse a un origen de datos adicional mediante SAML de inicio de sesión único, debe usar una puerta de enlace de datos local diferente.
Orígenes de datos compatibles con SAML
Microsoft admite actualmente SAP HANA con SAML. Para más información acerca de cómo instalar y configurar el inicio de sesión único para SAP HANA con SAML, consulte SSO de SAML para la plataforma de BI a 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 de inicio de sesión único (SSO) con SAML. Para habilitar el cifrado, configure el servidor de HANA para que acepte las conexiones cifradas y, después, configure la puerta de enlace para que use el cifrado para comunicarse con el servidor de HANA. Como 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 intercepción y reutilización por parte de terceros.
Importante
Como SAP ya no admite OpenSSL, Microsoft también ha interrumpido su soporte técnico. Las conexiones existentes siguen funcionando pero ya no puede crear conexiones. En su lugar, use la biblioteca criptográfica de SAP (CommonCryptoLib) o sapcrypto.
Configuración del origen de datos y la puerta de enlace
Para usar SAML, debe establecer una relación de confianza entre los servidores de HANA para los que quiere habilitar el inicio de sesión único y la puerta de enlace, En este escenario, la puerta de enlace actúa como proveedor de identidades de SAML (IdP). Puede establecer esta relación de varias maneras. SAP recomienda usar CommonCryptoLib para completar los pasos de configuració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 de la puerta de enlace mediante la firma del certificado X509 del IdP de la puerta de enlace con una entidad de certificado raíz de confianza para el servidor de HANA.
Para crear los certificados, haga lo siguiente:
En el dispositivo que está ejecutando SAP HANA, cree una carpeta vacía para almacenar los certificados y, después, vaya a esa carpeta.
Ejecute el comando siguiente para crear los certificados raíz:
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 con el fin de firmar otros certificados. Debería ver que se están creando los archivos CA_Cert.pem y CA_Key.pem.
Ejecute el comando siguiente para crear los certificados de IdP:
openssl req -newkey rsa:2048 -days 365 -sha256 -keyout IdP_Key.pem -out IdP_Req.pem -nodes
Debería ver que se están creando los archivos IdP_Key.pem y IdP_Req.pem.
Firme los certificados de 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 que se están creando los archivos CA_Cert.srl y IdP_Cert.pem. En este punto, solo debe centrarse en el archivo IdP_Cert.pem.
Creación de la asignación del certificado de proveedor de identidades de SAML
Para crear la asignación del certificado de proveedor de identidades de SAML, haga lo siguiente:
En SAP HANA Studio, haga clic con el botón derecho en el nombre del servidor de SAP HANA y, después, seleccione Security>Open Security Console>SAML Identity Provider (Seguridad > Abrir consola de seguridad > Proveedor de identidades de SAML).
Seleccione la opción Biblioteca criptográfica de SAP. No use la opción Biblioteca criptográfica de OpenSSL, que está en desuso en SAP.
Para importar el certificado firmado IdP_Cert.pem, seleccione el botón azul Importar, que se muestra en la imagen siguiente:
No olvide asignar un nombre al 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:
En SAP HANA Studio, ejecute la siguiente consulta:
CREATE CERTIFICATE FROM '<idp_cert_pem_certificate_content>'
Veamos un ejemplo:
CREATE CERTIFICATE FROM '-----BEGIN CERTIFICATE----- MIIDyDCCArCgA...veryLongString...0WkC5deeawTyMje6 -----END CERTIFICATE----- '
Si no hay ningún entorno de seguridad personal (PSE) específico de SAML, cree uno ejecutando la siguiente consulta en SAP HANA Studio:
CREATE PSE SAMLCOLLECTION; set pse SAMLCOLLECTION purpose SAML;
Agregue el certificado firmado recién creado a PSE con la ejecución del siguiente comando:
alter pse SAMLCOLLECTION add CERTIFICATE <certificate_id>;
Por ejemplo:
alter pse SAMLCOLLECTION add CERTIFICATE 1978320;
Puede comprobar la lista de certificados creados con la ejecución de la consulta siguiente:
select * from PUBLIC"."CERTIFICATES"
El certificado se ha instalado correctamente. Para confirmar la instalación, puede ejecutar la consulta siguiente:
select * from "PUBLIC"."PSE_CERTIFICATES"
Asignación del usuario
Para asignar el usuario, haga lo siguiente:
En SAP HANA Studio, seleccione la carpeta Seguridad.
Expanda Usuarios y seleccione el usuario al que quiere asignar su usuario de Power BI.
Active la casilla SAML y, después, seleccione la opción Configurar, como se muestra en la imagen siguiente:
Seleccione el proveedor de identidades que ha creado en la sección Creación de la asignación del certificado de proveedor de identidades SAML. En Identidad externa, escriba el UPN del usuario de Power BI (normalmente, la dirección de correo electrónico con la que el usuario inicia sesión en Power BI) y luego seleccione Agregar.
Si ha configurado la puerta de enlace para que use la opción de configuración ADUserNameReplacementProperty, deberá escribir el valor que reemplazará el UPN original del usuario de Power BI. Por ejemplo, si ha establecido ADUserNameReplacementProperty en SAMAccountName, escriba el valor 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 a un formato de archivo PFX y, después, configure la puerta de enlace para usarlo con los pasos siguientes:
Para convertir el certificado al formato PFX, ejecute el comando siguiente. Este comando asigna el nombre samlcert.pfx al archivo resultante y establece root como contraseña, según se muestra a continuación:
openssl pkcs12 -export -out samltest.pfx -in IdP_Cert.pem -inkey IdP_Key.pem -passin pass:root -passout pass:root
Copie el archivo PFX en el equipo de puerta de enlace:
a. Haga doble clic en samltest.pfx y, después, seleccione Equipo local>Siguiente.
b. Escriba la contraseña y, a continuación, seleccione Siguiente.
c. Seleccione Colocar todos los certificados en el siguiente almacén y, después, Examinar>Personal>Aceptar.
d. Haga clic en Siguiente y después en Finalizar.
Para conceder a la cuenta de servicio de la puerta de enlace acceso a la clave privada del certificado, siga estos pasos:
a. En el equipo de puerta de enlace, ejecute Microsoft Management Console (MMC).
b. En MMC, seleccione Archivo>Agregar o quitar complemento.
c. Seleccione Certificados>Agregar y, después, seleccione Cuenta de equipo>Siguiente.
d. Seleccione Equipo local>Finalizar>Aceptar.
e. Expanda Certificados>Personal>Certificados y, después, busque el certificado.
f. Haga clic con el botón derecho en el certificado y, después, seleccione Todas las tareas>Administrar claves privadas.
g. Agregue la cuenta de servicio de la puerta de enlace a la lista. De forma predeterminada, la cuenta es NT SERVICE\PBIEgwService. Puede averiguar qué cuenta ejecuta el servicio de puerta de enlace si ejecuta services.msc y, después, busca el 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:
Para enumerar los certificados en la máquina, ejecute el siguiente comando de PowerShell:
Get-ChildItem -path cert:\LocalMachine\My
Copie la huella digital del certificado que ha creado.
Vaya al directorio de la puerta de enlace, que de manera predeterminada es C:\Archivos de programa\Puerta de enlace de datos local.
Abra PowerBI.DataMovement.Pipeline.GatewayCore.dll.config y, después, busque la sección SapHanaSAMLCertThumbprint. Pegue la huella digital que copió en el paso 2.
Reinicie el servicio de puerta de enlace.
Ejecutar un informe de Power BI
Ahora puede usar la página Administrar puertas de enlace de Power BI para configurar el origen de datos de SAP HANA y habilitar el inicio de sesión único en Configuración avanzada. De esta forma, puede publicar los enlaces de los conjuntos de datos y los informes a dicho origen de datos.
Nota:
SSO usa la autenticación de Windows para asegurarse de que la cuenta de Windows puede acceder a la máquina de la puerta de enlace. Si no lo tiene claro, 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 los pasos completos para solucionar problemas de uso de SAML para el inicio de sesión único en SAP HANA. Estos pasos pueden ayudarlo a diagnosticar y corregir cualquier problemas que pueda tener.
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: "No se puede usar las credenciales proporcionadas para el origen 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 su servidor de SAP HANA, haga lo siguiente:
En el servidor de SAP HANA, ejecute la siguiente consulta para activar el seguimiento de la autenticación:
ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') set ('trace', 'authentication') = 'debug' with reconfigure
Reproduzca el problema.
En SAP HANA Studio, abra la consola de administración y, después, seleccione la pestaña Diagnosis Files (Archivos de diagnóstico).
Abra el último seguimiento del servidor de indexación y busque SAMLAuthenticator.cpp.
Debería encontrar un mensaje de error en el que se indica la causa raíz, como se muestra en el siguiente ejemplo:
[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
Una vez completada la solución de problemas, ejecute la siguiente consulta para desactivar el seguimiento de la autenticación:
ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') UNSET ('trace', 'authentication');
Comprobación y solución de problemas de errores de la puerta de enlace
Para seguir los procedimientos de esta sección, deberá recopilar registros de la puerta de enlace.
Error de SSL (certificado)
Síntomas del error
Este problema tiene varios síntomas. Al intentar agregar un origen de datos nuevo, podría ver 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 siguiente imagen:
Al investigar el archivo Mashup[fecha]*.log, verá el mensaje de error siguiente:
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
Resolución
Para resolver este error de SSL, vaya a la conexión de origen de datos y, después, en la lista desplegable Validar certificado de servidor, seleccione No, como se muestra en la imagen siguiente:
Una vez seleccionada esta configuración, el mensaje de error ya no aparecerá.
Error de SignXML de puerta de enlace
El error SignXML de la puerta de enlace puede ser el resultado de una configuración incorrecta con SapHanaSAMLCertThumbprint, o bien puede ser un problema con el servidor de HANA. Las entradas de los registros de puerta de enlace ayudan a identificar dónde reside el problema y cómo resolverlo.
Síntomas del error
Entradas de registro para SignXML: Found the cert...
: si el archivo GatewayInfo[fecha].log contiene este error, se encontró el certificado SignXML y debe centrar la solución de problemas en los pasos que se encuentran en la sección "Comprobación y solución de problemas del servidor de HANA".
Entradas de registro para Couldn't find saml cert
: si el archivo GatewayInfo[fecha].log contiene este error, SapHanaSAMLCertThumbprint no se estableció correctamente. En la sección de resolución siguiente se describe cómo solucionar el problema.
Resolución
Para establecer correctamente SapHanaSAMLCertThumbprint, siga las instrucciones de la sección "Configurar la puerta de enlace". Las instrucciones comienzan en Por último, agregue la huella digital del certificado a la configuración de la puerta de enlace.
Una vez modificado el archivo de configuración, reinicie el servicio de puerta de enlace para que el cambio surta efecto.
Validación
Cuando SapHanaSAMLCertThumbprint se estableció correctamente, los registros de puerta de enlace tendrán entradas que incluyen SignXML: Found the cert...
. En este punto, debería poder continuar con la sección "Comprobación y solución de problemas del servidor de HANA".
Si la puerta de enlace no puede usar el certificado para firmar la aserción de SAML, es posible que vea en los registros un error similar al siguiente:
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 de la sección "Configurar la puerta de enlace".
Una vez modificado el archivo de configuración, reinicie el servicio de puerta de enlace para que el cambio surta efecto.
Comprobación y solución de problemas del 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 seguimientos de autenticación de HANA, como se describió anteriormente en la sección "Credenciales rechazadas".
El proveedor de identidades de SAML
La presencia de la cadena Found SAML provider
en los seguimientos de autenticación de HANA indica que el proveedor de identidades de SAML está configurado correctamente. Si la cadena no está, la configuración no es correcta.
Resolución
En primer lugar, determine si la organización usa OpenSSL o commoncrypto como el proveedor de cifrado SSL. Para determinar qué proveedor se utiliza, haga lo siguiente:
Abra SAP HANA Studio.
Abra la consola de administración del inquilino que se está usando.
Seleccione la pestaña Configuración y use sslcryptoprovider como filtro, tal como se muestra en la imagen siguiente:
A continuación, compruebe que la biblioteca criptográfica está configurada correctamente; para ello, siga estos pasos:
Vaya a la consola de seguridad de SAP HANA Studio; para ello, seleccione Proveedores de identidades de SAML y realice una de las acciones siguientes:
- Si el valor de sslcryptoprovider es OpenSSL, seleccione Biblioteca criptográfica de OpenSSL.
- Si el valor de sslcryptoprovider es commonCrypto, seleccione Biblioteca criptográfica de SAP.
En la imagen siguiente, está selecciona la opción Biblioteca criptográfica de SAP:
Implemente los cambios; para ello, seleccione el botón Implementar en la esquina superior derecha, como se muestra en la siguiente imagen:
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 el proveedor de servicios criptográficos está establecido pero se sigue informando el error SAML Provider not found
, busque una cadena en el seguimiento que comience con el siguiente texto:
Search SAML provider for certificate with subject =
En esa cadena, asegúrese de que el firmante y el emisor son exactamente iguales a los que se muestran en la pestaña de proveedor de identidades de SAML en la consola de seguridad. Una diferencia de un solo carácter puede generar el problema. Si encuentra alguna 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 Emitido por haciendo doble clic en ellos.
Solución de problemas en la firma de aserción de SAML
Puede encontrar seguimientos de autenticación de HANA que contienen 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!
Si dichas entradas están presentes, significa que la firma no es de confianza.
Resolución
Si usa OpenSSL como sslcryptoprovider, compruebe si los archivos trust.pem y key.pem están en el directorio de SSL. Para obtener más información, consulte el blog de SAP sobre la protección de la comunicación entre SAP HANA Studio y SAP HANA Server a través de SSL.
Si usa commoncrypto como sslcryptoprovider, compruebe si hay una colección con el certificado en el inquilino.
Validación
Cuando los seguimientos están configurados correctamente, notificarán Found valid XML signature
.
Solución de problemas en la asignación de UPN
Puede encontrar seguimientos de HANA que contienen entradas similares a las siguientes:
SAMLAuthenticator.cpp(00886) : Assertion Subject NameID: `johnny@contoso.com` SAMLAuthenticator.cpp(00398) : Database user does not exist
El error indica que nameId johnny@contoso.com
se encuentra en las aserciones de SAML, pero no existe o no está asignado correctamente en el servidor de HANA.
Resolución
Vaya al usuario de la base de datos de HANA y, en la casilla SAML marcada, seleccione el vínculo Configurar. Aparecerá la ventana siguiente:
Como se describe en el mensaje de error, HANA intentaba encontrar johnny@contoso.com, pero la identidad externa solo se muestra como johnny. Estos dos valores deben coincidir. Para resolver el problema, en Identidad externa, cambie el valor por johnny@contoso.com. Tenga en cuenta que este valor distingue mayúsculas de minúsculas.
Contenido relacionado
Para más información sobre la puerta de enlace de datos local y DirectQuery, consulte los recursos siguientes: