Implementieren der Sicherheit auf Zeilenebene in eingebetteten paginierten Berichten

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

In diesem Artikel wird erläutert, wie Sie in Ihrer App Owns Data-Anwendung (die Anwendung besitzt die Daten) einen paginierten Bericht einbetten, der RLS (Row-Level Security, Sicherheit auf Zeilenebene) verwendet.

Hinweis

Dieser Artikel ist nur für Kunden mit einem „App Owns Data“-Szenario (die Anwendung besitzt die Daten) relevant.

So verwenden Sie RLS für Ihre paginierten Berichte:

  1. Richten Sie die Umgebung ein, um den Bericht zu filtern
  2. Filtern Sie die Daten auf Bericht- oder Abfrageebene
  3. Übergeben Sie den konfigurierten Parameter unter Verwendung eines Einbettungstokens

Voraussetzungen

  • In diesem Artikel wird davon ausgegangen, dass Sie wissen, wie Sie einen paginierten Power BI-Bericht einbetten. Sie erfahren, wie Sie das Einbettungstoken generieren, damit im Bericht nur die Daten angezeigt werden, auf die die*der Benutzer*in zugreifen darf.

  • Paginierte Berichte werden nicht mit der Power BI-Engine (Analysis Services), sondern mithilfe der SQL Server Reporting Services-Engine erstellt. Die RLS-Filterung wird also in Power BI Report Builder eingerichtet.

Einrichten der Umgebung

Zum Anwenden der Sicherheit auf Zeilenebene auf einen paginierten Power BI-Bericht verwenden Sie das integrierte Feld UserID, um einen Parameter zuzuweisen. Dieser Parameter wird zum Filtern oder Abfragen Ihrer Daten verwendet.

Übergeben Sie UserID anschließend an die API zum Einbetten/Generieren von Token, um das Einbettungstoken abzurufen.

Verwenden von UserID als Filter auf Berichts- oder Abfrageebene

Sie können UserID als Filter oder in einer Abfrage für die Datenquelle verwenden.

Filtern der Daten

  1. Wählen Sie im Fenster Semantikmodelleigenschaften im linken Bereich Filter aus.

    Screenshot of the Power BI Report Builder filter.

  2. Wählen Sie im Dropdownmenü Ausdruck den Parameter aus, den Sie zum Filtern der Daten verwenden möchten.

    Screenshot shows the value Color selected from the Expression menu.

  3. Klicken Sie auf die Funktionsschaltfläche Wert.

    Power BI Report Builder value

  4. Wählen Sie im Fenster Ausdruck in der Liste Kategorie die Option Integrierte Felder aus.

    Screenshot shows the Expression window with Built-in Fields selected as Category and ExecutionTime selected as Item.

  5. Wählen Sie in der Liste ElementUserID aus, und klicken Sie auf OK.

    Power BI Report Builder UserID

  6. Vergewissern Sie sich, dass im Fenster Semantikmodelleigenschaften der Ausdruck Ihr ausgewählter Parameter = UserID lautet, und klicken Sie auf OK.

    Power BI Report Builder semantic model properties

Verwenden einer Abfrage

  1. Wählen Sie im Fenster Semantikmodelleigenschaften im linken Navigationsbereich Parameter aus, und klicken Sie auf Hinzufügen.

    Power BI Report Builder parameters

  2. Geben Sie im Feld Parametername den Wert @UserID ein, und fügen Sie im Feld Parameterwert den Eintrag [@UserID] hinzu.

    Power BI Report Builder parameter name

  3. Wählen Sie im linken Bereich Abfrage aus, fügen Sie in der Abfrage den Parameter UserID als Teil der Abfrage hinzu, und klicken Sie auf OK.

    Hinweis

    Im folgenden Screenshot wird der Farbparameter als Beispiel verwendet (WHERE FinalTable.Color = @UserID)). Bei Bedarf können Sie eine komplexere Abfrage erstellen.

    Power BI Report Builder queries edit

Generieren eines Einbettungstokens

Wenn Sie einen paginierten Bericht für Ihre Kunden einbetten, verwenden Sie die API Reports GenerateTokenInGroup, um das Einbettungstoken abzurufen. Dieses Token kann auch verwendet werden, um einige der Daten aus dem paginierten Bericht herauszufiltern.

Token können nur mithilfe eines Dienstprinzipals generiert werden. Hauptbenutzer*innen können kein Token generieren. Der Dienstprinzipal muss mindestens über Mitgliederberechtigungen für den Arbeitsbereich im Power BI-Dienst verfügen. (Wenn der Dienstprinzipal Mitwirkende*r oder anzeigende*r Benutzer*in ist, kann er kein Token generieren).

Zum Generieren eines Tokens weisen Sie das Feld username mit den Informationen zu, die angezeigt werden sollen. Wenn Sie z. B. in einem paginierten Bericht mit einem Farbparameter grün in das Feld username eingeben, werden die eingebetteten Daten durch das Einbettungstoken so eingeschränkt, dass nur die Daten angezeigt werden, die in der Farbspalte den Wert grün aufweisen.

{
 "reports": [
 {
  "id": "8d57615e-cfed-4d60-bd21-7dc05727193c"
 }
 ],
 "identities": [
 {
  "username": "green",
  "reports": [
  "8d57615e-cfed-4d60-bd21-7dc05727193c"
  ]
 }
 ]
}

Hinweis

Wenn Sie ein Einbettungstoken generieren, ohne eine Benutzer-ID anzugeben, wird die Objekt-ID des Dienstprinzipals verwendet.

Überlegungen und Einschränkungen

  • Hauptbenutzer*innen werden bei paginierten Berichten für Szenarien vom Typ Einbetten für Ihre Kunden nicht unterstützt. Bei Szenarien vom Typ Einbetten für Ihre Organisation werden Hauptbenutzer*innen unterstützt.
  • Der Dienstprinzipal muss mindestens über die Mitgliederberechtigungen für den Arbeitsbereich verfügen (die Berechtigungen von anzeigenden Benutzer*innen oder Mitwirkenden reichen nicht aus).

Generieren eines Einbettungstokens