Generieren eines Einbettungstokens
GILT FÜR: Die App besitzt die Daten Der Benutzer besitzt die Daten
Token generieren ist eine REST-API, mit der Sie ein Token zum Einbetten eines Power BI-Berichts oder semantischen Modells in eine Web-App oder ein Portal generieren können. Sie kann ein Token für ein einzelnes Element oder für mehrere Berichte oder semantische Modelle generieren. Mithilfe des Tokens wird Ihre Anforderung für den Power BI-Dienst autorisiert.
Die API „Token generieren“ verwendet zum Generieren eines Tokens für einen einzelnen Benutzer eine einzelne Identität (Hauptbenutzer oder Dienstprinzipal), die von den Anmeldeinformationen des Benutzers in der App (effektive Identität) abhängig ist.
Nach erfolgreicher Authentifizierung wird der Zugriff auf die entsprechenden Daten gewährt.
Hinweis
Token generieren ist die neuere API, Version 2, die sowohl für Berichte und semantische Modelle als auch für einzelne oder mehrere Elemente funktioniert. Sie wird gegenüber den Legacy-APIs der Version 1 bevorzugt. Verwenden Sie für Dashboards und Kacheln Dashboards GenerateTokenInGroup und Kacheln GenerateTokenInGroup von V1.
Schützen Ihrer Daten
Wenn Sie Daten von mehreren Kunden verarbeiten, gibt es zwei Hauptansätze zum Sichern Ihrer Daten: Workspace-basierte Isolierung und sicherheitsbasierte Isolierung auf Zeilenebene. Sie finden einen detaillierten Vergleich zwischen beiden unter Dienstprinzipalprofile und Sicherheit auf Zeilenebene.
Wir empfehlen die Verwendung der Workspace-basierten Isolierung mit Profilen, aber wenn Sie den RLS-Ansatz verwenden möchten, lesen Sie den RLS-Abschnitt am Ende dieses Artikels.
Token-Berechtigungen und Sicherheit
In den APIs zum Generieren von Token werden die Tokenberechtigungen im Abschnitt GenerateTokenRequest definiert.
Zugriffsebene
Verwenden Sie den Parameter allowEdit, um dem Benutzer Anzeige- oder Bearbeitungsberechtigungen zu gewähren.
Fügen Sie dem Einbettungstoken die Arbeitsbereichs-ID hinzu, damit der Benutzer neue Berichte (entweder SaveAs oder CreateNew) in diesem Arbeitsbereich erstellen kann.
Sicherheit auf Zeilenebene
Bei Sicherheit auf Zeilenebene (Row Level Security, RLS) kann die verwendete Identität von der Identität des Dienstprinzipals oder Hauptbenutzers abweichen, die Sie zum Generieren des Tokens verwenden. Durch die Verwendung verschiedener Identitäten können Sie eingebettete Informationen für den Zielbenutzer anzeigen. Sie können den Benutzer beispielsweise in Ihrer Anwendung auffordern, sich anzumelden, und dann einen Bericht anzeigen, der nur dann Verkaufsinformationen enthält, wenn der angemeldete Benutzer ein Vertriebsmitarbeiter ist.
Wenn Sie RLS verwenden, kann unter Umständen die Identität des Benutzers (der Parameter EffectiveIdentity) fortgelassen werden. Wenn Sie den Parameter EffectiveIdentity nicht verwenden, hat das Token Zugriff auf die gesamte Datenbank. Diese Methode kann verwendet werden, um Benutzer*innen (z. B. Administrator*innen und Manager*innen) Zugriff zu erteilen, die berechtigt sind, das gesamte semantische Modell anzuzeigen. Diese Methode kann jedoch nicht in jedem Szenario angewendet werden. In der folgenden Tabelle sind die verschiedenen RLS-Typen aufgeführt, und es wird gezeigt, welche Authentifizierungsmethode verwendet werden kann, ohne die Identität eines Benutzers anzugeben.
Die Tabelle enthält auch Überlegungen und Einschränkungen zu den einzelnen RLS-Typen.
RLS-Typ | Kann ich ein Einbettungstoken generieren, ohne die geltende Benutzer-ID anzugeben? | Überlegungen und Einschränkungen |
---|---|---|
Cloudsicherheit auf Zeilenebene (Cloud-RLS) | ✔ Hauptbenutzer ✖ Dienstprinzipal |
|
RDL (paginierte Berichte) | ✖ Hauptbenutzer ✔ Dienstprinzipal |
Sie können mit einem Hauptbenutzer kein Einbettungstoken für RDL generieren. |
Lokale Liveverbindungen mit Analysis Services (AS) | ✔ Hauptbenutzer ✖ Dienstprinzipal |
Der Benutzer, der das Einbettungstoken generiert, benötigt zusätzlich eine der folgenden Berechtigungen: |
Liveverbindungen mit Azure Analysis Services (AS) | ✔ Hauptbenutzer ✖ Dienstprinzipal |
Die Identität des Benutzers, der das Einbettungstoken generiert, kann nicht außer Kraft gesetzt werden. Mithilfe benutzerdefinierter Daten können dynamisches RLS oder sichere Filter implementiert werden. Hinweis: Der Dienstprinzipal muss seine Objekt-ID als effektive Identität (RLS-Benutzername) angeben. |
Einmaliges Anmelden (SSO) | ✔ Hauptbenutzer ✖ Dienstprinzipal |
Mithilfe der Blobeigenschaft für die Identität können Sie eine explizite Identität (SSO) in einem effektiven Identitätsobjekt bereitstellen. |
SSO und Cloud-RLS | ✔ Hauptbenutzer ✖ Dienstprinzipal |
Sie müssen Folgendes angeben: |
Hinweis
Dienstprinzipale müssen immer die folgenden Informationen bereitstellen:
- Eine Identität für ein Element mit einem semantischen RLS-Modell.
- Für ein semantisches SSO-Modell eine effektive RLS-Identität mit der definierten (SSO-) Kontextidentität.
DirectQuery für semantische Power BI-Modelle
Gehen Sie wie folgt vor, um einen Power BI-Bericht einzubetten, der ein semantisches Modell mit einer Direct Query-Verbindung zu einem anderen semantischen Power BI-Modell aufweist:
- Legen Sie im Power BI-Portal den XMLA-Endpunkt auf Schreibgeschützt oder Schreibzugriff fest, wie im Abschnitt Lese-/Schreibzugriff für eine Premium-Kapazität aktivieren beschrieben. Sie müssen dies nur einmal pro Kapazität vornehmen.
- Generieren eines Einbettungstokens für mehrere Ressourcen
- Geben Sie alle Dataset-IDs in der Anforderung an.
- Legen Sie den
XmlaPermissions
für jedes semantische Modell in der Anforderung auf Schreibgeschützt fest. - Stellen Sie für jede Datenquelle, für die Einmaliges Anmelden (SSO) aktiviert ist, den Identitäts-Blob für die Datenquelle in der
DatasourceIdentity
bereit.
Verlängern von Token vor ihrem Ablauf
Für Token gilt ein Zeitlimit. Dies bedeutet, dass Sie nach dem Einbetten eines Power BI-Elements nur eine begrenzte Zeitspanne mit ihm interagieren können. Um Ihren Benutzern einen unterbrechungsfreien Betrieb zu ermöglichen, verlängern (oder aktualisieren) Sie das Token, bevor es abläuft.
Dashboards und Kacheln
Token generieren funktioniert für Berichte und semantische Modelle. Verwenden Sie zum Generieren eines Einbettungstokens für ein Dashboard oder eine Kachel die Dashboards GenerateTokenInGroup- oder Kacheln GenerateTokenInGroup-APIs der Version 1. Diese APIs generieren Token jeweils nur für ein Element. Sie können kein Token für mehrere Elemente generieren.
Für diese APIs:
Verwenden Sie den Parameter accessLevel, um die Zugriffsebene des Benutzers festzulegen.
Anzeigen: gewährt dem Benutzer Anzeigeberechtigungen.
Bearbeiten: gewährt dem Benutzer Anzeige- und Bearbeitungsberechtigungen (nur beim Generieren eines Einbettungstokens für einen Bericht).
Erstellen: gewährt dem Benutzer Berechtigungen zum Erstellen eines Berichts (gilt nur beim Generieren eines Einbettungstokens zum Erstellen eines Berichts). Sie müssen für das Erstellen von Berichten auch den Parameter datasetId angeben.
Verwenden Sie den booleschen Wert allowSaveAs, damit Benutzer den Bericht als neuen Bericht speichern können. Diese Einstellung ist standardmäßig auf false festgelegt und gilt nur, wenn ein Einbettungstoken für einen Bericht generiert wird.
Überlegungen und Einschränkungen
Aus Sicherheitsgründen ist die Lebensdauer des Einbettungstokens auf die verbleibende Lebensdauer des Microsoft Entra-Tokens festgelegt, das für den Aufruf der
GenerateToken
-API verwendet wird. Wenn Sie das gleiche Microsoft Entra-Token zum Generieren mehrerer Einbettungstoken verwenden, wird die Lebensdauer der generierten Einbettungstoken daher mit jedem Aufruf kürzer.Wenn sich das einzubettende semantische Modell und Element in zwei verschiedenen Arbeitsbereichen befinden, muss der Dienstprinzipal oder Hauptbenutzer mindestens Mitglied beider Arbeitsbereiche sein.
Sie können kein Einbettungstoken für Mein Arbeitsbereich erstellen.