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:
- Richten Sie die Umgebung ein, um den Bericht zu filtern
- Filtern Sie die Daten auf Bericht- oder Abfrageebene
- Ü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
Wählen Sie im Fenster Semantikmodelleigenschaften im linken Bereich Filter aus.
Wählen Sie im Dropdownmenü Ausdruck den Parameter aus, den Sie zum Filtern der Daten verwenden möchten.
Wählen Sie die Funktionsschaltfläche Wert aus.
Wählen Sie im Fenster Ausdruck in der Liste Kategorie die Option Integrierte Felder aus.
Wählen Sie in der Liste Element die Option UserID aus, und klicken Sie auf OK.
Vergewissern Sie sich, dass im Fenster Semantikmodelleigenschaften der Ausdruck Ihr ausgewählter Parameter = UserID lautet, und wählen Sie OK aus.
Verwenden einer Abfrage
Wählen Sie im Fenster Semantikmodelleigenschaften im linken Navigationsbereich Parameter und dann Hinzufügen aus.
Geben Sie im Feld Parametername den Wert @UserID ein, und fügen Sie im Feld Parameterwert den Eintrag [&UserID] hinzu.
Wählen Sie im linken Bereich Abfrage aus, fügen Sie in der Abfrage den Parameter UserID als Teil der Abfrage hinzu, und wählen Sie OK aus.
Hinweis
Im folgenden Screenshot wird der Farbparameter als Beispiel verwendet (WHERE FinalTable.Color = @UserID)). Bei Bedarf können Sie eine komplexere Abfrage erstellen.
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 Mitwirkender oder anzeigender Benutzer 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 Berechtigungen vom Typ Mitglieder für den Arbeitsbereich verfügen (die Berechtigungen von anzeigenden Benutzern oder Mitwirkenden reichen nicht aus).