Bagikan melalui


Mengotomatiskan ruang kerja Premium dan tugas model semantik dengan perwakilan layanan

Perwakilan layanan adalah pendaftaran aplikasi ID Microsoft Entra yang Anda buat dalam penyewa Anda untuk melakukan operasi sumber daya dan tingkat layanan tanpa pengawas. Perwakilan layanan merupakan jenis identitas pengguna yang unik dengan nama aplikasi, ID aplikasi, ID penyewa, dan rahasia klien atau sertifikat untuk kata sandi.

Power BI Premium menggunakan fungsionalitas perwakilan layanan yang sama dengan Power BI Embedded. Untuk mempelajari lebih lanjut, lihat Menyematkan konten Power BI dengan perwakilan layanan.

Di Power BI Premium, Anda dapat menggunakan perwakilan layanan dengan titik akhir XMLA (Analisis XML) untuk mengotomatiskan tugas manajemen model semantik seperti menyediakan ruang kerja, menyebarkan model, dan merefresh model semantik dengan:

  • PowerShell.
  • Azure Automation.
  • Azure Logic Apps.
  • Aplikasi klien kustom.

Hanya ruang kerja baru yang mendukung koneksi titik akhir XMLA dengan menggunakan perwakilan layanan. Ruang kerja klasik tidak didukung. Perwakilan layanan hanya memiliki izin yang diperlukan untuk melakukan tugas di ruang kerja tempatnya ditetapkan. Izin ditetapkan melalui akses ruang kerja, seperti akun UPN reguler (nama prinsipal pengguna).

Untuk melakukan operasi tulis, beban kerja model Semantik kapasitas harus mengaktifkan titik akhir XMLA untuk operasi baca-tulis. Model semantik yang diterbitkan dari Power BI Desktop harus mengaktifkan fitur format metadata yang disempurnakan.

Membuat perwakilan layanan

Perwakilan layanan dibuat sebagai pendaftaran aplikasi di portal Azure atau dengan menggunakan PowerShell. Saat membuat perwakilan layanan Anda, pastikan untuk menyalin dan menyimpan secara terpisah nama aplikasi, ID aplikasi (klien), ID direktori (penyewa), dan rahasia klien. Untuk langkah-langkah tentang cara membuat perwakilan layanan, lihat:

Membuat grup keamanan Microsoft Entra

Secara default, perwakilan layanan memiliki akses ke pengaturan penyewa apa pun yang diaktifkan. Bergantung pada pengaturan admin, akses dapat menyertakan kelompok keamanan tertentu atau seluruh organisasi.

Untuk membatasi akses perwakilan layanan ke pengaturan penyewa tertentu, Anda dapat mengizinkan akses ke kelompok keamanan tertentu. Atau, Anda dapat membuat kelompok keamanan khusus untuk perwakilan layanan, dan mengecualikannya dari pengaturan penyewa yang diinginkan. Untuk membuat grup keamanan dan menambahkan perwakilan layanan, lihat Membuat grup dasar dan menambahkan anggota menggunakan ID Microsoft Entra.

Mengaktifkan perwakilan layanan

Sebelum Anda bisa mulai menggunakan perwakilan layanan di Power BI, admin harus mengaktifkan akses perwakilan layanan di portal Admin Power BI.

  1. Buka portal Admin Power BI lalu pilih Pengaturan penyewa.
  2. Gulir ke Pengaturan pengembang lalu perluas Izinkan perwakilan layanan untuk menggunakan API Power BI.
  3. Pilih Diaktifkan.
  4. Untuk menerapkan izin ke grup keamanan, pilih Grup keamanan tertentu (Disarankan).
  5. Masukkan nama grup.
  6. Pilih Terapkan.

Cuplikan layar yang memperlihatkan portal Admin dengan pengaturan penyewa dipilih. Izinkan perwakilan layanan untuk menggunakan API Power BI diperluas dengan diaktifkan disorot.

Akses ruang kerja

Agar perwakilan layanan Anda memiliki izin yang diperlukan untuk melakukan operasi ruang kerja Premium dan model semantik, Anda harus menambahkan perwakilan layanan sebagai Anggota atau Admin ruang kerja. Menggunakan akses ruang kerja di layanan Power BI dijelaskan di sini, tetapi Anda juga dapat menggunakan REST API Tambahkan Pengguna Grup.

  1. Di layanan Power BI untuk ruang kerja, pilih Akses Ruang Kerja Lainnya>.

    Cuplikan layar yang memperlihatkan daftar ruang kerja. Semakin banyak ikon dan akses ruang kerja disorot.

  2. Cari berdasarkan nama aplikasi lalu tambahkan perwakilan layanan sebagai Admin atau Anggota ke ruang kerja.

    Cuplikan layar yang memperlihatkan dialog akses yang memperlihatkan nama perwakilan layanan. Admin dipilih.

String koneksi untuk titik akhir XMLA

Setelah Anda membuat perwakilan layanan, aktifkan perwakilan layanan untuk penyewa Anda, dan tambahkan perwakilan layanan ke akses ruang kerja, gunakan sebagai identitas pengguna di string koneksi dengan titik akhir XMLA. Perbedaannya adalah, alih-alih user id parameter dan password , Anda menentukan ID aplikasi, ID penyewa, dan rahasia aplikasi.

Data Source=powerbi://api.powerbi.com/v1.0/myorg/<workspace name>; Initial Catalog=<dataset name>;User ID=app:<appId>@<tenantId>;Password=<app_secret>;

PowerShell

Buka sesi PowerShell untuk menjalankan contoh kode berikut.

Menggunakan modul SQLServer

Dalam contoh berikut, AppId, TenantId, dan AppSecret digunakan untuk mengautentikasi operasi refresh model semantik:

Param (
        [Parameter(Mandatory=$true)] [String] $AppId,
        [Parameter(Mandatory=$true)] [String] $TenantId,
        [Parameter(Mandatory=$true)] [String] $AppSecret
       )
$PWord = ConvertTo-SecureString -String $AppSecret -AsPlainText -Force

$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord

Invoke-ProcessTable -Server "powerbi://api.powerbi.com/v1.0/myorg/myworkspace" -TableName "mytable" -DatabaseName "mydataset" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential

Analysis Management Objects (AMO) dan ADOMD.NET

Saat terhubung dengan aplikasi klien dan aplikasi web, Anda dapat menggunakan pustaka klien AMO dan ADOMD versi 15.1.42.26 (Juni 2020) dan paket yang dapat diinstal yang lebih baru dari NuGet untuk mendukung perwakilan layanan di string koneksi dengan menggunakan sintaks berikut: app:AppID dan kata sandi atau cert:thumbprint.

Dalam contoh berikut, appID dan password nilai digunakan untuk melakukan operasi refresh database model:

string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data source=powerbi://api.powerbi.com/v1.0/<tenant>/<workspacename>;Initial catalog=<datasetname>;User ID=app:{appId};Password={authKey};";
Server server = new Server();
server.Connect(connString);
Database db = server.Databases.FindByName("adventureworks");
Table tbl = db.Model.Tables.Find("DimDate");
tbl.RequestRefresh(RefreshType.Full);
db.Model.SaveChanges();