Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
Buat peran di server Analysis Services.
Di pengaturan Umum, berikan Nama Peran dan atur izin database ke Baca saja.
Di pengaturan Keanggotaan, tambahkan pengguna yang akan memanggil Embed Token - Generate Token API. Jika Anda menggunakan perwakilan layanan yang bukan admin, tambahkan juga.
Di pengaturan filter baris, atur kueri DAX Anda menggunakan fungsi
CUSTOMDATA().
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.
- Pengguna master menyematkan token
- Perwakilan layanan atau profil perwakilan layanan menyematkan token
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
customDatadalam 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.