Menyematkan laporan dengan database Azure Analysis Services (AAS)

Berlaku untuk:✅ Power BI analitik yang disematkan untuk pelanggan Anda (Data milik aplikasi)

Artikel ini menjelaskan cara menyematkan laporan Power BI yang menggunakan data yang disimpan di Azure Analysis Services (AAS) dalam skenario penyematan untuk pelanggan Anda. Artikel ini ditujukan untuk pengembang perangkat lunak independen (ISV), yang ingin menyematkan laporan dengan data AAS apakah database menerapkan keamanan tingkat baris (RLS)atau tidak.

Prasyarat

Anda memerlukan laporan dengan koneksi langsung ke database AAS, dengan atau tanpa RLS.

Keamanan dinamis - RLS

Jika Anda ingin laporan Anda menerapkan RLS dinamis, gunakan fungsi .customeData Karena Anda tidak dapat mengambil alih identitas yang efektif, sebaiknya buat peran baru dengan customData. Anda juga dapat menggunakan peran yang memiliki fungsi username atau userPrincipalName, jika menggantinya dengan customData.

Ikuti langkah-langkah ini untuk membuat peran baru dan menambahkan customData fungsi ke peran.

  1. Buat peran di server Analysis Services.

    Cuplikan layar pembuatan peran baru di server Analysis Services.

  2. Di pengaturan Umum, berikan Nama Peran dan atur izin database ke Baca saja.

    Cuplikan layar yang menunjukkan pemberian nama baru pada peran baru dan pengaturannya menjadi hanya-baca, dalam pengaturan umum pada server Analysis Services.

  1. Di pengaturan Keanggotaan, tambahkan pengguna yang akan memanggil Embed Token - Generate Token API. Jika Anda menggunakan perwakilan layanan yang bukan admin, tambahkan juga.

    Cuplikan layar menambahkan pengguna ke peran baru di server Analysis Services.

  2. Di pengaturan filter baris, atur kueri DAX Anda menggunakan fungsi CUSTOMDATA().

    Cuplikan layar memperlihatkan cara menambahkan fungsi customData ke kueri DAX dalam peran baru di server Analysis Services.

prinsipal layanan

Jika Anda menggunakan perwakilan layanan untuk menyematkan laporan, pastikan perwakilan layanan adalah admin server atau anggota peran AAS. Untuk memberikan izin admin AAS ke perwakilan layanan, lihat Menambahkan perwakilan layanan ke peran administrator server. Untuk menambahkan prinsipal layanan sebagai anggota peran, buka pengaturan Keanggotaan.

Gunakan ID objek perwakilan layanan sebagai nama pengguna (identitas efektif).

Migrasi Layanan Analisis

Anda dapat bermigrasi dari AAS ke Power BI Premium meskipun Anda memiliki laporan AAS yang disematkan. Laporan tersemat Anda tidak akan bermasalah selama migrasi, asalkan prinsipal yang memanggil API Embed Token - Generate Token merupakan anggota atau admin ruang kerja.

Catatan

Jika perwakilan layanan bukan admin, dan Anda tidak ingin menjadikannya admin ruang kerja saat bermigrasi, migrasikan model tersebut ke ruang kerja terpisah tempat Anda dapat memberinya izin admin.

Buat token embed

Gunakan API Generate Token untuk menghasilkan token sematan yang menggantikan identitas efektif.

Informasi yang diperlukan untuk menghasilkan token sematan bergantung pada bagaimana Anda terhubung ke Power BI (service principal atau master user), serta apakah database memiliki RLS.

Untuk menghasilkan token semat, berikan informasi berikut:

  • Nama pengguna (Opsional jika tidak ada RLS. Diperlukan untuk RLS) - Nama pengguna harus sama dengan pemanggil API (dalam hal ini, UPN pengguna Master). Jika database tidak menggunakan RLS, dan tidak ada nama pengguna yang disediakan, kredensial pengguna master akan digunakan.
  • Peran (diperlukan untuk RLS) - Laporan hanya menampilkan data jika identitas efektif merupakan anggota peran tersebut.

Contoh:

Tentukan identitas dan peran pengguna untuk salah satu dari tiga skenario berikut:

  • Jika RLS tidak diimplementasikan:

Anda tidak perlu menentukan identitas yang efektif.

  • Jika menggunakan RLS statis:

        var rlsidentity = new EffectiveIdentity(  //If static RLS
           username: "username@contoso.com", 
           roles: new List<string>{ "MyRole" },
           datasets: new List<string>{ datasetId.ToString()}
        )
    
  • Jika menggunakan RLS dinamis:

        var rlsidentity = new EffectiveIdentity(  // If dynamic RLS
           username: "username@contoso.com",
           roles: new List<string>{ "MyRoleWithCustomData" },
           customData: "SalesPersonA"
           datasets: new List<string>{ datasetId.ToString()}
        )
    

    Catatan

    customData dalam token semat tidak boleh lebih besar dari 1.024 karakter.

Gunakan identitas yang efektif untuk menghasilkan token semat:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();
    // 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 } // Only in cases of RLS
    );
    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
    return embedToken;
}

Gunakan token semat untuk menyematkan laporan ke dalam aplikasi atau situs web Anda. Laporan Anda memfilter data sesuai dengan RLS yang diterapkan dalam laporan.