Osadzanie raportu za pomocą bazy danych usług Azure Analysis Services (AAS)

DOTYCZY: Aplikacja jest właścicielem danych Użytkownik jest właścicielem danych

W tym artykule wyjaśniono, jak osadzić raport usługi Power BI korzystający z danych przechowywanych w usługach Azure Analysis Services (AAS) w scenariuszu osadzania dla klientów . Ten artykuł jest przeznaczony dla niezależnych deweloperów oprogramowania (ISV), którzy chcą osadzić raport z danymi usługi AAS niezależnie od tego, czy baza danych implementuje zabezpieczenia na poziomie wiersza (RLS).

Wymagania wstępne

Potrzebny będzie raport z połączeniem na żywo z bazą danych usługi AAS z zabezpieczeniami na poziomie wiersza lub bez zabezpieczeń.

Zabezpieczenia dynamiczne — zabezpieczenia na poziomie wiersza

Jeśli chcesz, aby raport implementować dynamiczne zabezpieczenia na poziomie wiersza, użyj customeData funkcji . Ponieważ nie można zastąpić obowiązującej tożsamości, zalecamy utworzenie nowych ról za pomocą polecenia customData. Możesz również użyć ról, które mają username funkcje lub userPrincipalName , jeśli zastąpisz je ciągiem customData.

Wykonaj następujące kroki, aby utworzyć nową rolę i dodać customData funkcję do roli.

  1. Utwórz rolę na serwerze usług Analysis Services.

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

  2. W ustawieniach Ogólne podaj nazwę roli i ustaw uprawnienia bazy danych na Wartość Tylko do odczytu .

    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. W ustawieniach członkostwa dodaj użytkowników, którzy będą wywoływać token osadzania — generuj interfejs API tokenu. Jeśli używasz jednostki usługi, która nie jest administratorem, dodaj je również.

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

  2. W ustawieniach filtrów wierszy ustaw zapytanie języka DAX przy użyciu CUSTOMDATA() funkcji .

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

Jednostka usługi

Jeśli używasz jednostki usługi do osadzania raportu, upewnij się, że jednostka usługi jest administratorem serwera lub członkiem roli usługi AAS. Aby udzielić uprawnień administratora usługi AAS do jednostki usługi, zobacz Dodawanie jednostki usługi do roli administratora serwera. Aby dodać jednostkę usługi jako członka roli, przejdź do ustawień członkostwa.

Użyj identyfikatora obiektu jednostki usługi jako nazwy użytkownika (obowiązująca tożsamość).

Migracja usługi Analysis Service

Możesz przeprowadzić migrację z usługi AAS do usługi Power BI Premium , nawet jeśli masz osadzony raport usługi AAS. Osadzony raport nie zostanie przerwany podczas migracji, o ile podmiot zabezpieczeń wywołujący token osadzania — generowanie interfejsu API tokenu jest członkiem lub administratorem obszaru roboczego.

Uwaga

Jeśli jednostka usługi nie jest administratorem i nie chcesz, aby administrator obszaru roboczego był administratorem podczas migracji, przeprowadź migrację tego modelu do oddzielnego obszaru roboczego, w którym można nadać mu uprawnienia administratora.

Generowanie tokenu osadzania

Użyj interfejsu API generowania tokenu, aby wygenerować token osadzania, który zastępuje obowiązującą tożsamość.

Informacje potrzebne do wygenerowania tokenu osadzania zależą od sposobu połączenia z usługą Power BI (jednostką usługi lub użytkownikiem głównym), a także od tego, czy baza danych ma zabezpieczenia na poziomie wiersza.

Aby wygenerować token osadzania, podaj następujące informacje:

  • Nazwa użytkownika (opcjonalnie, jeśli nie ma zabezpieczeń na poziomie wiersza. Wymagane dla zabezpieczeń na poziomie wiersza— nazwa użytkownika musi być taka sama jak nazwa użytkownika wywołującego interfejs API (w tym przypadku nazwa UPN użytkownika głównego). Jeśli baza danych nie używa zabezpieczeń na poziomie wiersza i nie zostanie podana żadna nazwa użytkownika, używane są poświadczenia użytkownika głównego.
  • Rola (wymagana dla zabezpieczeń na poziomie wiersza) — raport będzie wyświetlał dane tylko wtedy, gdy efektywna tożsamość jest członkiem roli.

Przykład:

Zdefiniuj tożsamość użytkownika i role dla jednego z następujących trzech scenariuszy:

  • Jeśli zabezpieczenia na poziomie wiersza nie są zaimplementowane:

Nie ma potrzeby definiowania żadnej obowiązującej tożsamości.

  • W przypadku używania statycznego zabezpieczeń na poziomie wiersza:

        var rlsidentity = new EffectiveIdentity(  //If static RLS
           username: "username@contoso.com", 
           roles: new List<string>{ "MyRole" },
           datasets: new List<string>{ datasetId.ToString()}
        )
    
  • W przypadku korzystania z dynamicznego zabezpieczeń na poziomie wiersza:

        var rlsidentity = new EffectiveIdentity(  // If dynamic RLS
           username: "username@contoso.com",
           roles: new List<string>{ "MyRoleWithCustomData" },
           customData: "SalesPersonA"
           datasets: new List<string>{ datasetId.ToString()}
        )
    

    Uwaga

    customData w tokenie osadzania nie może być większy niż 1024 znaki.

Użyj obowiązującej tożsamości, aby wygenerować token osadzania:

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

Użyj tokenu osadzania, aby osadzić raport w aplikacji lub witrynie internetowej. Raport będzie filtrować dane zgodnie z zastosowanymi zabezpieczeniami na poziomie wiersza w raporcie.