Del via


Bygge inn en rapport med en Azure Analysis Services (AAS)-database

GJELDER FOR: Appen eier data Brukeren eier data

Denne artikkelen forklarer hvordan du bygger inn en Power BI-rapport som bruker data som er lagret i Azure Analysis Services (AAS), i en innebygging for kundenes scenario. Denne artikkelen er rettet mot uavhengige programvareutviklere (ISV-er), som ønsker å bygge inn en rapport med AAS-data om databasen implementerer sikkerhet på radnivå (RLS).

Forutsetning

Du trenger en rapport med en live-tilkobling til AAS-database, med eller uten RLS.

Dynamisk sikkerhet – RLS

Hvis du vil at rapporten skal implementere dynamisk RLS, bruker customeData du funksjonen. Siden du ikke kan overstyre den effektive identiteten, anbefaler vi at du oppretter nye roller med customData. Du kan også bruke roller som har username eller userPrincipalName funksjoner, hvis du erstatter dem med customData.

Følg disse trinnene for å opprette en ny rolle og legge til customData funksjonen i rollen.

  1. Opprett en rolle på Analysis Services-serveren.

    Et skjermbilde av hvordan du oppretter en ny rolle i Analysis Services-serveren.

  2. Angi et rollenavn i generelle innstillinger, og angi databasetillatelsene til Skrivebeskyttet.

    Et skjermbilde av å gi en ny rolle et nytt navn og sette den til skrivebeskyttet, i de generelle innstillingene i Analysis Services-serveren.

  1. Legg til brukerne som skal kalle innebyggingstokenet i medlemskapsinnstillingene. Generer token-API-en. Hvis du bruker en tjenestekontohaver som ikke er administrator, kan du også legge til dette.

    Et skjermbilde av å legge til brukere i en ny rolle i Analysis Services-serveren.

  2. Angi DAX-spørringen ved hjelp av CUSTOMDATA() funksjonen i radfiltreinnstillingene.

    Et skjermbilde som viser hvordan du legger til funksjonen customData i DAX-spørringen i en ny rolle i Analysis Services-serveren.

Tjenestekontohaver

Hvis du bruker en tjenestekontohaver til å bygge inn rapporten, må du kontrollere at tjenestekontohaveren er serveradministrator eller rollemedlem i AAS. Hvis du vil gi AAS-administratortillatelser til tjenestekontohaveren, kan du se Legge til en tjenestekontohaver i serveradministratorrollen. Hvis du vil legge til tjenestekontohaveren som et rollemedlem, går du til medlemskapsinnstillingene.

Bruk objekt-ID-en for tjenestekontohaver som brukernavn (effektiv identitet).

Analysis Service-overføring

Du kan overføre fra AAS til Power BI Premium selv om du har en innebygd AAS-rapport. Den innebygde rapporten brytes ikke under overføringen, så lenge hovedstolen som kaller innebyggingstokenet – Generer token-API - er medlem eller administrator for arbeidsområdet.

Merk

Hvis tjenestekontohaveren ikke er administrator, og du ikke vil gjøre den til administrator for arbeidsområdet når du overfører, kan du overføre denne modellen til et eget arbeidsområde der du kan gi den administratortillatelser.

Generer et innebyggingstoken

Bruk API-en Generer token til å generere et innebyggingstoken som overstyrer den effektive identiteten.

Informasjonen som kreves for å generere et innebyggingstoken, avhenger av hvordan du er koblet til Power BI (tjenestekontohaver eller hovedbruker), og også om databasen har RLS.

Hvis du vil generere et innebyggingstoken, kan du oppgi følgende informasjon:

  • Brukernavn (valgfritt hvis ingen RLS. Obligatorisk for RLS) – brukernavnet må være det samme som API-anroperen (i dette tilfellet hovedbrukerens UPN). Hvis databasen ikke bruker RLS, og ingen brukernavn er angitt, brukes legitimasjonen til hovedbrukeren.
  • Rolle (obligatorisk for RLS) – Rapporten viser bare data hvis den effektive identiteten er medlem av rollen.

Eksempel:

Definer brukeridentiteten og rollene for ett av følgende tre scenarioer:

  • Hvis RLS ikke er implementert:

Det er ikke nødvendig å definere noen effektiv identitet.

  • Hvis du bruker statisk RLS:

        var rlsidentity = new EffectiveIdentity(  //If static RLS
           username: "username@contoso.com", 
           roles: new List<string>{ "MyRole" },
           datasets: new List<string>{ datasetId.ToString()}
        )
    
  • Hvis du bruker dynamisk RLS:

        var rlsidentity = new EffectiveIdentity(  // If dynamic RLS
           username: "username@contoso.com",
           roles: new List<string>{ "MyRoleWithCustomData" },
           customData: "SalesPersonA"
           datasets: new List<string>{ datasetId.ToString()}
        )
    

    Merk

    customData i innebyggingstokenet kan ikke være større enn 1024 tegn.

Bruk den effektive identiteten til å generere et innebyggingstoken:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();
    // 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 } // Only in cases of RLS
    );
    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
    return embedToken;
}

Bruk innebyggingstokenet til å bygge inn rapporten i appen eller nettstedet. Rapporten filtrerer data i henhold til den brukte RLS i rapporten.