Del via


Integrer en rapport med sikkerhed på rækkeniveau

GÆLDER FOR: Appen ejer data Brugeren ejer data

I denne artikel forklares det, hvordan du integrerer Power BI-indhold, der bruger sikkerhed på rækkeniveau, i et standardprogram, som Power BI ejer.

Forudsætninger

Du kan finde en detaljeret forklaring på, hvordan du konfigurerer sikkerhed på rækkeniveau, i Sikkerhed på rækkeniveau med Power BI.

Når du definerer rollerne for sikkerhed på rækkeniveau, skal du være opmærksom på, at det DAX-udtryk, du bruger, bestemmer, om RLS-modellen er statisk eller dynamisk.

Hvornår skal du bruge statisk og dynamisk sikkerhed?

Statisk sikkerhed bruger en fast værdi i DAX-filteret til at definere hver rolle. Det er nemt at implementere, men svært at vedligeholde, når der er mange brugere eller organisationer involveret.

Statisk sikkerhed fungerer bedst for en ISV, der servicerer en eller nogle få store kunder, hvor hver afdeling skal have adgang til forskellige data.

Dynamisk sikkerhed bruger en DAX-funktion (username() eller userprincipalname()) til at definere rollerne. Dynamisk sikkerhed giver større fleksibilitet og giver dig mulighed for at administrere dine data ved hjælp af færre roller og mindre vedligeholdelse.

Statisk sikkerhed

Med statiske roller overfører du rollen til Power BI, når du genererer et integreringstoken, og brugeren får vist data i henhold til denne rolle. Hvis du vil oprette statiske sikkerhedsroller, skal du angive en fast værdi i DAX-filteret.

Du kan f.eks. definere rollen som det østlige USA som [Region] = "East"

Skærmbillede, der viser, hvordan du definerer en statisk R L S-rolle.

Lad os sige, at john@contoso.com det er en bruger af din app. Du vil give John adgang til data fra rollen Det østlige USA . Hvis du vil integrere en rapport for john@contoso.com, skal du generere et integreringstoken ved hjælp af rollen Det østlige USA . De resulterende data filtreres efter [Region] = "East".

Bemærk

Når du genererer integreringstokenet, skal du angive et brugernavn, men brugernavnet kan være en hvilken som helst streng. Statiske roller har en fast værdi, der ikke er afhængig af et brugernavn, så når ISV'en bestemmer brugerens rolle og overfører den til integreringstokenet, filtreres dataene i henhold til den pågældende rolle, uanset hvilket brugernavn der blev overført.

Dynamisk sikkerhed

Dynamisk sikkerhed bruger DAX-funktionen (username() eller userprincipalname()) til at definere rollen.

I brugeren ejer datascenariet filtrerer RLS-modellen automatisk data baseret på rollerne for den specifikke bruger. Med appen ejer data kender Power BI ikke brugernavnene for ISV'ens kunder, så du kan bruge funktionen username() til dynamisk at filtrere dataene.

Opret en rolle i Power BI Desktop ved hjælp af funktionen username(). Du kan f.eks. oprette en rolle med navnet CountryDynamic og definere den som [CountryRegionCode] = username()

Skærmbillede, der viser, hvordan du opretter en dynamisk R L S-rolle.

Lad os sige, jane@contoso.comat du vil give din bruger adgang til data for Frankrig. Når du genererer et integreringstoken for jane@contoso.com, overfører du strengen Frankrig som brugernavnet i rollen CountryDynamic. Dine data filtreres i henhold til [CountryRegionCode] = Frankrig.

{
    "accessLevel": "View",
    "identities": [
        {
            "username": "France",
            "roles": [ "CountryDynamic"],
            "datasets": [ "fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc" ]
        }
    ]
}

Når du bruger dynamisk sikkerhed i dette scenarie, skal du kun bruge én rolle for alle områder. Områdenavnet bruges som den effektive identitet.

Generér et integreringstoken

Når du er klar til at integrere rapporten i din app, skal du generere et integreringstoken. Hvis du vil generere et token ved hjælp af API'en Til integreringstoken, skal du overføre følgende oplysninger til API'en.

  • username (påkrævet) – Hvis rollerne er dynamiske, bruges brugernavnstrengen som filter. For statiske roller påvirker brugernavnet ikke sikkerhed på rækkeniveau og kan være en hvilken som helst streng overhovedet. Der kan kun angives et enkelt brugernavn.
  • roles (required) – den eller de roller, der bruges ved anvendelse af sikkerhedsregler på rækkeniveau. Hvis du overfører mere end én rolle, skal de overføres som en strengmatrix.
  • datasæt (påkrævet) – det datasæt, der gælder for det element, du integrerer.

Du kan nu integrere rapporten i din app. Rapporten filtrerer data i henhold til den anvendte sikkerhed på rækkeniveau.

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

       // Defines the user identity and roles.
        var rlsIdentity = new EffectiveIdentity(
            username: "France",
            roles: new List<string>{ "CountryDynamic" },
            datasets: datasetIds.Select(id => id.ToString()).ToList());
        );
       
        // 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;
    }

Overvejelser og begrænsninger

  • Afhængigt af din konfiguration skal du muligvis udføre flere trin, før du kan generere et integreringstoken. Du kan få oplysninger om de forskellige scenarier under Integrer en rapport, der bruger sikkerhedsfunktioner.
  • Den bruger, der genererer integreringstokenet, skal være medlem eller administrator i begge arbejdsområder (datasætarbejdsområdet og rapportarbejdsområdet).
  • Når du genererer integreringstokenet, skal du angive et brugernavn og en rolle. Hvis du ikke gør det, sker der en af følgende hændelser, afhængigt af om tokenet genereres af tjenesteprincipalen eller masterbrugeren:
    • Tokenoprettelse mislykkes for en tjenesteprincipal.
    • For en masterbruger lykkes tokenoprettelsen, men dataene filtreres ikke (alle dataene returneres).

Flere spørgsmål? Prøv Power BI-community'et .