Bagikan melalui


Menerapkan keamanan tingkat baris dalam model tabular Analysis Services lokal

Menggunakan contoh model semantik untuk bekerja melalui langkah-langkah di bawah ini, tutorial ini menunjukkan kepada Anda cara menerapkan keamanan tingkat baris dalam Model Tabular Analysis Services lokal dan menggunakannya dalam laporan Power BI.

  • Buat tabel keamanan baru di database AdventureworksDW2012
  • Bangun model tabular dengan tabel fakta dan dimensi yang diperlukan
  • Menetapkan peran dan izin pengguna
  • Sebarkan model ke instans tabular Analysis Services
  • Buat laporan Power BI Desktop yang menampilkan data yang disesuaikan dengan pengguna yang mengakses laporan
  • Sebarkan laporan ke layanan Power BI
  • Buat dasbor baru berdasarkan laporan
  • Bagikan dasbor dengan rekan kerja Anda

Tutorial ini memerlukan database AdventureworksDW2012.

Tugas 1: Membuat tabel keamanan pengguna dan menentukan hubungan data

Anda dapat menemukan banyak artikel yang menjelaskan cara menentukan keamanan dinamis tingkat baris dengan model tabular SQL Server Analysis Services (SSAS).

Langkah-langkah di sini memerlukan penggunaan database relasional AdventureworksDW2012.

  1. Di AdventureworksDW2012, buat tabel DimUserSecurity seperti yang ditunjukkan di bawah ini. Anda dapat menggunakan SQL Server Management Studio (SSMS) untuk membuat tabel.

    Membuat tabel DimUserSecurity

  2. Setelah membuat dan menyimpan tabel, Anda perlu membuat hubungan antara kolom SalesTerritoryID tabel DimUserSecurity dan kolom SalesTerritoryKey tabelDimSalesTerritory, seperti yang ditunjukkan di bawah ini.

    Di SSMS, klik kanan DimUserSecurity, dan pilih Desain. Lalu pilih Desainer Tabel>Hubungan.... Setelah selesai, simpan tabel.

    Hubungan Kunci Asing

  3. Tambahkan pengguna ke tabel. Klik kanan DimUserSecurity dan pilih Edit 200 Baris Teratas. Setelah Anda menambahkan pengguna, tabel DimUserSecurity akan tampak seperti contoh berikut:

    Tabel DimUserSecurity dengan contoh pengguna

    Anda akan melihat pengguna ini dalam tugas mendatang.

  4. Selanjutnya, lakukan penggabungan dalam dengan tabel DimSalesTerritory, yang memperlihatkan detail wilayah terkait pengguna. Kode SQL di sini melakukan penggabungan dalam, dan gambar menunjukkan bagaimana tabel kemudian muncul.

    select b.SalesTerritoryCountry, b.SalesTerritoryRegion, a.EmployeeID, a.FirstName, a.LastName, a.UserName from [dbo].[DimUserSecurity] as a join [dbo].[DimSalesTerritory] as b on a.[SalesTerritoryID] = b.[SalesTerritoryKey]
    

    Tabel gabungan menunjukkan siapa yang bertanggung jawab atas setiap wilayah penjualan, berkat hubungan yang dibuat di Langkah 2. Misalnya, Anda dapat melihat bahwa Rita Santos bertanggung jawab atas Australia.

Tugas 2: Membuat model tabular dengan fakta dan tabel dimensi

Setelah gudang data relasional Anda siap, Anda perlu menentukan model tabular. Anda dapat membuat model menggunakan SQL Server Data Tools (SSDT). Untuk informasi selengkapnya, lihat Membuat Proyek Model Tabular Baru.

  1. Impor semua tabel yang diperlukan ke dalam model seperti yang ditunjukkan di bawah ini.

    SQL Server yang diimpor untuk digunakan dengan alat data

  2. Setelah mengimpor tabel yang diperlukan, Anda perlu menentukan peran yang disebut SalesTerritoryUsers dengan izin Baca. Pilih menu Model di SQL Server Data Tools, lalu pilih Peran. Di Manajer Peran, pilih Baru.

  3. Di bawah Anggota di Manajer Peran, tambahkan pengguna yang Anda tentukan dalam tabel DimUserSecurity di Tugas 1.

    Menambahkan pengguna di Pengelola Peran

  4. Selanjutnya, tambahkan fungsi yang tepat untuk tabel DimSalesTerritory dan DimUserSecurity, seperti yang ditunjukkan di bawah ini di bawah tab Filter Baris.

    Menambahkan fungsi ke Filter Baris

  5. Fungsi LOOKUPVALUE mengembalikan nilai untuk kolom di mana nama pengguna Windows cocok dengan USERNAME yang dikembalikan fungsi. Anda kemudian dapat membatasi kueri ke tempat nilai LOOKUPVALUE yang dikembalikan cocok dengan yang ada dalam tabel yang sama atau terkait. Di kolom Filter DAX, ketik rumus berikut ini:

        =DimSalesTerritory[SalesTerritoryKey]=LOOKUPVALUE(DimUserSecurity[SalesTerritoryID], DimUserSecurity[UserName], USERNAME(), DimUserSecurity[SalesTerritoryID], DimSalesTerritory[SalesTerritoryKey])
    

    Dalam rumus ini, fungsi LOOKUPVALUE mengembalikan semua nilai untuk kolom DimUserSecurity[SalesTerritoryID], di mana DimUserSecurity[UserName] sama dengan yang saat ini masuk Windows nama pengguna, dan DimUserSecurity[SalesTerritoryID] sama dengan DimSalesTerritory[SalesTerritoryKey].

    Penting

    Saat menggunakan keamanan tingkat baris, fungsi DAX USERELATIONSHIP tidak didukung.

    Set pengembalian LOOKUPVALUE SalesTerritoryKeyPenjualan kemudian digunakan untuk membatasi baris yang ditunjukkan dalam DimSalesTerritory. Hanya baris dengan nilai SalesTerritoryKey berada dalam ID yang dikembalikan oleh fungsi LOOKUPVALUE yang ditampilkan.

  6. Untuk tabel DimUserSecurity, di kolom Filter DAX, tambahkan rumus berikut:

        =FALSE()
    

    Rumus ini menentukan bahwa semua kolom mengatasi false; yang berarti kolom tabel DimUserSecurity tidak dapat dikueri.

Sekarang Anda perlu memproses dan menyebarkan model. Untuk informasi selengkapnya, lihat Menyebarkan.

Tugas 3: Menambahkan Sumber Data dalam gateway data lokal Anda

Setelah model tabular Anda disebarkan dan siap dikonsumsi, Anda perlu menambahkan koneksi sumber data ke server tabular Analysis Services lokal Anda.

  1. Untuk mengizinkan akses layanan Power BI ke layanan analisis lokal, Anda memerlukan gateway data lokal yang diinstal dan dikonfigurasi di lingkungan Anda.

  2. Setelah gateway dikonfigurasi dengan benar, Anda perlu membuat koneksi sumber data untuk instans tabular Analysis Services Anda. Untuk informasi selengkapnya, lihat Mengelola sumber data Anda - Analysis Services.

    Membuat koneksi sumber data

Setelah prosedur ini selesai, gateway dikonfigurasi dan siap berinteraksi dengan sumber data Analysis Services lokal Anda.

Tugas 4: Membuat laporan berdasarkan model tabular layanan analisis menggunakan desktop Power BI

  1. Mulai Power BI Desktop dan pilih Dapatkan data>Database.

  2. Dari daftar sumber data, pilih Database SQL Server Analysis Services dan pilih Sambungkan.

    Koneksi ke Database SQL Server Analysis Services

  3. Isi detail instans tabular Analysis Services Anda dan pilih Sambungkan langsung. Kemudian pilih OK.

    Detail Analysis Services

    Dengan Power BI, keamanan dinamis hanya berfungsi dengan koneksi langsung.

  4. Anda dapat melihat bahwa model yang disebarkan ada di instans Analysis Services. Pilih model masing-masing lalu pilih OK.

    Power BI Desktop sekarang menampilkan semua bidang yang tersedia, di sebelah kanan kanvas di panel Bidang.

  5. Di panel Bidang, pilih ukuran SalesAmount dari tabel FactInternetSales dan dimensi SalesTerritoryRegion dari tabel SalesTerritory.

  6. Kami tidak akan menambahkan kolom lagi saat ini agar laporan ini tetap sederhana. Untuk mendapatkan representasi data yang lebih bermakna, ubah visualisasi menjadi bagan Donat.

    Visualisasi bagan donat

  7. Setelah laporan siap, Anda dapat langsung menerbitkannya ke portal Power BI. Dari pita Beranda di Power BI Desktop, pilih Terbitkan.

Tugas 5: Membuat dan membagikan dasbor

Anda telah membuat laporan dan menerbitkannya ke layanan Power BI. Sekarang Anda dapat menggunakan contoh yang dibuat pada langkah-langkah sebelumnya untuk menunjukkan skenario keamanan model.

Dalam peran sebagai Manajer Penjualan, pengguna Grace dapat melihat data dari semua wilayah penjualan yang berbeda. Grace membuat laporan ini dan menerbitkannya ke layanan Power BI. Laporan ini dibuat di tugas sebelumnya.

Setelah Grace menerbitkan laporan, langkah selanjutnya adalah membuat dasbor di layanan Power BI yang disebut TabularDynamicSec berdasarkan laporan tersebut. Dalam gambar berikut, perhatikan bahwa Grace dapat melihat data yang sesuai dengan semua wilayah penjualan.

dasbor layanan Power BI

Sekarang Grace berbagi dasbor dengan kolega, Rita, yang bertanggung jawab atas penjualan wilayah Australia.

Berbagi dasbor Power BI

Saat Rita masuk ke layanan Power BI dan melihat dasbor bersama yang dibuat Grace, hanya penjualan dari wilayah Australia yang terlihat.

Selamat! Layanan Power BI menunjukkan keamanan tingkat baris dinamis yang ditentukan dalam model tabular Analysis Services lokal. Power BI menggunakan properti EffectiveUserName untuk mengirim kredensial pengguna Power BI saat ini ke sumber data lokal untuk menjalankan kueri.

Tugas 6: Memahami apa yang terjadi di balik layar

Tugas ini mengasumsikan Anda terbiasa dengan SQL Server Profiler, karena Anda perlu mengambil jejak profiler SQL Server pada instans tabular SSAS lokal Anda.

Sesi akan diinisialisasi segera setelah pengguna, Rita, mengakses dasbor di layanan Power BI. Anda dapat melihat bahwa peran salesterritoryusers berpengaruh langsung dengan nama pengguna yang efektif sebagai <EffectiveUserName>rita@contoso.com</EffectiveUserName>

       <PropertyList><Catalog>DefinedSalesTabular</Catalog><Timeout>600</Timeout><Content>SchemaData</Content><Format>Tabular</Format><AxisFormat>TupleFormat</AxisFormat><BeginRange>-1</BeginRange><EndRange>-1</EndRange><ShowHiddenCubes>false</ShowHiddenCubes><VisualMode>0</VisualMode><DbpropMsmdFlattened2>true</DbpropMsmdFlattened2><SspropInitAppName>PowerBI</SspropInitAppName><SecuredCellValue>0</SecuredCellValue><ImpactAnalysis>false</ImpactAnalysis><SQLQueryMode>Calculated</SQLQueryMode><ClientProcessID>6408</ClientProcessID><Cube>Model</Cube><ReturnCellProperties>true</ReturnCellProperties><CommitTimeout>0</CommitTimeout><ForceCommitTimeout>0</ForceCommitTimeout><ExecutionMode>Execute</ExecutionMode><RealTimeOlap>false</RealTimeOlap><MdxMissingMemberMode>Default</MdxMissingMemberMode><DisablePrefetchFacts>false</DisablePrefetchFacts><UpdateIsolationLevel>2</UpdateIsolationLevel><DbpropMsmdOptimizeResponse>0</DbpropMsmdOptimizeResponse><ResponseEncoding>Default</ResponseEncoding><DirectQueryMode>Default</DirectQueryMode><DbpropMsmdActivityID>4ea2a372-dd2f-4edd-a8ca-1b909b4165b5</DbpropMsmdActivityID><DbpropMsmdRequestID>2313cf77-b881-015d-e6da-eda9846d42db</DbpropMsmdRequestID><LocaleIdentifier>1033</LocaleIdentifier><EffectiveUserName>rita@contoso.com</EffectiveUserName></PropertyList>

Berdasarkan permintaan nama pengguna yang efektif, Analysis Services mengonversi permintaan ke kredensial contoso\rita aktual setelah mengkueri Active Directory lokal. Setelah mendapatkan kredensial, Analysis Services mengembalikan data yang dapat dilihat dan diakses pengguna.

Jika lebih banyak aktivitas terjadi dengan dasbor, dengan SQL Profiler, Anda akan melihat kueri tertentu kembali ke model tabular Analysis Services sebagai kueri DAX. Misalnya, jika Rita beralih dari dasbor ke laporan yang mendasar, kueri berikut terjadi.

Kueri DAX kembali ke model Analysis Services

Anda juga dapat melihat di bawah kueri DAX yang dijalankan untuk mengisi data laporan.

EVALUATE
  ROW(
    "SumEmployeeKey", CALCULATE(SUM(Employee[EmployeeKey]))
  )

<PropertyList xmlns="urn:schemas-microsoft-com:xml-analysis">``
          <Catalog>DefinedSalesTabular</Catalog>
          <Cube>Model</Cube>
          <SspropInitAppName>PowerBI</SspropInitAppName>
          <EffectiveUserName>rita@contoso.com</EffectiveUserName>
          <LocaleIdentifier>1033</LocaleIdentifier>
          <ClientProcessID>6408</ClientProcessID>
          <Format>Tabular</Format>
          <Content>SchemaData</Content>
          <Timeout>600</Timeout>
          <DbpropMsmdRequestID>8510d758-f07b-a025-8fb3-a0540189ff79</DbpropMsmdRequestID>
          <DbPropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbPropMsmdActivityID>
          <ReturnCellProperties>true</ReturnCellProperties>
          <DbpropMsmdFlattened2>true</DbpropMsmdFlattened2>
          <DbpropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbpropMsmdActivityID>
        </PropertyList>

Pertimbangan

  • Keamanan tingkat baris lokal dengan Power BI hanya tersedia dengan koneksi langsung.

  • Setiap perubahan dalam data setelah memproses model akan segera tersedia bagi pengguna yang mengakses laporan dengan koneksi langsung dari layanan Power BI.