Compartir vía


Inserción de un informe en una instancia local de SQL Server Analysis Services (SSAS)

SE APLICA A: La aplicación es la propietaria de los datos El usuario es el propietario de los datos

En este artículo, se explica cómo insertar contenido de Power BI con una conexión dinámica del modelo tabular de Analysis Serviceslocal en una aplicación de Power BI estándar propietaria de la aplicación de datos. Este artículo se aplica a todos los modelos de SSAS de conexión dinámica tanto si implementan RLS como si no.

En este escenario, la base de datos se encuentra en el modelo SSAS (local) y el motor de Power BI se conecta a ella a través de una puerta de enlace. Los roles de seguridad (RLS) y los permisos, si hay alguno, se definen en el modelo de SSAS y no en Power BI Desktop.

A quién va dirigido este artículo

Este artículo es principalmente relevante para los ISV que ya tienen una configuración de base de datos local (SSAS) (con o sin RLS) y quieren insertar contenido directamente desde allí.

Configuración de ISV

La seguridad de nivel de fila local solo está disponible con una conexión dinámica, pero puede crear una conexión dinámica a cualquier base de datos, tanto si implementa RLS como si no. Esto incluye:

  • Bases de datos sin roles RLS configurados
  • Bases de datos con miembros que pertenecen a uno o varios roles
  • Bases de datos con roles de seguridad estáticos o dinámicos

Para insertar un informe desde un modelo de SSAS, debe realizar las siguientes acciones:

  1. Configuración de la puerta de enlace
  2. Creación de una conexión dinámica
  3. Generación de un token de inserción

Configuración de la puerta de enlace

Adición de una conexión de origen de datos a la puerta de enlace de SSAS

Escriba el nombre del origen de datos, el tipo de origen de datos, el servidor, la base de datos, un nombre de usuario y una contraseña que reconozca el directorio activo.

Para obtener más información sobre cómo crear y administrar una puerta de enlace, consulte Adición o eliminación de un origen de datos de puerta de enlace.

Concesión de permisos a usuario maestro o entidad de servicio en la puerta de enlace

El usuario que genera el token de inserción también necesita uno de los siguientes permisos:

  • Permisos de administrador de puerta de enlace

  • Permiso de suplantación de origen de datos (ReadOverrideEffectiveIdentity)

    Los usuarios con permiso de suplantación (invalidación) tienen un icono de llave junto a su nombre.

    Screenshot of a gateway member with a key icon next to their name.

Siga estas instrucciones para conceder permisos de puerta de enlace al usuario maestro, la entidad de servicio o el perfil de entidad de servicio.

Asignación de nombres de usuario

Si los nombres de usuario del directorio local y del directorio de Microsoft Entra son diferentes y desea ver los datos en el portal, tendrá que crear una tabla de asignación de usuarios que asigne cada usuario o rol de Microsoft Entra ID a los usuarios de la base de datos local. Para obtener instrucciones sobre cómo asignar nombres de usuario, vaya a Reasignación manual de nombres de usuario.

Para obtener más información, consulte Asignación de nombres de usuario a orígenes de datos de Analysis Services.

Creación de una conexión dinámica

Una vez configurado el entorno, cree una conexión dinámica entre Power BI Desktop y SQL Server y cree el informe.

  1. Inicie Power BI Desktop y seleccione Obtener datos>Base de datos.

  2. En la lista de orígenes de datos, seleccione Base de datos de SQL Server Analysis Services y seleccione Conectar.

    Connect to SQL Server Analysis Services Database.

  3. Rellene los detalles de la instancia tabular de Analysis Services y seleccione Conectar en directo. A continuación, seleccione Aceptar.

    Screenshot of Analysis Services details.

Generación de un token de inserción

Para insertar el informe en el escenario de inserción para sus clientes, genere un token de inserción que pase la identidad efectiva a Power BI. Todas las conexiones dinámicas a los motores de AS necesitan una identidad eficaz aunque no haya ninguna implementación de RLS.

Si no hay ninguna configuración de RLS, solo el administración tendrá acceso a la base de datos, por lo que le interesará usar el administrador como identidad efectiva.

La información necesaria para generar un token de inserción depende de si está conectado a Power BI mediante una entidad de servicio o como usuario maestro, y también si la base de datos tiene RLS.

Para generar el token de inserción, proporcione la siguiente información:

  • Nombre de usuario (opcional si no hay RLS; obligatorio para RLS): un nombre de usuario válido reconocido por el SSAS que se usará como identidad efectiva. Si la base de datos no usa RLS y no se proporciona ningún nombre de usuario, se usarán las credenciales del usuario maestro.
  • Rol (necesario para RLS): el informe solo mostrará datos si la identidad efectiva es miembro del rol.

Ejemplo:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();

    // Define the user identity and roles. Use one of the following:

    var rlsidentity = new EffectiveIdentity(  //If no RLS
       username: "Domain\\Username", // can also be username@contoso.com
       datasets: new List<string>{ datasetId.ToString()}
    )

    var rlsidentity = new EffectiveIdentity(  // If RLS
       username: "username@contoso.com",
       roles: new List<string>{ "MyRole" },
       datasets: new List<string>{ datasetId.ToString()}
    )
    
    // Create a request for getting an embed token for the rls identity defined above
    var tokenRequest = new GenerateTokenRequestV2(
        reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
        datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
        targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
        identities: new List<EffectiveIdentity> { rlsIdentity }
    );

    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

    return embedToken;
}

Ahora puede insertar su informe en la aplicación y este filtrará los datos según los permisos del usuario que acceda al informe.

Consideraciones y limitaciones

No se admite CustomData.

Generación de un token de inserción