Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
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.
Opprett en rolle på Analysis Services-serveren.
Angi et rollenavn i generelle innstillinger, og angi databasetillatelsene til Skrivebeskyttet.
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.
Angi DAX-spørringen ved hjelp av
CUSTOMDATA()funksjonen i radfiltreinnstillingene.
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.
- Innebyggingstoken for hovedbruker
- Innebyggingstoken for tjenestekontohaver eller tjenestekontohaverprofil
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
customDatai 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.