Een rapport insluiten in een on-premises SQL Server Analysis Services (SSAS)

VAN TOEPASSING OP: App is eigenaar van gegevens die gebruiker eigenaar is van gegevens

In dit artikel wordt uitgelegd hoe u Power BI-inhoud insluit met een liveverbinding van een on-premisesTabellair Model van Analysis Services in een standaard Power BI-app die eigenaar is van de gegevenstoepassing. Dit artikel is van toepassing op alle SSAS-modellen voor liveverbindingen, ongeacht of ze RLS implementeren.

In dit scenario bevindt de database zich in het SSAS-model (on-premises) en maakt de Power BI-engine er verbinding mee via een gateway. De beveiligingsrollen (RLS) en machtigingen, indien aanwezig, worden gedefinieerd in het SSAS-model en niet in Power BI Desktop.

Wie dit artikel is bedoeld voor

Dit artikel is voornamelijk relevant voor ISV's die al een on-premises database (SSAS) hebben ingesteld (met of zonder RLS) en inhoud rechtstreeks van daaruit willen insluiten.

ISV-installatie

Beveiliging op on-premises rijniveau is alleen beschikbaar met een liveverbinding, maar u kunt een liveverbinding maken met elke database, ongeacht of er beveiliging op rijniveau wordt geïmplementeerd. Dit zijn onder andere de nieuwe mogelijkheden:

  • Databases zonder RLS-rollen ingesteld
  • Databases met leden die tot een of meer rollen behoren
  • Databases met statische of dynamische beveiligingsrollen

Als u een rapport wilt insluiten vanuit een SSAS-model, moet u de volgende acties uitvoeren:

  1. De gateway instellen
  2. Een liveverbinding maken
  3. Een insluittoken genereren

De gateway instellen

Een gegevensbronverbinding toevoegen aan de SSAS-gateway

Voer de naam van de gegevensbron, het gegevensbrontype, de server, de database, een gebruikersnaam en wachtwoord in die door de Active Directory worden herkend.

Zie Een gatewaygegevensbron toevoegen of verwijderen voor meer informatie over het maken en beheren van een gateway.

Geef service-principal- of hoofdgebruikersmachtigingen op de gateway

De gebruiker die het insluittoken genereert, heeft ook een van de volgende machtigingen nodig:

  • Gatewaybeheerdersmachtigingen

  • Machtiging voor gegevensbron-imitatie (ReadOverrideEffectiveIdentity)

    Gebruikers met een machtiging voor imitatie (onderdrukking) hebben een sleutelpictogram naast hun naam.

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

Volg deze instructies om gatewaymachtigingen te verlenen aan uw hoofdgebruiker, service-principal of service-principalprofiel.

Gebruikersnamen toewijzen

Als de gebruikersnamen in de on-premises directory en de Microsoft Entra-map verschillen en u gegevens wilt weergeven in de portal, moet u een gebruikerstoewijzingstabel maken waarmee elke gebruiker of rol in Microsoft Entra-id wordt toegewezen aan gebruikers uit de on-premises database. Voor instructies voor het toewijzen van gebruikersnamen gaat u naar Handmatig opnieuw toewijzen van gebruikersnaam

Zie Gebruikersnamen toewijzen voor Analysis Services-gegevensbronnen voor meer informatie.

Een liveverbinding maken

Zodra de omgeving is ingesteld, maakt u een liveverbinding tussen Power BI Desktop en de SQL-server en maakt u uw rapport.

  1. Start Power BI Desktop en selecteer Gegevensdatabase> ophalen.

  2. Selecteer in de lijst met gegevensbronnen de SQL Server Analysis Services-database en selecteer Verbinding maken.

    Connect to SQL Server Analysis Services Database.

  3. Vul de details van uw tabellaire Analysis Services-exemplaar in en selecteer Verbinding maken live. Selecteer vervolgens OK.

    Screenshot of Analysis Services details.

Een insluittoken genereren

Als u uw rapport wilt insluiten in het scenario voor het insluiten van uw klanten , genereert u een insluittoken dat de effectieve identiteit doorgeeft aan Power BI. Alle liveverbindingen met AS-engines hebben een effectieve identiteit nodig, zelfs als er geen RLS is geïmplementeerd.

Als er geen beveiliging op rijniveau is ingesteld, heeft alleen de Beheer toegang tot de database, zodat u de Beheer als effectieve identiteit wilt gebruiken.

De informatie die nodig is om een insluittoken te genereren, is afhankelijk van of u bent verbonden met Power BI met behulp van een service-principal of als hoofdgebruiker, en ook als de database RLS heeft.

Geef de volgende informatie op om het insluittoken te genereren:

  • Gebruikersnaam (optioneel als er geen RLS is. Vereist voor beveiliging op rijniveau: een geldige gebruikersnaam die wordt herkend door de SSAS die wordt gebruikt als de effectieve identiteit. Als de database geen RLS gebruikt en er geen gebruikersnaam is opgegeven, worden de referenties van de hoofdgebruiker gebruikt.
  • Rol (vereist voor beveiliging op rijniveau): in het rapport worden alleen gegevens weergegeven als de effectieve identiteit lid is van de rol.

Voorbeeld:

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;
}

U kunt uw rapport nu insluiten in uw app en uw rapport filtert gegevens op basis van de machtigingen van de gebruiker die het rapport opent.

Overwegingen en beperkingen

CustomData wordt niet ondersteund.

Een insluittoken genereren