Bagikan melalui


Menyematkan laporan dengan RLS

BERLAKU UNTUK: Aplikasi memiliki data Milik pengguna

Artikel ini menjelaskan cara menyematkan konten Power BI yang menggunakan RLS ke dalam aplikasi Power BI standar yang memiliki aplikasi data.

Prasyarat

Untuk penjelasan terperinci tentang cara menyiapkan RLS, lihat Keamanan tingkat baris (RLS) dengan Power BI.

Saat Anda menentukan peran RLS, perlu diingat bahwa ekspresi DAX yang Anda gunakan menentukan apakah model RLS statis atau dinamis.

Kapan menggunakan keamanan statis dan dinamis

Keamanan statis menggunakan nilai tetap dalam filter DAX untuk menentukan setiap peran. Sangat mudah untuk diterapkan tetapi sulit untuk dipertahankan ketika ada banyak pengguna atau organisasi yang terlibat.

Keamanan statis berfungsi paling baik untuk ISV yang melayani satu atau beberapa pelanggan besar di mana setiap departemen perlu mengakses data yang berbeda.

Keamanan dinamis menggunakan fungsi DAX (username() atau userprincipalname()) untuk menentukan peran. Keamanan dinamis memberikan lebih banyak fleksibilitas dan memungkinkan Anda mengelola data menggunakan lebih sedikit peran dan lebih sedikit pemeliharaan.

Keamanan statis

Dengan peran statis, Anda meneruskan peran ke Power BI saat membuat token semat, dan pengguna melihat data sesuai dengan peran tersebut. Untuk membuat peran keamanan statis, masukkan nilai tetap di filter DAX.

Misalnya, Anda dapat menentukan peran AS Timur sebagai [Region] = "East"

Cuplikan layar memperlihatkan cara menentukan peran R L S statis.

Katakanlah john@contoso.com adalah pengguna aplikasi Anda. Anda ingin memberi John akses ke data dari peran AS Timur. Untuk menyematkan laporan untuk john@contoso.com, buat token sematan menggunakan peran AS Timur. Data yang dihasilkan difilter untuk [Region] = "East".

Catatan

Saat membuat token sematan, Anda perlu menyediakan nama pengguna, tetapi nama pengguna dapat berupa string apa pun. Peran statis memiliki nilai tetap yang tidak bergantung pada nama pengguna, jadi setelah ISV menentukan peran pengguna dan meneruskannya ke token semat, data difilter sesuai dengan peran tersebut terlepas dari nama pengguna apa yang diteruskan.

Keamanan dinamis

Keamanan dinamis menggunakan fungsi DAX (username() atau userprincipalname()) untuk menentukan peran.

Dalam skenario data pengguna, model RLS otomatis memfilter data berdasarkan peran pengguna tertentu. Dengan aplikasi memiliki data, Power BI tidak mengetahui nama pengguna pelanggan ISV, sehingga Anda dapat menggunakan fungsi username() untuk memfilter data secara dinamis.

Buat peran di Power BI Desktop menggunakan fungsi username(). Misalnya, Anda dapat membuat peran yang disebut CountryDynamic dan mendefinisikannya sebagai [CountryRegionCode] = username()

Cuplikan layar memperlihatkan cara membuat peran R L S dinamis.

Katakanlah Anda ingin memberi pengguna Anda, jane@contoso.com, akses ke data untuk Prancis. Saat membuat token sematan untuk jane@contoso.com, Anda meneruskan string Prancis sebagai nama pengguna dalam peran CountryDynamic. Data Anda difilter menurut [CountryRegionCode] = Prancis.

{
    "accessLevel": "View",
    "identities": [
        {
            "username": "France",
            "roles": [ "CountryDynamic"],
            "datasets": [ "fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc" ]
        }
    ]
}

Saat menggunakan keamanan dinamis dalam skenario ini, Anda hanya memerlukan satu peran untuk semua wilayah. Nama wilayah digunakan sebagai identitas yang efektif.

Membuat token sematan

Saat Anda siap untuk menyematkan laporan ke dalam aplikasi, Anda perlu membuat token yang disematkan. Untuk menghasilkan token menggunakan Embed Token API, teruskan informasi berikut ke API.

  • username (wajib) – Jika peran bersifat dinamis, string nama pengguna digunakan sebagai filter. Untuk peran statis, nama pengguna tidak memengaruhi RLS dan dapat berupa string apa pun sama sekali. Hanya satu nama pengguna yang dapat dicantumkan.
  • peran (wajib) – Peran yang digunakan saat menerapkan aturan Keamanan Tingkat Baris. Jika melewati lebih dari satu peran, mereka harus diteruskan sebagai array string.
  • himpunan data (wajib) – Himpunan data yang berlaku untuk item yang Anda sematkan.

Anda sekarang dapat menyematkan laporan ke dalam aplikasi Anda. Laporan memfilter data sesuai dengan RLS yang diterapkan.

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

       // Defines the user identity and roles.
        var rlsIdentity = new EffectiveIdentity(
            username: "France",
            roles: new List<string>{ "CountryDynamic" },
            datasets: datasetIds.Select(id => id.ToString()).ToList());
        );
       
        // 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;
    }

Pertimbangan dan batasan

  • Bergantung pada penyiapan Anda, Anda mungkin harus mengambil beberapa langkah sebelum Anda dapat menghasilkan token semat. Untuk informasi tentang berbagai skenario, lihat Menyematkan laporan yang menggunakan fitur keamanan.
  • Pengguna yang menghasilkan token semat harus menjadi anggota atau admin di kedua ruang kerja (ruang kerja himpunan data dan ruang kerja laporan).
  • Saat menghasilkan token semat, Anda perlu memberikan nama pengguna dan peran. Jika tidak, salah satu peristiwa berikut akan terjadi, tergantung pada apakah token dihasilkan oleh perwakilan layanan atau pengguna master:
    • Untuk perwakilan layanan, pembuatan token gagal.
    • Untuk pengguna master, pembuatan token berhasil tetapi data tidak difilter (semua data dikembalikan).

Pertanyaan Lainnya? Coba Komunitas Power BI.