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.
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
CUSTOMDATA()
fungsi .
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.
- 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 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.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk