Membatasi akses ke data model Power BI

Selesai

Sebagai pemodel data, Anda menyiapkan RLS dengan membuat satu atau beberapa peran. Sebuah peran memiliki nama unik dalam model, dan biasanya mencakup satu atau lebih aturan. Aturan memberlakukan filter pada tabel model menggunakan ekspresi filter Ekspresi Analisis Data (DAX).

Catatan

Secara default, model data tidak memiliki peran. Model data yang tidak memiliki peran berarti bahwa pengguna (yang memiliki izin untuk mengkueri model data) memiliki akses ke semua data model.

Tip

Dimungkinkan untuk menentukan peran yang tidak menyertakan aturan. Dalam kasus ini, peran menyediakan akses ke semua baris dari semua tabel model. Penyiapan peran ini akan cocok untuk pengguna admin yang diizinkan untuk melihat semua data.

Anda dapat membuat, memvalidasi, dan mengelola peran di Power BI Desktop. Untuk model Azure Analysis Services atau Layanan Analisis, Anda dapat membuat, memvalidasi, dan mengelola peran menggunakan SQL Server Data Tools (SSDT).

Anda juga dapat membuat dan mengelola peran menggunakan SQL Server Management Studio (SSMS), atau menggunakan alat pihak ketiga, seperti Editor Tabular.

Untuk mendapatkan pemahaman yang lebih baik tentang bagaimana RLS membatasi akses ke data, lihat gambar animasi berikut.

Animated diagram demonstrates how row-level security works for two users who each have access to specific country data.

Menerapkan prinsip rancangan skema bintang

Sebaiknya Anda menerapkan prinsip rancangan skema bintang untuk menghasilkan model yang terdiri dari tabel dimensi dan fakta. Power BI umumnya disiapkan untuk menerapkan aturan yang memfilter tabel dimensi, sehingga memungkinkan hubungan model menyebarkan filter tersebut ke tabel fakta secara efisien.

Gambar berikut adalah diagram model dari model data analisis penjualan Adventure Works. Gambar ini menunjukkan desain skema bintang yang terdiri dari tabel fakta tunggal bernama Penjualan. Tabel lainnya adalah tabel dimensi yang mendukung analisis ukuran penjualan berdasarkan tanggal, wilayah penjualan, pelanggan, pengecer, pesanan, produk, dan wiraniaga. Perhatikan hubungan model yang menghubungkan semua tabel. Hubungan ini menyebarkan filter (secara langsung atau tidak langsung) ke tabel Penjualan.

Screenshot shows a Power B I Desktop model diagram comprising the tables and relationships as described in the previous paragraph.

Desain model ini mendukung contoh yang disajikan dalam unit ini.

Menentukan aturan

Ekspresi aturan dievaluasi dalam konteks baris. Konteks baris berarti ekspresi dievaluasi untuk setiap baris menggunakan nilai kolom dari baris tersebut. Ketika ekspresi mengembalikan TRUE, pengguna dapat "melihat" baris.

Tip

Untuk mempelajari selengkapnya tentang konteks baris, pelajari modul Menambahkan tabel dan kolom yang dihitung ke model Power BI Desktop. Meskipun modul ini menjelaskan penambahan perhitungan model, modul ini mencakup unit yang memperkenalkan dan menjelaskan konteks baris.

Anda dapat menentukan aturan yang statis atau dinamis.

Aturan statis

Aturan statis menggunakan ekspresi DAX yang merujuk ke konstanta.

Pertimbangkan aturan berikut yang diterapkan pada tabel Wilayah yang membatasi akses data ke penjualan Midwest.


'Region'[Region] = "Midwest"

Langkah-langkah berikut menjelaskan bagaimana Power BI memberlakukan aturan. Hal itu:

  1. Filter tabel Wilayah, menghasilkan satu baris yang terlihat (untuk Midwest).

  2. Menggunakan hubungan model untuk menyebarkan filter tabel Wilayah ke tabel Negara Bagian, menghasilkan 14 baris yang terlihat (wilayah Midwest terdiri dari 14 negara bagian).

  3. Menggunakan hubungan model untuk menyebarkan filter tabel Negara Bagian ke tabel Penjualan, menghasilkan ribuan baris yang terlihat (fakta penjualan untuk negara bagian yang termasuk wilayah Midwest).

Aturan statis paling sederhana yang dapat Anda buat membatasi akses ke semua baris tabel. Pertimbangkan aturan berikut yang diterapkan pada tabel Detail Penjualan (tidak digambarkan dalam diagram model).


FALSE()

Aturan ini memastikan pengguna tidak dapat mengakses data tabel apa pun. Ini bisa berguna ketika wiraniaga diizinkan untuk melihat hasil penjualan agregat (dari tabel Penjualan) tetapi bukan detail tingkat pesanan.

Mendefinisikan aturan statis itu sederhana dan efektif. Pertimbangkan untuk menggunakannya saat Anda hanya perlu membuat beberapa, seperti yang mungkin terjadi di Adventure Works di mana hanya ada enam wilayah AS. Namun, waspadai kekurangannya: menyiapkan aturan statis dapat melibatkan upaya yang signifikan pada pembuatan dan penyiapan. Ini juga akan mengharuskan Anda untuk memperbarui dan memublikasikan ulang himpunan data saat wilayah baru diaktifkan.

Jika ada banyak aturan yang harus disiapkan dan Anda mengantisipasi penambahan aturan baru di masa mendatang, pertimbangkan untuk membuat aturan dinamis.

Aturan dinamis

Aturan dinamis menggunakan fungsi DAX tertentu yang mengembalikan nilai lingkungan (berbeda dengan konstanta). Nilai lingkungan dikembalikan dari tiga fungsi DAX tertentu:

  • USERNAME atau USERPRINCIPALNAME – Mengembalikan pengguna yang diautentikasi Power BI sebagai nilai teks.

  • CUSTOMDATA - Mengembalikan properti CustomData yang diteruskan dalam string koneksi. Alat pelaporan Non-Power BI yang menghubungkan ke himpunan data menggunakan string koneksi dapat mengatur properti ini, seperti Microsoft Excel.

Catatan

Perlu diketahui bahwa fungsi USERNAME mengembalikan pengguna dalam format DOMAIN\username saat digunakan di Power BI Desktop. Namun, saat digunakan dalam layanan Power BI, ia mengembalikan format Nama Prinsipal Pengguna (UPN) pengguna, seperti username@adventureworks.com. Atau, Anda dapat menggunakan fungsi USERPRINCIPALNAME, yang selalu mengembalikan pengguna dalam format nama prinsipal pengguna.

Pertimbangkan desain model yang direvisi yang sekarang menyertakan tabel AppUser (tersembunyi). Setiap baris tabel AppUser menjelaskan nama pengguna dan wilayah. Hubungan model ke tabel Wilayah menyebarkan filter dari tabel AppUser.

Image shows a revised model diagram that now includes the AppUser table. This table has two columns: Region and User Name.

Aturan berikut yang diterapkan pada tabel AppUser membatasi akses data ke wilayah pengguna yang diautentikasi.


'AppUser'[UserName] = USERPRINCIPALNAME()

Mendefinisikan aturan dinamis sederhana dan efektif ketika tabel model menyimpan nilai nama pengguna. Mereka memungkinkan Anda untuk menerapkan desain RLS berbasis data. Misalnya, ketika wiraniaga ditambahkan ke, atau dihapus dari, tabel AppUser (atau ditugaskan ke wilayah yang berbeda), pendekatan desain ini berfungsi.

Memvalidasi peran

Saat Anda membuat peran, penting untuk mengujinya guna memastikan mereka menerapkan filter yang benar. Untuk model data yang dibuat di Power BI Desktop, terdapat fungsi Lihat sebagai yang memungkinkan Anda melihat laporan saat peran yang berbeda diterapkan, dan nilai nama pengguna yang berbeda diteruskan.

Screenshot shows the Power B I Desktop Modeling ribbon. The “View as” command is highlighted.

Menyiapkan pemetaan peran

Pemetaan peran harus disiapkan sebelum pengguna mengakses konten Power BI. Pemetaan peran melibatkan penetapan objek keamanan Microsoft Entra ke peran. Objek keamanan dapat berupa akun pengguna atau kelompok keamanan.

Tip

Jika memungkinkan, merupakan praktik yang baik untuk memetakan peran ke kelompok keamanan. Dengan begitu, pemetaan akan lebih sedikit, dan Anda dapat mendelegasikan pengelolaan keanggotaan grup kepada administrator jaringan.

Untuk model yang dikembangkan Power BI Desktop, pemetaan peran biasanya dilakukan di layanan Power BI. Untuk model Azure Analysis Services atau Layanan Analisis, pemetaan peran biasanya dilakukan di SQL Server Management Studio.

Untuk informasi selengkapnya tentang penyiapan RLS, lihat:

Menggunakan akses menyeluruh (SSO) untuk sumber DirectQuery

Jika model data Anda memiliki tabel DirectQuery dan sumber datanya mendukung SSO, sumber data dapat memberlakukan izin data. Dengan cara ini, database memberlakukan RLS, dan himpunan data serta laporan Power BI menghormati keamanan sumber data.

Pertimbangkan bahwa Adventure Works memiliki Azure SQL Database untuk operasi penjualan mereka yang berada di penyewa yang sama dengan Power BI. Basis data memberlakukan RLS untuk mengontrol akses ke baris di berbagai tabel database. Anda dapat membuat model DirectQuery yang menghubungkan ke database ini tanpa peran dan menerbitkannya ke layanan Power BI. Saat Anda mengatur info masuk sumber data di layanan Power BI, Anda mengaktifkan SSO. Saat konsumen laporan membuka laporan Power BI, Power BI meneruskan identitas mereka ke sumber data. Sumber data kemudian memberlakukan RLS berdasarkan identitas konsumen laporan.

Screenshot shows the data source credentials window with the S O option enabled.

Untuk informasi tentang Azure SQL Database RLS, lihat Keamanan tingkat baris.

Catatan

Tabel terhitung dan kolom terhitung yang mereferensikan tabel DirectQuery dari sumber data dengan autentikasi SSO tidak didukung di layanan Power BI.

Untuk informasi selengkapnya tentang sumber data yang mendukung SSO, lihat Akses menyeluruh (SSO) untuk sumber DirectQuery.