Freigeben über


Einbetten eines Berichts auf einer lokalen SSAS-Instanz (SQL Server Analysis Services)

GILT FÜR: Die App besitzt die Daten Der Benutzer besitzt die Daten

In diesem Artikel wird erläutert, wie Power BI-Inhalte mit einer lokalen Analysis Services Tabular Model Live-Verbindung in eine Standard-Power BI-App eingebettet werden, die datenanwendung besitzt. Dieser Artikel gilt für alle SSAS-Modelle mit Liveverbindung, unabhängig davon, ob sie RLS implementieren.

In diesem Szenario befindet sich die Datenbank im SSAS-Modell (lokal), und die Power BI-Engine stellt über ein Gateway eine Verbindung mit ihr her. Die Sicherheitsrollen (RLS) und Berechtigungen (sofern vorhanden) sind im SSAS-Modell definiert und nicht in Power BI Desktop.

Zielgruppe

Dieser Artikel richtet sich hauptsächlich an ISVs, die bereits über ein Setup mit einer lokalen (SSAS-)Datenbank (mit oder ohne RLS) verfügen und Inhalte direkt von dort einbetten möchten.

ISV-Setup

Lokale Sicherheit auf Zeilenebene ist nur mit einer Liveverbindung verfügbar. Sie können jedoch eine Liveverbindung mit jeder Datenbank herstellen, unabhängig davon, ob sie RLS implementiert. Dies umfasst u. a.:

  • Datenbanken ohne eingerichtete RLS-Rollen
  • Datenbanken mit Mitgliedern, die zu mindestens einer Rolle gehören
  • Datenbanken mit statischen oder dynamischen Sicherheitsrollen

Um einen Bericht aus einem SSAS-Modell einzubetten, müssen Sie die folgenden Aktionen ausführen:

  1. Einrichten des Gateways
  2. Erstellen einer Liveverbindung
  3. Generieren eines Einbettungstokens

Einrichten des Gateways

Hinzufügen einer Datenquellenverbindung mit dem SSAS-Gateway

Geben Sie den Namen und Typ der Datenquelle, den Server, die Datenbank sowie einen Benutzernamen und ein Kennwort ein, die in Active Directory bekannt sind.

Weitere Informationen zum Erstellen und Verwalten eines Gateways finden Sie unter Hinzufügen oder Entfernen einer Gatewaydatenquelle.

Bereitstellen von Gatewayberechtigungen für den Dienstprinzipal oder Hauptbenutzer*innen

Benutzer*innen, die das Einbettungstoken generieren, benötigen zusätzlich eine der folgenden Berechtigungen:

  • Administratorberechtigungen für das Gateway

  • Berechtigung für Identitätswechsel in der Datenquelle (ReadOverrideEffectiveIdentity)

    Bei Benutzer*innen mit der Berechtigung „Identität wechseln“ (Außerkraftsetzung) wird ein Schlüsselsymbol neben ihrem Namen angezeigt.

    Screenshot eines Gatewaymitglieds mit einem Schlüsselsymbol neben dem Namen

Befolgen Sie diese Anweisungen, um den Hauptbenutzer*innen, dem Dienstprinzipal oder dem Dienstprinzipalprofil Gatewayberechtigungen zu erteilen.

Zuordnen von Benutzernamen

Wenn die Benutzernamen im lokalen Verzeichnis und im Microsoft Entra-Verzeichnis unterschiedlich sind und Sie Daten im Portal anzeigen möchten, müssen Sie eine Benutzerzuordnungstabelle erstellen, die alle Benutzer*innen oder Rollen in Microsoft Entra ID Benutzer*innen in der lokalen Datenbank zuordnet. Anweisungen zum Zuordnen von Benutzernamen finden Sie unter Manuelles Neuzuordnen von Benutzernamen.

Weitere Informationen finden Sie unter Zuordnen von Benutzernamen zu Analysis Services-Datenquellen.

Erstellen einer Liveverbindung

Nachdem die Umgebung eingerichtet wurde, stellen Sie eine Liveverbindung zwischen Power BI Desktop und dem SQL-Server her und erstellen den Bericht.

  1. Starten Sie Power BI Desktop, und wählen Sie Daten abrufen>Datenbank aus.

  2. Wählen Sie aus der Liste der Datenquellen die SQL Server Analysis Services-Datenbank, und klicken Sie auf Verbinden.

    Verbinden mit der SQL Server Analysis Services-Datenbank

  3. Geben Sie die Details zu Ihrer Analysis Services-Tabelleninstanz ein, und wählen Sie Live verbinden aus. Wählen Sie dann OK aus.

    Screenshot mit Analysis Services-Details

Generieren eines Einbettungstokens

Um Ihren Bericht im Szenario Einbetten für Ihre Kund*innen einzubetten, generieren Sie ein Einbettungstoken, das die effektive Identität an Power BI übergibt. Alle Liveverbindungen mit AS-Engines benötigen auch dann eine effektive Identität, wenn RLS nicht implementiert ist.

Wenn RLS nicht eingerichtet wurde, haben nur Administrator*innen Zugriff auf die Datenbank. Aus diesem Grund sollten Sie als effektive Identität eine*n Administrator*in verwenden.

Die zum Generieren eines Einbettungstokens erforderlichen Informationen hängen davon ab, ob Sie über einen Dienstprinzipal oder Hauptbenutzer*innen mit Power BI verbunden sind, sowie davon, ob für die Datenbank RLS eingerichtet ist.

Um das Einbettungstoken zu generieren, geben Sie die folgenden Informationen an:

  • Benutzername (optional, wenn kein RLS; erforderlich mit RLS): ein gültiger Benutzername, der von der SSAS erkannt und als effektive Identität verwendet wird. Wenn die Datenbank keine RLS verwendet und kein Benutzername bereitgestellt wird, werden die Anmeldeinformationen des Masterbenutzers verwendet.
  • Rolle (für RLS erforderlich): Der Bericht zeigt nur Daten an, wenn die effektive Identität ein Mitglied der Rolle ist.

Beispiel:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();

    // Define the user identity and roles. Use one of the following:

    var rlsidentity = new EffectiveIdentity(  //If no RLS
       username: "Domain\\Username", // can also be username@contoso.com
       datasets: new List<string>{ datasetId.ToString()}
    )

    var rlsidentity = new EffectiveIdentity(  // If RLS
       username: "username@contoso.com",
       roles: new List<string>{ "MyRole" },
       datasets: new List<string>{ datasetId.ToString()}
    )
    
    // 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;
}

Jetzt können Sie Ihren Bericht in Ihre App einbetten. Die Daten im Bericht werden entsprechend den Berechtigungen der Benutzer*innen gefiltert, die auf den Bericht zugreifen.

Überlegungen und Einschränkungen

CustomData wird nicht unterstützt.

Generieren eines Einbettungstokens