Vložení sestavy s databází Azure Analysis Services (AAS)
PLATÍ PRO: Aplikace vlastní data , která uživatel vlastní.
Tento článek vysvětluje, jak vložit sestavu Power BI, která používá data uložená ve službě Azure Analysis Services (AAS) ve scénáři vložení pro vaše zákazníky. Tento článek je zaměřený na nezávislé vývojáře softwaru (ISV), kteří chtějí vložit sestavu s daty AAS bez ohledu na to, jestli databáze implementuje zabezpečení na úrovni řádků (RLS).
Požadavky
Budete potřebovat sestavu s živým připojením k databázi AAS s RLS nebo bez.
Dynamické zabezpečení – zabezpečení na úrovni řádků
Pokud chcete, aby sestava implementovaly dynamické zabezpečení na úrovni řádků, použijte tuto customeData
funkci. Vzhledem k tomu, že efektivní identitu nemůžete přepsat, doporučujeme vytvořit nové role pomocí customData
. Můžete také použít role, které mají username
nebo userPrincipalName
funkce, pokud je customData
nahradíte .
Podle těchto kroků vytvořte novou roli a přidejte funkci customData
do role.
Vytvořte roli na serveru Analysis Services.
V nastavení Obecné zadejte název role a nastavte oprávnění databáze jen pro čtení .
V nastavení členství přidejte uživatele, kteří budou volat token pro vložení – vygenerovat rozhraní API tokenu. Pokud používáte instanční objekt, který není správcem, přidejte ho také.
V nastavení filtrů řádků nastavte dotaz DAX pomocí
CUSTOMDATA()
funkce.
Instanční objekt
Pokud k vložení sestavy používáte instanční objekt, ujistěte se, že je instanční objekt správcem nebo členem role AAS. Pokud chcete instančnímu objektu udělit oprávnění správce AAS, přečtěte si téma Přidání instančního objektu do role správce serveru. Pokud chcete instanční objekt přidat jako člena role, přejděte do nastavení členství.
Jako uživatelské jméno (efektivní identita) použijte ID instančního objektu.
Migrace služby Analysis Service
Z AAS na Power BI Premium můžete migrovat i v případě, že máte vloženou sestavu AAS. Vložená sestava se během migrace neporuší, pokud objekt zabezpečení, který volá token pro vložení – vygeneruje rozhraní API tokenu , je členem nebo správcem pracovního prostoru.
Poznámka:
Pokud instanční objekt není správcem a nechcete ho při migraci nastavit jako správce pracovního prostoru, migrujte tento model do samostatného pracovního prostoru, kde mu můžete udělit oprávnění správce.
Vygenerování tokenu pro vložení
Pomocí rozhraní API pro generování tokenů vygenerujte token pro vložení, který přepisuje efektivní identitu.
Informace potřebné k vygenerování tokenu pro vložení závisí na tom, jak jste připojení k Power BI (instančnímu objektu nebo hlavnímu uživateli) a také v případě, že databáze obsahuje zabezpečení na úrovni řádků.
Pokud chcete vygenerovat token pro vložení, zadejte následující informace:
- Uživatelské jméno (volitelné, pokud není rLS). Požadováno pro zabezpečení na úrovni řádků) – Uživatelské jméno musí být stejné jako volající rozhraní API (v tomto případě hlavního hlavního uživatele hlavního hlavního uživatele hlavního názvu uživatele). Pokud databáze nepoužívá zabezpečení na úrovni řádků a není zadané žádné uživatelské jméno, použijí se přihlašovací údaje hlavního uživatele.
- Role (požadovaná pro zabezpečení na úrovni řádků) – Sestava zobrazí data pouze v případě, že efektivní identita je členem role.
Příklad:
Definujte identitu uživatele a role pro jeden z následujících tří scénářů:
- Pokud není implementováno zabezpečení na úrovni řádků:
Není nutné definovat žádnou efektivní identitu.
Pokud používáte statické zabezpečení na úrovni řádků:
var rlsidentity = new EffectiveIdentity( //If static RLS username: "username@contoso.com", roles: new List<string>{ "MyRole" }, datasets: new List<string>{ datasetId.ToString()} )
Pokud používáte dynamické zabezpečení na úrovni řádků:
var rlsidentity = new EffectiveIdentity( // If dynamic RLS username: "username@contoso.com", roles: new List<string>{ "MyRoleWithCustomData" }, customData: "SalesPersonA" datasets: new List<string>{ datasetId.ToString()} )
Poznámka:
customData
v tokenu pro vložení nesmí být větší než 1 024 znaků.
Použijte efektivní identitu k vygenerování tokenu pro vložení:
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;
}
Pomocí tokenu pro vložení můžete sestavu vložit do aplikace nebo webu. Vaše sestava bude filtrovat data podle použitého zabezpečení na úrovni řádků v sestavě.