Jelentés beágyazása az RLS használatával

A következőkre vonatkozik:✅ Power BI beágyazott elemzés ügyfelei számára (App-owns-data)

Ez a cikk bemutatja, hogyan ágyazhat be RLS-t használó Power BI-tartalmakat egy szabványos Power BI-alkalmazásba, amely rendelkezik adatalkalmazással.

Előfeltételek

Az RLS beállításának részletes ismertetését a Sorszintű biztonság (RLS) és a Power BI között találja.

Az RLS-szerepkörök meghatározásakor ne feledje, hogy a használt DAX-kifejezés határozza meg, hogy az RLS-modell statikus vagy dinamikus-e.

Mikor érdemes statikus és dinamikus biztonságot használni?

A statikus biztonság rögzített értéket használ a DAX-szűrőben az egyes szerepkörök definiálásához. Egyszerűen implementálható, de nehéz karbantartani, ha sok felhasználó vagy szervezet vesz részt.

A statikus biztonság olyan ISV-k esetében működik a legjobban, amelyek egy vagy néhány nagy ügyfelet szolgálnak ki, ahol minden részlegnek különböző adatokhoz kell hozzáférnie.

A dinamikus biztonság DAX-függvényt (username() vagy userprincipalname()) használ a szerepkörök definiálásához. A dinamikus biztonság nagyobb rugalmasságot biztosít, és lehetővé teszi, hogy kevesebb szerepkörrel és kevesebb karbantartással kezelje az adatokat.

Statikus biztonság

Statikus szerepkörökkel a beágyazási jogkivonat létrehozásakor átadja a szerepkört a Power BI-nak, és a felhasználó ennek a szerepkörnek megfelelően látja az adatokat. Statikus biztonsági szerepkörök létrehozásához adjon meg egy rögzített értéket a DAX-szűrőben.

Megadhatja például az USA keleti régiójának szerepét,[Region] = "East"

Képernyőkép statikus R L S szerepkör definiálásáról.

Tegyük fel, hogy john@contoso.com az alkalmazás felhasználója. Hozzáférést szeretne adni Johnnak az keleti USA szerepkör adataihoz. Jelentés john@contoso.combeágyazásához hozzon létre egy beágyazási jogkivonatot az USA keleti régiója szerepkörrel. Az eredményként kapott adatok szűrése a következőre [Region] = "East"történik: .

Feljegyzés

A beágyazási jogkivonat létrehozásakor meg kell adnia egy felhasználónevet, de a felhasználónév bármilyen karakterlánc lehet. A statikus szerepkörök rögzített értékkel rendelkeznek, amely nem függ a felhasználónévtől, ezért ha az ISV meghatározza a felhasználó szerepkörét, és átadja azokat a beágyazási jogkivonatnak, az adatok az adott szerepkör alapján lesznek szűrve, függetlenül attól, hogy milyen felhasználónevet adott át.

Dinamikus biztonság

A dinamikus biztonság a DAX függvénnyel (username() vagy userprincipalname()) határozza meg a szerepkört.

A felhasználó adatforgatókönyvében az RLS-modell automatikusan szűri az adatokat az adott felhasználó szerepkörei alapján. Ha az alkalmazás rendelkezik adatokkal, a Power BI nem ismeri az ISV ügyfeleinek felhasználóneveit, így a username() függvény használatával dinamikusan szűrheti az adatokat.

Hozzon létre egy szerepkört a Power BI Desktopban a felhasználónév() függvénnyel. Létrehozhat például egy CountryDynamic nevű szerepkört, és definiálhatja azt[CountryRegionCode] = username()

Dinamikus R L S-szerepkör létrehozását bemutató képernyőkép.

Tegyük fel, hogy hozzáférést szeretne adni a felhasználónak jane@contoso.comfranciaországi adatokhoz. Amikor beágyazási jogkivonatot hoz létre jane@contoso.com, a France karakterláncot adja át felhasználónévként a CountryDynamic szerepkörben. Az adatok szűrése a [CountryRegionCode] = Franciaország szerint történik.

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

Ha dinamikus biztonságot használ ebben a forgatókönyvben, csak egy szerepkörre van szüksége az összes régióhoz. A rendszer a régió nevét használja tényleges identitásként.

Beágyazási token létrehozása

Ha készen áll a jelentés alkalmazásba való beágyazására, létre kell hoznia egy beágyazási jogkivonatot. Ha tokent szeretne létrehozni a Beágyazási jogkivonat API használatával, adja át az alábbi információkat az API-nak.

  • felhasználónév (kötelező) – Ha a szerepkörök dinamikusak, a rendszer a felhasználónév sztringet használja szűrőként. Statikus szerepkörök esetén a felhasználónév nincs hatással az RLS-re, és bármilyen sztring is lehet. Csak egyetlen felhasználónév szerepelhet a listában.
  • szerepkörök (kötelező) – A sorszintű biztonsági szabályok alkalmazásakor használt szerepkör(ek). Ha több szerepkört is átad, azokat sztringtömbként kell megadni.
  • adatkészlet (kötelező) – A beágyazandó elemre vonatkozó adatkészlet.

Most már beágyazhatja a jelentést az alkalmazásba. A jelentés az alkalmazott RLS szerint szűri az adatokat.

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

Szempontok és korlátozások

  • A beállítástól függően előfordulhat, hogy több lépést is meg kell tennie, mielőtt beágyazási jogkivonatot hoz létre. A különböző forgatókönyvekről további információt a biztonsági funkciókat használó jelentések beágyazása című témakörben talál.
  • A beágyazási jogkivonatot létrehozó felhasználónak tagnak vagy rendszergazdának kell lennie mindkét munkaterületen (az adathalmaz-munkaterületen és a jelentés-munkaterületen).
  • A beágyazási jogkivonat létrehozásakor meg kell adnia egy felhasználónevet és egy szerepkört. Ha nem, az alábbi események egyike következik be attól függően, hogy a jogkivonatot szolgáltatásnév vagy főfelhasználó hozza létre:
    • Szolgáltatásnév azonosító esetén a token létrehozása meghiúsul.
    • A főfelhasználók esetében a jogkivonat létrehozása sikeres, de az adatok nem lesznek szűrve (az összes adat vissza lesz adva).

További kérdések? Próbálja ki a Power BI-közösség.