Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Vzťahuje sa na:✅ Power BI vloženej analýzy pre vašich zákazníkov (údaje vo vlastníctve aplikácie)
Tento článok vysvetľuje, ako vložiť obsah služby Power BI, ktorý používa zabezpečenie na úrovni riadkov, do štandardnej aplikácie služby Power BI vlastní údaje.
Požiadavky
Podrobné vysvetlenie nastavenia zabezpečenia na úrovni riadkov nájdete v téme Zabezpečenie na úrovni riadkov (RLS) v službe Power BI.
Pri definovaní rolí zabezpečenia na úrovni riadkov majte na pamäti, že výraz DAX, ktorý používate, určuje, či je model zabezpečenia na úrovni riadkov statický alebo dynamický.
Kedy použiť statické a dynamické zabezpečenie
Na definovanie každej roly používa statické zabezpečenie vo filtri DAX pevnú hodnotu. Implementácia je jednoduchá, ale ťažko sa udržiava, keď je zapojených veľa používateľov alebo organizácií.
Statické zabezpečenie funguje najlepšie pre nezávislých dodávateľov softvéru, ktorý slúži jednému alebo niekoľkým veľkým zákazníkom, kde každé oddelenie potrebuje prístup k rôznym údajom.
Dynamické zabezpečenie používa na definovanie rolí funkciu DAX (username() alebo userprincipalname()). Dynamické zabezpečenie poskytuje väčšiu flexibilitu a umožňuje spravovať údaje pomocou menšieho počtu rolí a menšej údržby.
Statické zabezpečenie
Pomocou statických rolí odovzdáte rolu službe Power BI, keď vygenerujete vkladací token, a používateľ uvidí údaje podľa danej roly. Ak chcete vytvoriť statické roly zabezpečenia, zadajte pevnú hodnotu do filtra DAX.
Môžete napríklad definovať rolu východného USA ako [Region] = "East"
Povedzme, že john@contoso.com ste používateľom vašej aplikácie. Johnovi chcete poskytnúť prístup k údajom z východnej časti USA . Ak chcete vložiť zostavu pre john@contoso.com, vygenerujte token na vloženie pomocou roly Východná časť USA . Výsledné údaje sa filtrujú pre [Region] = "East".
Poznámka
Pri generovaní vkladacieho tokenu je potrebné zadať meno používateľa, ale meno používateľa môže byť ľubovoľný reťazec. Statické roly majú pevnú hodnotu, ktorá nie je závislá od mena používateľa, takže keď nezávislý dodávateľ softvéru určí rolu používateľa a odovzdá ju do vkladacieho tokenu, údaje sa filtrujú podľa danej roly bez ohľadu na to, aké meno používateľa bolo odovzdané.
Dynamické zabezpečenie
Dynamické zabezpečenie používa na definovanie roly funkciu DAX (username() alebo userprincipalname()).
V scenári, keď používateľ vlastní údaje , model zabezpečenia na úrovni riadkov automaticky filtruje údaje na základe rolí konkrétneho používateľa.
Pri možnosti Aplikácia vlastní údaje power BI nepozná mená zákazníkov nezávislého dodávateľa softvéru, a preto môžete pomocou username() tejto funkcie dynamicky filtrovať údaje.
Vytvorte rolu v aplikácii Power BI Desktop pomocou funkcie username(). Môžete napríklad vytvoriť rolu s názvom CountryDynamic a definovať ju ako [CountryRegionCode] = username()
Povedzme, jane@contoso.comže chcete poskytnúť svojmu používateľovi prístup k údajom pre Francúzsko. Keď vygenerujete token na vloženie pre jane@contoso.com, odovzdáte reťazec France ako meno používateľa v role CountryDynamic . Vaše údaje sú filtrované podľa stĺpca [CountryRegionCode] = France.
{
"accessLevel": "View",
"identities": [
{
"username": "France",
"roles": [ "CountryDynamic"],
"datasets": [ "fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc" ]
}
]
}
Pri používaní dynamického zabezpečenia v tomto scenári potrebujete len jednu rolu pre všetky oblasti. Názov oblasti sa používa ako efektívna identita.
Generovanie vkladacieho tokenu
Keď budete pripravení na vloženie zostavy do aplikácie, musíte vygenerovať token na vloženie. Ak chcete generovať token pomocou rozhrania API tokenu na vloženie, zadajte do rozhrania API nasledujúce informácie.
- username (povinné) – ak sú roly dynamické, ako filter sa použije reťazec mena používateľa . V prípade statických rolí meno používateľa nemá vplyv na zabezpečenie na úrovni riadkov a môže mať vôbec žiadny reťazec. Uvedené môže byť iba jedno meno používateľa.
- roles (povinné) – rola (roly ) použitá pri použití pravidiel zabezpečenia na úrovni riadkov. Ak sa odovzdávajú viaceré roly, je potrebné ich odovzdať ako pole reťazcov.
- dataset (povinné) – množina údajov, ktorá sa vzťahuje na vkladanú položku.
Teraz môžete zostavu vložiť do svojej aplikácie. Zostava filtruje údaje podľa použitého zabezpečenia na úrovni riadkov.
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;
}
Dôležité informácie a obmedzenia
- V závislosti od nastavenia možno budete musieť vykonať niekoľko krokov, kým budete môcť vygenerovať vkladací token. Informácie o rôznych scenároch nájdete v téme Vloženie zostavy, ktorá používa funkcie zabezpečenia.
- Používateľ, ktorý generuje vkladací token, musí byť členom alebo správcomv oboch pracovných priestoroch (pracovnom priestore množiny údajov aj pracovnom priestore zostavy).
- Pri generovaní vkladacieho tokenu je potrebné zadať meno používateľa a rolu. Ak tak neurobíte, vyskytne sa jedna z nasledujúcich udalostí v závislosti od toho, či token generuje objekt služby alebo hlavný používateľ:
- V prípade objektu služby zlyhá generovanie tokenu.
- V prípade hlavného používateľa je generovanie tokenov úspešné, ale údaje sa nefiltrujú (vrátia sa všetky údaje).
Súvisiaci obsah
Máte ďalšie otázky? Skúste Komunita Power BI.