Bagikan melalui


Menyematkan laporan dengan database Azure Analysis Services (AAS)

BERLAKU UNTUK: Aplikasi memiliki data Milik pengguna

Artikel ini menjelaskan cara menyematkan laporan Power BI yang menggunakan data yang disimpan di Azure Analysis Services (AAS), dalam semat untuk skenario 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 akan 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 username fungsi atau userPrincipalName , jika Anda menggantinya dengan customData.

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

  1. Buat peran di server Analysis Services.

    A screenshot of creating a new role in Analysis Services server.

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

    A screenshot of giving a new role a new name and setting it to read only, in the general settings in Analysis Services server.

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

    A screenshot of adding users to a new role in Analysis Services server.

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

    A screenshot showing how to add the function customData to the DAX query in a new role in Analysis Services server.

Perwakilan 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 perwakilan layanan sebagai anggota peran, buka Pengaturan keanggotaan.

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

Migrasi Analysis Service

Anda dapat bermigrasi dari AAS ke Power BI Premium meskipun Anda memiliki laporan AAS yang disematkan. Laporan tersemat Anda tidak akan rusak selama migrasi, selama prinsipal yang memanggil Embed Token - Generate Token API, adalah 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.

Membuat token sematan

Gunakan API Buat Token untuk menghasilkan token semat yang mengambil alih identitas yang efektif.

Informasi yang diperlukan untuk menghasilkan token semat bergantung pada cara Anda tersambung ke Power BI (perwakilan layanan atau pengguna master), dan juga jika 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 akan menampilkan data jika identitas yang efektif adalah anggota peran.

Contoh:

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

  • Jika RLS tidak diimplementasikan:

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 akan memfilter data sesuai dengan RLS yang diterapkan dalam laporan.