Share via


Integrer en rapport med en AAS-database (Azure Analysis Services)

GÆLDER FOR: Appen ejer data Brugeren ejer data

I denne artikel forklares det, hvordan du integrerer en Power BI-rapport, der bruger data, der er gemt i Azure Analysis Services (AAS) i et scenarie med integrering for dine kunder . Denne artikel henvender sig til uafhængige softwareudviklere (ISV'er), der ønsker at integrere en rapport med AAS-data, uanset om databasen implementerer sikkerhed på rækkeniveau eller ej.

Forudsætninger

Du skal bruge en rapport med en direkte forbindelse til AAS-databasen med eller uden sikkerhed på rækkeniveau.

Dynamisk sikkerhed – sikkerhed på rækkeniveau

Hvis rapporten skal implementere dynamisk sikkerhed på rækkeniveau, skal du bruge funktionen customeData . Da du ikke kan tilsidesætte den effektive identitet, anbefaler vi, at du opretter nye roller med customData. Du kan også bruge roller, der har username funktionerne eller userPrincipalName , hvis du erstatter dem med customData.

Følg disse trin for at oprette en ny rolle og føje funktionen customData til rollen.

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

    A screenshot of creating a new role in Analysis Services server.

  2. Under Generelle indstillinger skal du angive et rollenavn og angive databasetilladelserne til Skrivebeskyttet.

    A screenshot of giving a new role a new name and setting it to read only, in the general settings in Analysis Services server.

  1. I indstillingerne for medlemskab skal du tilføje de brugere, der skal kalde API'en Integrer token – Generér token. Hvis du bruger en tjenesteprincipal, der ikke er administrator, skal du også tilføje det.

    A screenshot of adding users to a new role in Analysis Services server.

  2. I indstillingerne for rækkefiltre skal du angive DAX-forespørgslen ved hjælp af funktionen CUSTOMDATA() .

    A screenshot showing how to add the function customData to the DAX query in a new role in Analysis Services server.

Tjenesteprincipal

Hvis du bruger en tjenesteprincipal til at integrere rapporten, skal du sørge for, at tjenesteprincipalen er serveradministrator eller rollemedlem af AAS. Hvis du vil tildele AAS-administratortilladelser til tjenesteprincipalen, skal du se Føj en tjenesteprincipal til serveradministratorrollen. Hvis du vil tilføje tjenesteprincipalen som rollemedlem, skal du gå til indstillingerne for medlemskab.

Brug objekt-id'et for tjenesteprincipalen som brugernavn (effektiv identitet).

Analysis Service-migrering

Du kan migrere fra AAS til Power BI Premium , selvom du har en integreret AAS-rapport. Din integrerede rapport afbrydes ikke under migreringen, så længe den hovedkonto, der kalder API'en Integrer token – generér token , er medlem eller administrator af arbejdsområdet.

Bemærk

Hvis tjenesteprincipalen ikke er administrator, og du ikke vil gøre den til administrator af arbejdsområdet, når du migrerer, skal du overføre modellen til et separat arbejdsområde, hvor du kan give den administratortilladelser.

Generér et integreringstoken

Brug API'en Generér token til at generere et integreringstoken, der tilsidesætter den effektive identitet.

De oplysninger, der er nødvendige for at generere et integreringstoken, afhænger af, hvordan du har forbindelse til Power BI (tjenesteprincipal eller masterbruger), og også om databasen har sikkerhed på rækkeniveau.

Hvis du vil generere et integreringstoken, skal du angive følgende oplysninger:

  • Brugernavn (valgfrit, hvis der ikke er nogen sikkerhed på rækkeniveau. Påkrævet til sikkerhed på rækkeniveau) – Brugernavnet skal være det samme som API-kalderen (i dette tilfælde masterbrugerens UPN). Hvis databasen ikke bruger sikkerhed på rækkeniveau, og der ikke er angivet noget brugernavn, bruges masterbrugerens legitimationsoplysninger.
  • Rolle (kræves til sikkerhed på rækkeniveau) – Rapporten viser kun data, hvis den effektive identitet er medlem af rollen.

Eksempel:

Definer brugeridentiteten og rollerne for et af følgende tre scenarier:

  • Hvis sikkerhed på rækkeniveau ikke er implementeret:

Det er ikke nødvendigt at definere en effektiv identitet.

  • Hvis du bruger statisk sikkerhed på rækkeniveau:

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

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

    Bemærk

    customData i integreringstokenet må ikke være større end 1.024 tegn.

Brug den effektive identitet til at generere et integreringstoken:

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

Brug integreringstokenet til at integrere rapporten i din app eller dit websted. Din rapport filtrerer data i henhold til den anvendte sikkerhed på rækkeniveau i rapporten.