Mengembangkan aplikasi multitenansi yang dapat diskalakan dengan penyematan Power BI
Artikel ini menjelaskan cara mengembangkan aplikasi multitenansi yang menyematkan konten Power BI sambil mencapai tingkat skalabilitas, performa, dan keamanan tertinggi. Dengan merancang dan menerapkan aplikasi dengan profil perwakilan layanan, Anda dapat membuat dan mengelola solusi multipenyewa yang terdiri dari puluhan ribu penyewa pelanggan yang dapat mengirimkan laporan kepada audiens lebih dari 100.000 pengguna.
Profil perwakilan layanan adalah fitur yang memudahkan Anda mengelola konten organisasi di Power BI dan menggunakan kapasitas Anda secara lebih efisien. Namun, menggunakan profil perwakilan layanan dapat menambahkan kompleksitas ke desain aplikasi Anda. Oleh karena itu, Anda hanya boleh menggunakannya ketika ada kebutuhan untuk mencapai skala yang signifikan. Sebaiknya gunakan profil perwakilan layanan saat Anda memiliki banyak ruang kerja dan lebih dari 1.000 pengguna aplikasi.
Catatan
Nilai penggunaan profil perwakilan layanan meningkat karena kebutuhan Anda untuk menskalakan meningkat serta kebutuhan Anda untuk mencapai tingkat keamanan dan isolasi penyewa tertinggi.
Anda dapat mencapai penyematan Power BI dengan menggunakan dua skenario penyematan yang berbeda: Sematkan untuk organisasi Anda dan Sematkan untuk pelanggan Anda.
Sematkan untuk skenario organisasi Anda berlaku saat audiens aplikasi terdiri dari pengguna internal . Pengguna internal memiliki akun organisasi dan harus mengautentikasi dengan ID Microsoft Entra. Dalam skenario ini, Power BI adalah software-as-a-service (SaaS). Terkadang disebut sebagai Pengguna memiliki data.
Sematkan untuk skenario pelanggan Anda berlaku saat audiens aplikasi terdiri dari pengguna eksternal . Aplikasi ini bertanggung jawab untuk mengautentikasi pengguna. Untuk mengakses konten Power BI, aplikasi bergantung pada identitas penyematan (perwakilan layanan Microsoft Entra atau akun pengguna master) untuk mengautentikasi dengan Microsoft Entra. Dalam skenario ini, Power BI adalah platform-as-a-service (PaaS). Terkadang disebut sebagai Aplikasi memiliki data.
Catatan
Penting untuk dipahami bahwa fitur profil perwakilan layanan dirancang untuk digunakan dengan Sematan untuk skenario pelanggan Anda. Itu karena skenario ini menawarkan ISV dan organisasi perusahaan kemampuan untuk menyematkan skala yang lebih besar ke sejumlah besar pengguna dan ke sejumlah besar penyewa pelanggan.
Pengembangan aplikasi multitenansi
Jika Anda terbiasa dengan Microsoft Entra, kata penyewa mungkin mengarahkan Anda memikirkan penyewa Microsoft Entra. Namun, konsep penyewa berbeda dalam konteks membangun solusi multipenyewa yang menyematkan konten Power BI. Dalam konteks ini, penyewa pelanggan dibuat atas nama setiap pelanggan tempat aplikasi menyematkan konten Power BI dengan menggunakan Sematkan untuk skenario pelanggan Anda. Anda biasanya menyediakan setiap penyewa pelanggan dengan membuat satu ruang kerja Power BI.
Untuk membuat solusi multitenansi yang dapat diskalakan, Anda harus dapat mengotomatiskan pembuatan penyewa pelanggan baru. Penyediaan penyewa pelanggan baru biasanya melibatkan penulisan kode yang menggunakan Power BI REST API untuk membuat ruang kerja Power BI baru, membuat model semantik dengan mengimpor file Power BI Desktop (.pbix), memperbarui parameter sumber data, mengatur kredensial sumber data, dan menyiapkan refresh model semantik terjadwal. Diagram berikut ini memperlihatkan bagaimana Anda bisa menambahkan item Power BI, seperti laporan dan model semantik, ke ruang kerja untuk menyiapkan penyewa pelanggan.
Saat Anda mengembangkan aplikasi yang menggunakan Sematkan untuk skenario pelanggan Anda, Dimungkinkan untuk melakukan panggilan Power BI REST API dengan menggunakan identitas penyematan yang merupakan akun pengguna master atau perwakilan layanan. Sebaiknya gunakan perwakilan layanan untuk aplikasi produksi. Ini memberikan keamanan tertinggi dan karena alasan ini, ini adalah pendekatan yang direkomendasikan oleh Microsoft Entra. Selain itu, ini mendukung otomatisasi dan skala yang lebih baik dan ada lebih sedikit overhead manajemen. Namun, diperlukan hak admin Power BI untuk menyiapkan dan mengelola.
Dengan menggunakan perwakilan layanan, Anda dapat menghindari masalah umum yang terkait dengan akun pengguna master, seperti kesalahan autentikasi di lingkungan tempat pengguna diharuskan masuk dengan menggunakan autentikasi multifaktor (MFA). Menggunakan perwakilan layanan juga konsisten dengan gagasan bahwa Sematkan untuk skenario pelanggan Anda didasarkan pada penyematan konten Power BI dengan menggunakan pola pikir PaaS dibandingkan dengan pola pikir SaaS.
Batasan 1.000 ruang kerja
Saat Anda merancang lingkungan multitenansi yang mengimplementasikan Sematan untuk skenario pelanggan Anda, pastikan untuk mempertimbangkan bahwa identitas penyematan tidak dapat diberikan akses ke lebih dari 1.000 ruang kerja. layanan Power BI memberlakukan batasan ini untuk memastikan performa yang baik saat melakukan panggilan REST API. Alasan pembatasan ini terkait dengan bagaimana Power BI mempertahankan metadata terkait keamanan untuk setiap identitas.
Power BI menggunakan metadata untuk melacak ruang kerja dan item ruang kerja yang dapat diakses identitas. Akibatnya, Power BI harus mempertahankan daftar kontrol akses (ACL) terpisah untuk setiap identitas dalam subsistem otorisasinya. Saat identitas melakukan panggilan REST API untuk mengakses ruang kerja, Power BI harus melakukan pemeriksaan keamanan terhadap ACL identitas untuk memastikannya diotorisasi. Waktu yang diperlukan untuk menentukan apakah ruang kerja target berada di dalam ACL meningkat secara eksponensial saat jumlah ruang kerja meningkat.
Catatan
Power BI tidak memberlakukan batasan 1.000 ruang kerja melalui kode. Jika Anda mencoba, Anda menambahkan identitas penyematan ke lebih dari 1.000 ruang kerja, dan panggilan REST API masih akan berhasil dijalankan. Namun, aplikasi Anda akan pindah ke status yang tidak didukung , yang mungkin memiliki implikasi jika Anda mencoba meminta bantuan dari dukungan Microsoft.
Pertimbangkan skenario di mana dua aplikasi multi-penyewa masing-masing telah disiapkan untuk menggunakan satu perwakilan layanan. Sekarang pertimbangkan bahwa aplikasi pertama telah membuat 990 ruang kerja sementara aplikasi kedua telah membuat 1.010 ruang kerja. Dari perspektif dukungan, aplikasi pertama berada dalam batas yang didukung sementara aplikasi kedua tidak.
Sekarang bandingkan kedua aplikasi ini murni dari perspektif performa. Tidak ada banyak perbedaan karena ACL untuk kedua perwakilan layanan telah membiarkan metadata untuk ACL mereka tumbuh hingga titik di mana ACL akan menurunkan performa ke beberapa derajat.
Berikut adalah pengamatan utama: Jumlah ruang kerja yang dibuat oleh perwakilan layanan memiliki dampak langsung pada performa dan skalabilitas. Perwakilan layanan yang merupakan anggota dari 100 ruang kerja akan menjalankan panggilan REST API lebih cepat daripada perwakilan layanan yang merupakan anggota dari 1.000 ruang kerja. Demikian juga, perwakilan layanan yang merupakan anggota hanya 10 ruang kerja akan menjalankan panggilan REST API lebih cepat daripada perwakilan layanan yang merupakan anggota dari 100 ruang kerja.
Penting
Dari perspektif performa dan skalabilitas, jumlah ruang kerja yang optimal di mana perwakilan layanan adalah anggota adalah tepat satu.
Mengelola isolasi untuk model semantik dan kredensial sumber data
Aspek penting lainnya saat merancang aplikasi multitenansi adalah mengisolasi penyewa pelanggan. Sangat penting bahwa pengguna dari satu penyewa pelanggan tidak melihat data milik penyewa pelanggan lain. Oleh karena itu, Anda harus memahami cara mengelola kepemilikan model semantik dan kredensial sumber data.
Kepemilikan model semantik
Setiap model semantik Power BI memiliki satu pemilik, yang dapat berupa akun pengguna atau perwakilan layanan. Kepemilikan model semantik diperlukan untuk menyiapkan refresh terjadwal dan mengatur parameter model semantik.
Tip
Dalam layanan Power BI, Anda dapat menentukan siapa pemilik model semantik dengan membuka pengaturan model semantik.
Jika perlu, Anda dapat mentransfer kepemilikan model semantik ke akun pengguna atau perwakilan layanan lain. Anda dapat melakukannya di layanan Power BI, atau dengan menggunakan operasi REST APITakeOver
. Saat Anda mengimpor file Power BI Desktop untuk membuat model semantik baru dengan menggunakan perwakilan layanan, perwakilan layanan secara otomatis ditetapkan sebagai pemilik model semantik.
Kredensial sumber data
Untuk menyambungkan model semantik ke sumber data yang mendasar, pemilik model semantik harus mengatur kredensial sumber data. Kredensial sumber data dienkripsi dan di-cache oleh Power BI. Sejak saat itu, Power BI menggunakan kredensial tersebut untuk mengautentikasi dengan sumber data yang mendasarinya saat menyegarkan data (untuk mengimpor tabel penyimpanan) atau menjalankan kueri passthrough (untuk tabel penyimpanan DirectQuery).
Kami menyarankan agar Anda menerapkan pola desain umum saat menyediakan penyewa pelanggan baru. Anda dapat menjalankan serangkaian panggilan REST API dengan menggunakan identitas perwakilan layanan:
- Buat ruang kerja baru.
- Kaitkan ruang kerja baru dengan kapasitas khusus.
- Impor file Power BI Desktop untuk membuat model semantik.
- Atur info masuk sumber model semantik untuk model semantik tersebut.
Setelah menyelesaikan panggilan REST API ini, perwakilan layanan akan menjadi admin ruang kerja baru dan pemilik model semantik dan kredensial sumber data.
Penting
Ada kesalahpahaman umum bahwa kredensial sumber data model semantik dilingkup tingkat ruang kerja. Itu tidak benar. Kredensial sumber data dilingkupkan ke perwakilan layanan (atau akun pengguna) dan cakupan tersebut meluas ke semua ruang kerja Power BI di penyewa Microsoft Entra.
Dimungkinkan bagi perwakilan layanan untuk membuat kredensial sumber data yang dibagikan oleh model semantik di ruang kerja yang berbeda di seluruh penyewa pelanggan, seperti yang ditunjukkan dalam diagram berikut.
Saat kredensial sumber data dibagikan oleh model semantik milik penyewa pelanggan yang berbeda, penyewa pelanggan tidak sepenuhnya terisolasi.
Merancang strategi sebelum profil perwakilan layanan
Memahami strategi desain sebelum fitur profil perwakilan layanan tersedia dapat membantu Anda menghargai kebutuhan akan fitur tersebut. Sebelum waktu itu, pengembang membangun aplikasi multitenancy dengan menggunakan salah satu dari tiga strategi desain berikut:
- Perwakilan layanan tunggal
- Kumpulan perwakilan layanan
- Satu perwakilan layanan per ruang kerja
Ada kekuatan dan kelemahan yang terkait dengan masing-masing strategi desain ini.
Strategi desain perwakilan layanan tunggal memerlukan pembuatan sekali-off pendaftaran aplikasi Microsoft Entra. Oleh karena itu, ini melibatkan overhead yang kurang administratif daripada dua strategi desain lainnya karena tidak ada persyaratan untuk membuat lebih banyak pendaftaran aplikasi Microsoft Entra. Strategi ini juga paling mudah disiapkan karena tidak memerlukan penulisan kode tambahan yang mengalihkan konteks panggilan antar perwakilan layanan saat melakukan panggilan REST API. Namun, masalah dengan strategi desain ini adalah tidak menskalakan. Ini hanya mendukung lingkungan multitenansi yang dapat tumbuh hingga 1.000 ruang kerja. Selain itu, performa dipastikan akan turun karena perwakilan layanan diberikan akses ke sejumlah besar ruang kerja. Ada juga masalah dengan isolasi penyewa pelanggan karena perwakilan layanan tunggal menjadi pemilik setiap model semantik dan semua kredensial data di semua penyewa pelanggan.
Strategi desain pengumpulan perwakilan layanan umumnya digunakan untuk menghindari batasan 1.000 ruang kerja. Ini memungkinkan aplikasi untuk menskalakan ke sejumlah ruang kerja dengan menambahkan jumlah perwakilan layanan yang benar ke kumpulan. Misalnya, kumpulan lima perwakilan layanan memungkinkan untuk meningkatkan skala hingga 5.000 ruang kerja; kumpulan 80 perwakilan layanan memungkinkan untuk menskalakan hingga 80.000 ruang kerja, dan sebagainya. Namun, meskipun strategi ini dapat menskalakan ke sejumlah besar ruang kerja, strategi ini memiliki beberapa kelemahan. Pertama, perlu menulis kode tambahan dan menyimpan metadata untuk memungkinkan peralihan konteks antara perwakilan layanan saat melakukan panggilan REST API. Kedua, ini melibatkan upaya yang lebih administratif karena Anda harus membuat pendaftaran aplikasi Microsoft Entra setiap kali Anda perlu meningkatkan jumlah perwakilan layanan di kumpulan.
Terlebih lagi, strategi pengumpulan perwakilan layanan tidak dioptimalkan untuk performa karena memungkinkan perwakilan layanan untuk menjadi anggota ratusan ruang kerja. Ini juga tidak ideal dari perspektif isolasi penyewa pelanggan karena perwakilan layanan dapat menjadi pemilik model semantik dan kredensial data yang dibagikan di seluruh penyewa pelanggan.
Strategi desain satu perwakilan layanan per ruang kerja melibatkan pembuatan perwakilan layanan untuk setiap penyewa pelanggan. Dari perspektif teoritis, strategi ini menawarkan solusi terbaik karena mengoptimalkan performa panggilan REST API sekaligus memberikan isolasi sejati untuk model semantik dan kredensial sumber data di tingkat ruang kerja. Namun, apa yang berfungsi paling baik dalam teori tidak selalu berfungsi paling baik dalam praktiknya. Itu karena persyaratan untuk membuat perwakilan layanan untuk setiap penyewa pelanggan tidak praktis bagi banyak organisasi. Itu karena beberapa organisasi memiliki proses persetujuan formal atau mereka melibatkan birokrasi yang berlebihan untuk membuat pendaftaran aplikasi Microsoft Entra. Alasan ini dapat membuatnya tidak mungkin untuk memberikan aplikasi kustom otoritas yang diperlukan untuk membuat pendaftaran aplikasi Microsoft Entra sesuai permintaan dan dengan cara otomatis yang diperlukan solusi Anda.
Dalam skenario yang kurang umum di mana aplikasi kustom telah diberikan izin yang tepat, aplikasi tersebut dapat menggunakan Microsoft Graph API untuk membuat pendaftaran aplikasi Microsoft Entra sesuai permintaan. Namun, aplikasi kustom seringkali kompleks untuk dikembangkan dan disebarkan karena entah bagaimana harus melacak kredensial autentikasi untuk setiap pendaftaran aplikasi Microsoft Entra. Ini juga harus mendapatkan akses ke kredensial tersebut setiap kali perlu mengautentikasi dan memperoleh token akses untuk perwakilan layanan individu.
Profil perwakilan layanan
Fitur profil perwakilan layanan dirancang untuk memudahkan Anda mengelola konten organisasi di Power BI dan menggunakan kapasitas Anda dengan lebih efisien. Mereka membantu mengatasi tiga tantangan spesifik yang melibatkan jumlah upaya pengembang dan overhead terendah. Tantangan ini meliputi:
- Penskalaan ke sejumlah besar ruang kerja.
- Mengoptimalkan performa panggilan REST API.
- Mengisolasi model semantik dan kredensial sumber data di tingkat penyewa pelanggan.
Ketika Anda merancang aplikasi multitenansi dengan menggunakan profil perwakilan layanan, Anda dapat memperoleh manfaat dari kekuatan tiga strategi desain (dijelaskan di bagian sebelumnya) sambil menghindari kelemahan terkait mereka.
Profil perwakilan layanan adalah akun lokal yang dibuat dalam konteks Power BI. Perwakilan layanan dapat menggunakan Profiles
operasi REST API untuk membuat profil perwakilan layanan baru. Perwakilan layanan dapat membuat dan mengelola sekumpulan profil perwakilan layanannya sendiri untuk aplikasi kustom, seperti yang ditunjukkan dalam diagram berikut.
Selalu ada hubungan induk-anak antara perwakilan layanan dan profil perwakilan layanan yang dibuatnya. Anda tidak dapat membuat profil perwakilan layanan sebagai entitas yang berdiri sendiri. Sebagai gantinya, Anda membuat profil perwakilan layanan dengan menggunakan perwakilan layanan tertentu, dan perwakilan layanan tersebut berfungsi sebagai induk profil. Selain itu, profil perwakilan layanan tidak pernah terlihat oleh akun pengguna atau perwakilan layanan lainnya. Profil perwakilan layanan hanya dapat dilihat dan digunakan oleh perwakilan layanan yang membuatnya.
Profil perwakilan layanan tidak diketahui oleh Microsoft Entra
Meskipun perwakilan layanan itu sendiri dan pendaftaran aplikasi Microsoft Entra yang mendasarnya diketahui oleh Microsoft Entra, ID Microsoft Entra tidak tahu apa-apa tentang profil perwakilan layanan. Itu karena profil perwakilan layanan dibuat oleh Power BI dan hanya ada di subsistem layanan Power BI yang mengontrol keamanan dan otorisasi Power BI.
Fakta bahwa profil perwakilan layanan tidak diketahui oleh ID Microsoft Entra memiliki kelebihan dan kekurangan. Keuntungan utamanya adalah bahwa Embed untuk aplikasi skenario pelanggan Anda tidak memerlukan izin Microsoft Entra khusus untuk membuat profil perwakilan layanan. Ini juga berarti bahwa aplikasi dapat membuat dan mengelola sekumpulan identitas lokal yang terpisah dari Microsoft Entra.
Namun, ada juga kerugian. Karena profil perwakilan layanan tidak diketahui oleh Microsoft Entra, Anda tidak dapat menambahkan profil perwakilan layanan ke grup Microsoft Entra untuk secara implisit memberinya akses ke ruang kerja. Selain itu, sumber data eksternal, seperti Azure SQL Database atau Azure Synapse Analytics, tidak dapat mengenali profil perwakilan layanan sebagai identitas saat menyambungkan ke database. Jadi, satu perwakilan layanan per strategi desain ruang kerja (membuat perwakilan layanan untuk setiap penyewa pelanggan) mungkin merupakan pilihan yang lebih baik ketika ada persyaratan untuk terhubung ke sumber data ini dengan menggunakan perwakilan layanan terpisah dengan kredensial autentikasi unik untuk setiap penyewa pelanggan.
Profil perwakilan layanan adalah prinsip keamanan kelas satu
Meskipun profil perwakilan layanan tidak dikenal oleh Microsoft Entra, Power BI mengenalinya sebagai perwakilan keamanan kelas satu. Sama seperti akun pengguna atau perwakilan layanan, Anda dapat menambahkan profil perwakilan layanan ke peran ruang kerja (sebagai Admin atau Anggota). Anda juga dapat menjadikannya pemilik model semantik dan pemilik kredensial sumber data. Untuk alasan ini, membuat profil perwakilan layanan baru untuk setiap penyewa pelanggan baru adalah praktik terbaik.
Tip
Saat Anda mengembangkan Embed untuk aplikasi skenario pelanggan Anda dengan menggunakan profil perwakilan layanan, Anda hanya perlu membuat satu pendaftaran aplikasi Microsoft Entra untuk menyediakan aplikasi Anda dengan satu perwakilan layanan. Pendekatan ini secara signifikan menurunkan overhead administratif dibandingkan dengan strategi desain multitenansi lainnya, di mana perlu untuk membuat pendaftaran aplikasi Microsoft Entra tambahan secara berkelanjutan setelah aplikasi disebarkan ke produksi.
Menjalankan panggilan REST API sebagai profil perwakilan layanan
Aplikasi Anda dapat menjalankan panggilan REST API dengan menggunakan identitas profil perwakilan layanan. Itu berarti dapat menjalankan urutan panggilan REST API untuk menyediakan dan menyiapkan penyewa pelanggan baru.
- Saat profil perwakilan layanan membuat ruang kerja baru, Power BI secara otomatis menambahkan profil tersebut sebagai admin ruang kerja.
- Saat profil perwakilan layanan mengimpor file Power BI Desktop untuk membuat model semantik, Power BI mengatur profil tersebut sebagai pemilik model semantik.
- Saat profil perwakilan layanan mengatur kredensial sumber data, Power BI mengatur profil tersebut sebagai pemilik kredensial sumber data.
Penting untuk dipahami bahwa perwakilan layanan memiliki identitas di Power BI yang terpisah dan berbeda dari identitas profilnya. Itu memberi Anda pilihan sebagai pengembang. Anda dapat menjalankan panggilan REST API dengan menggunakan identitas profil perwakilan layanan. Atau, Anda dapat menjalankan panggilan REST API tanpa profil, yang menggunakan identitas perwakilan layanan induk.
Kami menyarankan agar Anda menjalankan panggilan REST API sebagai perwakilan layanan induk saat Anda membuat, melihat, atau menghapus profil perwakilan layanan. Anda harus menggunakan profil perwakilan layanan untuk menjalankan semua panggilan REST API lainnya. Panggilan lain ini dapat membuat ruang kerja, mengimpor file Power BI Desktop, memperbarui parameter model semantik, dan mengatur kredensial sumber data. Mereka juga dapat mengambil metadata item ruang kerja dan menghasilkan token semat.
Pertimbangkan contoh di mana Anda perlu menyiapkan penyewa pelanggan untuk pelanggan bernama Contoso. Langkah pertama melakukan panggilan REST API untuk membuat profil perwakilan layanan dengan nama tampilannya diatur ke Contoso. Panggilan ini dilakukan dengan menggunakan identitas perwakilan layanan. Semua langkah penyiapan yang tersisa menggunakan profil perwakilan layanan untuk menyelesaikan tugas berikut:
- Buat ruang kerja.
- Kaitkan ruang kerja dengan kapasitas.
- Mengimpor file Power BI Desktop.
- Atur parameter model semantik.
- Atur kredensial sumber data.
- Siapkan refresh data terjadwal.
Penting untuk dipahami bahwa akses ke ruang kerja dan kontennya harus dilakukan dengan menggunakan identitas profil perwakilan layanan yang digunakan untuk membuat penyewa pelanggan. Penting juga untuk dipahami bahwa perwakilan layanan induk tidak memerlukan akses ke ruang kerja atau kontennya.
Tip
Ingat: Saat melakukan panggilan REST API, gunakan perwakilan layanan untuk membuat dan mengelola profil perwakilan layanan, dan menggunakan profil perwakilan layanan untuk membuat, menyiapkan, dan mengakses konten Power BI.
Menggunakan operasi REST API Profil
Grup operasi REST API Profil terdiri dari operasi yang membuat dan mengelola profil perwakilan layanan:
Create Profile
Delete Profile
Get Profile
Get Profiles
Update Profile
Membuat profil perwakilan layanan
Gunakan operasi Buat Profil REST API untuk membuat profil perwakilan layanan. Anda harus mengatur displayName
properti dalam isi permintaan untuk memberikan nama tampilan untuk penyewa baru. Nilai harus unik di semua profil yang dimiliki oleh perwakilan layanan. Panggilan akan gagal jika profil lain dengan nama tampilan tersebut sudah ada untuk perwakilan layanan.
Panggilan yang berhasil mengembalikan id
properti , yang merupakan GUID yang mewakili profil. Saat Anda mengembangkan aplikasi yang menggunakan profil perwakilan layanan, kami sarankan Anda menyimpan nama tampilan profil dan nilai ID mereka dalam database kustom. Dengan begitu, mudah bagi aplikasi Anda untuk mengambil ID.
Jika Anda memprogram dengan Power BI .NET SDK, Anda bisa menggunakan metode , Profiles.CreateProfile
yang mengembalikan objek yang ServicePrincipalProfile
mewakili profil baru. Ini membuatnya mudah untuk menentukan id
nilai properti.
Berikut adalah contoh pembuatan profil perwakilan layanan dan memberinya akses ruang kerja.
// Create a service principal profile
string profileName = "Contoso";
var createRequest = new CreateOrUpdateProfileRequest(profileName);
var profile = pbiClient.Profiles.CreateProfile(createRequest);
// Retrieve the ID of the new profile
Guid profileId = profile.Id;
// Grant workspace access
var groupUser = new GroupUser {
GroupUserAccessRight = "Admin",
PrincipalType = "App",
Identifier = ServicePrincipalId,
Profile = new ServicePrincipalProfile {
Id = profileId
}
};
pbiClient.Groups.AddGroupUser(workspaceId, groupUser);
Di layanan Power BI, di panel Akses ruang kerja, Anda dapat menentukan identitas mana, termasuk prinsip keamanan, yang memiliki akses.
Menghapus profil perwakilan layanan
Gunakan operasi Hapus Profil REST API untuk menghapus profil perwakilan layanan. Operasi ini hanya dapat dipanggil oleh perwakilan layanan induk.
Jika Anda memprogram dengan Power BI .NET SDK, Anda bisa menggunakan metode .Profiles.DeleteProfile
Mengambil semua profil perwakilan layanan
Gunakan operasi Get Profiles REST API untuk mengambil daftar profil perwakilan layanan milik perwakilan layanan panggilan. Operasi ini mengembalikan payload JSON yang berisi id
properti dan displayName
dari setiap profil perwakilan layanan.
Jika Anda memprogram dengan Power BI .NET SDK, Anda bisa menggunakan metode Profiles.GetProfiles .
Menjalankan panggilan REST API dengan menggunakan profil perwakilan layanan
Ada dua persyaratan untuk melakukan panggilan REST API dengan menggunakan profil perwakilan layanan:
- Anda harus meneruskan token akses untuk perwakilan layanan induk di header Otorisasi .
- Anda harus menyertakan header bernama X-PowerBI-profile-id dengan nilai ID profil perwakilan layanan.
Jika Anda menggunakan Power BI .NET SDK, Anda bisa mengatur nilai header X-PowerBI-profile-id secara eksplisit dengan meneruskan ID profil perwakilan layanan.
// Create the Power BI client
var tokenCredentials = new TokenCredentials(GetACcessToken(). "Bearer");
var uriPowerBiServiceApiRoot = new Uri(uriPowerBiServiceApiRoot);
var pbiClient = new PowerBIClient(uriPowerBiServiceApiRoot, tokenCredentials);
// Add X-PowerBI-profile-id header for service principal profile
string profileId = "11111111-1111-1111-1111-111111111111";
pbiClient.HttpClient.DefaultRequestHeaders.Add("X-PowerBI-profile-id", profileId);
// Retrieve workspaces by using the identity of service principal profile
var workspaces = pbiClient.Groups.GetGroups();
Seperti yang ditunjukkan pada contoh di atas, setelah Anda menambahkan header X-PowerBI-profile-id ke PowerBIClient
objek, mudah untuk memanggil metode, seperti Groups.GetGroups
, sehingga akan dijalankan dengan menggunakan profil perwakilan layanan.
Ada cara yang lebih mudah untuk mengatur header X-PowerBI-profile-id untuk PowerBIClient
objek. Anda dapat menginisialisasi objek dengan meneruskan ID profil ke konstruktor.
// Create the Power BI client
string profileId = "11111111-1111-1111-1111-111111111111";
var tokenCredentials = new TokenCredentials(GetACcessToken(). "Bearer");
var uriPowerBiServiceApiRoot = new Uri(uriPowerBiServiceApiRoot);
var pbiClient = new PowerBiClient(uriPowerBiServiceApiRoot, tokenCredentials, profileId);
Saat Anda memprogram aplikasi multipenyewa, kemungkinan Anda harus beralih antara menjalankan panggilan sebagai perwakilan layanan induk dan menjalankan panggilan sebagai profil perwakilan layanan. Pendekatan yang berguna untuk mengelola pengalihan konteks adalah dengan mendeklarasikan variabel tingkat kelas yang menyimpan PowerBIClient
objek. Anda kemudian dapat membuat metode pembantu yang mengatur variabel dengan objek yang benar.
// Class-level variable that stores the PowerBIClient object
private PowerBIClient pbiClient;
// Helper method that sets the correct PowerBIClient object
private void SetCallingContext(string profileId = "") {
if (profileId.Equals("")) {
pbiClient = GetPowerBIClient();
}
else {
pbiClient = GetPowerBIClientForProfile(new Guid(profileId));
}
}
Saat Anda perlu membuat atau mengelola profil perwakilan layanan, Anda dapat memanggil SetCallingContext
metode tanpa parameter apa pun. Dengan cara ini, Anda dapat membuat dan mengelola profil dengan menggunakan identitas perwakilan layanan.
// Always create and manage profiles as the service principal
SetCallingContext();
// Create a service principal profile
string profileName = "Contoso";
var createRequest = new CreateOrUpdateProfileRequest(profileName);
var profile = pbiClient.Profiles.CreateProfile(createRequest);
Saat Anda perlu membuat dan menyiapkan ruang kerja untuk penyewa pelanggan baru, Anda ingin menjalankan kode tersebut sebagai profil perwakilan layanan. Oleh karena itu, Anda harus memanggil SetCallingContext
metode dengan meneruskan ID profil. Dengan cara ini, Anda dapat membuat ruang kerja dengan menggunakan identitas profil perwakilan layanan.
// Always create and set up workspaces as a service principal profile
string profileId = "11111111-1111-1111-1111-111111111111";
SetCallingContext(profileId);
// Create a workspace
GroupCreationRequest request = new GroupCreationRequest(workspaceName);
Group workspace = pbiClient.Groups.CreateGroup(request);
Setelah Anda menggunakan profil perwakilan layanan tertentu untuk membuat dan mengonfigurasi ruang kerja, Anda harus terus menggunakan profil yang sama untuk membuat dan menyiapkan konten ruang kerja. Tidak perlu memanggil SetCallingContext
metode untuk menyelesaikan penyiapan.
Sampel pengembang
Kami mendorong Anda untuk mengunduh aplikasi sampel bernama AppOwnsDataMultiTenant.
Aplikasi sampel ini dikembangkan dengan menggunakan .NET 6 dan ASP.NET, dan menunjukkan cara menerapkan panduan dan rekomendasi yang dijelaskan dalam artikel ini. Anda dapat meninjau kode untuk mempelajari cara mengembangkan aplikasi multipenyewa yang mengimplementasikan Sematan untuk skenario pelanggan Anda dengan menggunakan profil perwakilan layanan.
Konten terkait
Untuk informasi selengkapnya tentang artikel ini, lihat sumber daya berikut ini: