Ange effektiv identitet

Slutförd

När du genererar en inbäddningstoken kan du ange en effektiv identitet när du arbetar med scenariot För dina kunder .

Din applogik skapar först en lista över ett eller flera effectiveidentity objekt. Varje objekt kan innehålla följande parametrar.

  • Datasets: (Krävs) En lista över datauppsättnings-ID:ar.

  • Username: (Valfritt) För interna värdbaserade modeller är det ett textvärde som ska returneras av USERNAME funktionen eller USERPRINCIPALNAME . För externa värdbaserade modeller är det användarnamnet för att ansluta till modellen.

  • Roles: (Valfritt) Lista över rollnamn.

  • CustomData: (Valfritt) Ett textvärde som ska returneras av CUSTOMDATA funktionen.

  • IdentityBlob: (Valfritt) En Azure AD åtkomsttoken som används för tokenbaserad identitet med en DirectQuery-anslutning till en Microsoft Azure SQL Database. Det gör att du kan framtvinga databehörigheter utan datamodell RLS. Vi beskriver det här avsnittet senare i den här lektionen.

Du kan skicka en lista över datauppsättningar eftersom inbäddningstoken används för att bädda in många Power BI-artefakter som ansluter till olika datauppsättningar eller eftersom en instrumentpanel består av paneler som ansluter till flera datauppsättningar. När en lista över flera roller skickas in tillämpas alla roller samtidigt, vilket innebär att användaren kan visa unionen av de data som rollerna beviljar.

I följande exempel skapas en lista som innehåller ett effectiveidentity objekt. Den skickar användarnamnet för den aktuella appanvändaren, regionrollen och den första (och kanske bara) datauppsättningen som finns på arbetsytan:

// Create effective identity for the first dataset
var datasetId = datasets[0].Id.ToString();
var effectiveIdentities = new List<EffectiveIdentity>() {
	new EffectiveIdentity(
		username: userProfile.Username,
		roles: new List<string> {"Region"},
		datasets: new List<string> {datasetId})
};

För att generera en inbäddningstoken skickar appen sedan listan till parametern identities för GenerateTokenRequestV2 metoden. Andra metoder genererar inbäddningstoken så att du kan skicka in en lista över effektiva identiteter.

// Bundle token requests for the reports, datasets, and the workspace
var tokenRequest = new GenerateTokenRequestV2(
    reports: reportTokenRequests,
    datasets: datasetTokenRequests,
    targetWorkspaces: workspaceRequests,
    identities: effectiveIdentities
) ;

Följande avsnitt innehåller ytterligare information om hur du anger effektiv identitet för varje Power BI-datauppsättningstyp.

Ange effektiv identitet för interna värdbaserade importtabeller

Tänk på följande parametrar när du skickar en effektiv identitet för att ansluta till en intern värdbaserad modell med importtabeller:

  • Minst en roll måste definieras i modellen.

  • Användarnamnet måste skickas, men det behöver inte vara ett riktigt användarnamn. Värdet som skickas in returneras av USERNAME funktionen eller USERPRINCIPALNAME .

  • Minst en roll måste definieras av den effektiva identiteten.

Ange effektiv identitet för interna DirectQuery-tabeller

Om du vill ange en effektiv identitet för interna DirectQuery-tabeller använder du samma vägledning för interna värdbaserade importtabeller.

Dessutom kan du använda tokenbaserad identitet. Med tokenbaserad identitet kan du ange den effektiva identiteten för en inbäddningstoken med hjälp av en Azure AD åtkomsttoken, men bara när källan är en Azure SQL Database. När du genererar inbäddningstoken skickar appen åtkomsttoken till parametern IdentityBlob . I det här fallet behöver du inte skicka ett värde till parametern username .

Om du använder tokenbaserad identitet måste datauppsättningens ägare konfigurera datakällan så att slutanvändarna använder OAuth2-autentiseringsuppgifterna. På så sätt använder Power BI det effektiva identitetsanvändarnamnet för att ansluta till datakällan. Det innebär att databasen kan framtvinga RLS i stället för datamodellen.

Mer information om tokenbaserad identitet finns i Säkerhetsfunktioner i Power BI Embedded.

Ange effektiv identitet för Azure Analysis Services

Om du vill ange en effektiv identitet när du använder en Azure Analysis Services modell måste du se till att inbäddningsidentiteten (tjänstens huvudnamn eller huvudanvändarkonto) har minst läsbehörighet för modellen.

När ingen effektiv identitet skickas och inbäddningsidentitetskontot är en Analysis Services-administratör kan alla appanvändare visa alla modelldata. När inbäddningsidentitetskontot inte är en Analysis Services-administratör begränsas datasynligheten av kontots tilldelade roller.

Anteckning

När du använder tjänstens huvudnamn med en Azure Analysis Services modell måste tjänstens huvudnamn ha Azure Analysis Services instansbehörigheter. Att använda en säkerhetsgrupp som innehåller tjänstens huvudnamn för det här ändamålet fungerar inte.

Tänk på följande parametrar när du skickar en effektiv identitet för att arbeta med en Azure Analysis Services modell:

  • Minst en roll måste definieras i modellen.

  • Användarnamnet måste vara ett huvudanvändarkonto (UPN-format) eller tjänstens huvudnamn (ObjectID).

  • När inga roller ingår i den effektiva identiteten tillämpas roller som har tilldelats till det effektiva identitetskontot.

  • Funktionen USERNAME returnerar det effektiva identitetsanvändarnamnet.

Ange effektiv identitet för SQL Server Analysis Services

Om du vill ange en effektiv identitet när du använder en SQL Server Analysis Services modell måste du se till att autentiseringsuppgifterna för gatewaydatakällan har angetts som Analysis Services-administratör.

Den effektiva identiteten (tjänstens huvudnamn eller huvudanvändarkonto) måste vara gatewayadministratör eller ha behörigheter för ReadOverrideEffectiveIdentity på gatewaydatakällan. Du kan bara ange den här behörigheten med hjälp av Power BI REST API.

När ingen effektiv identitet skickas och inbäddningsidentitetskontot är analysis services-administratör kan alla användare visa alla modelldata. När inbäddningsidentitetskontot inte är en Analysis Services-administratör begränsas datasynligheten av kontots tilldelade roller.

Tänk på följande parametrar när du skickar en effektiv identitet för att arbeta med en SQL Server Analysis Services modell:

  • Minst en roll måste definieras i modellen.

  • Användarnamnet måste vara ett Windows-konto med UPN- eller DOMAIN\username-format.

  • Användarnamnet måste ha läsbehörighet för modellen.

  • När inga roller ingår i den effektiva identiteten tillämpas roller som tilldelas till det effektiva identitetsanvändarnamnet.

  • Funktionen USERNAME returnerar det effektiva identitetsanvändarnamnet.

  • Användning av CUSTOMDATA funktionen stöds inte.

Jämföra datauppsättningstyper

I följande tabell jämförs effektiva inställningar för identitetsparametrar för de fyra datauppsättningstyperna.

Parameter Importtabeller med intern värd DirectQuery-tabeller med intern värd Azure Analysis Services SQL Server Analysis Services
Användarnamn Alla textvärden som returneras av USERNAME funktionerna och USERPRINCIPALNAME Alla textvärden som returneras av USERNAME funktionerna och USERPRINCIPALNAME Den används för att autentisera med tjänsten. Det måste vara ett huvudanvändarkonto (UPN-format) eller tjänstens huvudnamn (ObjectID). Den används för att autentisera med tjänsten. Det måste vara ett Windows-konto med UPN- eller DOMAIN\username-format.
CustomData Stöds Stöds Stöds Stöds inte
Roller Minst en roll måste definieras av den effektiva identiteten Minst en roll måste definieras av den effektiva identiteten När ingen roll skickas tillämpas roller som är tilldelade till det effektiva identitetskontot När ingen roll skickas tillämpas roller som är tilldelade till det effektiva identitetskontot
IdentityBlob No Ja, när källdata är en Azure SQL-databas (som bör framtvinga RLS-krav) Inga Inga
Ytterligare information Kräver en gateway. Det effektiva identitetskontot måste vara en gatewayadministratör.