Sdílet prostřednictvím


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 customDatanahradíte .

Podle těchto kroků vytvořte novou roli a přidejte funkci customData do role.

  1. Vytvořte roli na serveru Analysis Services.

    A screenshot of creating a new role in Analysis Services server.

  2. V nastavení Obecné zadejte název role a nastavte oprávnění databáze jen pro čtení .

    A screenshot of giving a new role a new name and setting it to read only, in the general settings in Analysis Services server.

  1. 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é.

    A screenshot of adding users to a new role in Analysis Services server.

  2. V nastavení filtrů řádků nastavte dotaz DAX pomocí CUSTOMDATA() funkce.

    A screenshot showing how to add the function customData to the DAX query in a new role in Analysis Services server.

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ě.