Bagikan melalui


Mengaktifkan dan menonaktifkan sandboxing RDL untuk Reporting Services dalam mode terintegrasi SharePoint

Berlaku untuk: Server Laporan Power BI SharePoint ❌ SQL Server Reporting Services (2016)

Untuk konten yang terkait dengan versi SQL Server Reporting Services (SSRS) sebelumnya, lihat SQL Server 2014 Reporting Services.

Fitur sandboxing Report Definition Language (RDL) memungkinkan Anda mendeteksi dan membatasi penggunaan jenis sumber daya tertentu, oleh penyewa individual, di lingkungan beberapa penyewa yang menggunakan satu farm web server laporan. Contohnya adalah skenario layanan hosting di mana Anda mungkin mempertahankan satu farm web server laporan yang digunakan oleh beberapa penyewa, dan perusahaan yang berbeda. Sebagai administrator server laporan, Anda dapat mengaktifkan fitur ini untuk membantu mencapai tujuan berikut:

  • Membatasi ukuran sumber daya eksternal. Sumber daya eksternal mencakup gambar, file .xslt, dan data peta.

  • Pada waktu penerbitan laporan, batasi jenis dan anggota yang digunakan dalam teks ekspresi.

  • Pada waktu pemrosesan laporan, batasi panjang teks dan ukuran nilai pengembalian untuk ekspresi.

Catatan

Integrasi Reporting Services dengan SharePoint tidak lagi tersedia setelah SQL Server 2016.

Saat Sandboxing RDL diaktifkan, fitur berikut dinonaktifkan:

  • Kode kustom dalam <Code> elemen definisi laporan.

  • Mode kompatibilitas mundur RDL untuk item laporan kustom SQL Server 2005 Reporting Services (SSRS).

  • Parameter bernama dalam ekspresi.

Artikel ini menjelaskan setiap elemen dalam <RDLSandboxing> elemen dalam file RSReportServer.Config. Untuk informasi selengkapnya tentang cara mengubah file ini, lihat Mengubah File Konfigurasi Reporting Services (RSreportserver.config). Log jejak server merekam aktivitas yang terkait dengan fitur Sandboxing RDL. Untuk informasi selengkapnya tentang log pelacakan, lihat Log Pelacakan Layanan Server Laporan.

Konfigurasi contoh

Contoh berikut menunjukkan pengaturan dan contoh nilai untuk <RDLSandboxing> elemen dalam file RSReportServer.Config.

<RDLSandboxing>  
   <MaxExpressionLength>5000</MaxExpressionLength>  
   <MaxResourceSize>5000</MaxResourceSize>  
   <MaxStringResultLength>3000</MaxStringResultLength>  
   <MaxArrayResultLength>250</MaxArrayResultLength>  
   <Types>  
      <Allow Namespace="System.Drawing" AllowNew="True">Bitmap</Allow>  
      <Allow Namespace="TypeConverters.Custom" AllowNew="True">*</Allow>  
   </Types>  
   <Members>  
      <Deny>Format</Deny>  
      <Deny>StrDup</Deny>  
   </Members>  
</RDLSandboxing>  

Pengaturan konfigurasi

Tabel berikut ini menyediakan informasi tentang pengaturan konfigurasi. Pengaturan disajikan dalam urutan muncul dalam file konfigurasi.

Pengaturan Deskripsi
MaxExpressionLength Jumlah maksimum karakter yang diizinkan dalam ekspresi RDL.

Default: 1000
MaxResourceSize Jumlah maksimum KB yang diizinkan untuk sumber daya eksternal.

Default: 100
MaxStringResultLength Jumlah maksimum karakter yang diizinkan dalam nilai pengembalian untuk ekspresi RDL.

Default: 1000
MaxArrayResultLength Jumlah maksimum item yang diizinkan dalam nilai pengembalian array untuk ekspresi RDL.

Default: 100
Jenis Daftar anggota yang diizinkan dalam ekspresi RDL.
Izinkan Jenis atau sekumpulan jenis untuk diperbolehkan dalam ekspresi RDL.
Namespace Layanan Atribut untuk Allow itu adalah namespace yang berisi satu atau beberapa jenis yang berlaku untuk Nilai. Properti ini tidak peka huruf besar/kecil.
IzinkanBaru Atribut Boolean untuk Allow itu mengontrol apakah instans baru jenis diizinkan dalam ekspresi RDL atau dalam elemen Kelas> RDL<.

Saat RDLSandboxing diaktifkan, array baru tidak dapat dibuat dalam ekspresi RDL, terlepas dari pengaturan AllowNew.
Nilai Nilai untuk Allow itu adalah nama jenis yang diizinkan dalam ekspresi RDL. Nilai * menunjukkan bahwa semua jenis di namespace diperbolehkan. Properti ini tidak peka huruf besar/kecil.
Anggota Nilai untuk daftar jenis yang ada di <Types> elemen , dan daftar nama anggota yang tidak diizinkan dalam ekspresi RDL.
Tolak Nama anggota yang tidak diizinkan dalam ekspresi RDL. Properti ini tidak peka huruf besar/kecil.

Ketika Deny ditentukan untuk anggota, semua anggota dengan nama ini untuk semua jenis tidak diizinkan.

Bekerja dengan ekspresi saat sandboxing RDL diaktifkan

Anda dapat mengubah fitur RDL Sandboxing untuk membantu mengelola sumber daya yang digunakan oleh ekspresi dengan cara berikut:

  • Batasi jumlah karakter yang digunakan untuk ekspresi.

  • Batasi ukuran hasil yang dikembalikan oleh ekspresi.

  • Perbolehkan daftar jenis tertentu yang dapat digunakan dalam ekspresi.

  • Batasi daftar anggota menurut nama untuk daftar tipe yang diizinkan yang dapat digunakan dalam ekspresi.

  • Fitur Sandboxing RDL memungkinkan Anda membuat daftar jenis yang disetujui dan daftar anggota yang ditolak. Daftar jenis yang disetujui disebut daftar yang diizinkan. Daftar anggota yang ditolak disebut daftar blokir.

Catatan

Dalam definisi laporan, komputer tidak dapat mengetahui jenis setiap instans referensi ekspresi. Saat Anda menambahkan anggota ke daftar blokir, Anda menolak semua anggota nama tersebut di semua jenis dalam daftar yang diizinkan.

Hasil ekspresi RDL diverifikasi pada waktu proses. Ekspresi RDL diverifikasi dalam definisi laporan saat laporan diterbitkan. Pantau log pelacakan server laporan untuk pelanggaran. Untuk informasi selengkapnya, lihat Melaporkan Log Pelacakan Layanan Server.

Bekerja dengan jenis

Saat Anda menambahkan jenis ke daftar yang diizinkan, Anda mengontrol titik masuk berikut untuk mengakses ekspresi RDL:

  • Anggota statis dari jenis.

  • Metode ''Baru' Visual Basic.

  • Elemen <Classes> dalam definisi laporan.

  • Anggota yang Anda tambahkan ke daftar blokir untuk jenis dalam daftar yang diizinkan.

Daftar izin tidak mengontrol titik masuk berikut:

  • Melaporkan himpunan data. Bidang dalam himpunan data laporan yang dikembalikan dari kueri mungkin berisi jenis RDL yang valid.

  • Parameter laporan. Nilai parameter yang disediakan pengguna mungkin berisi jenis RDL yang valid.

  • Anggota dari jenis yang diaktifkan yang tidak ada dalam daftar blokir. Secara default, semua anggota dari semua jenis dalam daftar yang diizinkan diaktifkan. Saat Anda menambahkan nama anggota ke daftar blokir, Anda menolak semua anggota dengan nama tersebut di semua jenis yang ada dalam daftar yang diizinkan.

Untuk mengaktifkan anggota dari satu jenis tetapi menolak anggota dengan nama yang sama untuk jenis yang berbeda, Anda harus melakukan tindakan berikut:

  • <Deny> Tambahkan elemen untuk nama anggota.

  • Buat anggota proksi dengan nama yang berbeda pada kelas dalam rakitan kustom untuk anggota yang ingin Anda aktifkan.

  • Tambahkan kelas baru tersebut ke daftar yang diizinkan.

Untuk menambahkan fungsi Visual Basic .NET Framework ke daftar yang diizinkan, tambahkan jenis yang sesuai dari Microsoft.VisualBasic namespace ke daftar yang diizinkan.

Untuk menambahkan kata kunci jenis .NET Framework Visual Basic ke daftar yang diizinkan, tambahkan jenis CLR yang sesuai ke daftar yang diizinkan. Misalnya, untuk menggunakan Bilangan Bulat kata kunci .NET Framework Visual Basic, tambahkan fragmen XML berikut ke <RDLSandboxing> elemen :

<Allow Namespace="System">Int32</Allow>  

Untuk menambahkan jenis generik atau Visual Basic .NET Framework nullable ke daftar izin, Anda harus melakukan tindakan berikut:

  • Buat jenis proksi untuk jenis generik atau Visual Basic .NET Framework nullable.

  • Tambahkan jenis proksi ke daftar yang diizinkan.

Menambahkan jenis dari rakitan kustom ke daftar izin tidak secara implisit memberikan izin eksekusi pada rakitan. Anda harus secara khusus mengubah file keamanan akses kode dan memberikan izin eksekusi ke rakitan Anda. Untuk informasi selengkapnya, lihat Keamanan Akses Kode di Reporting Services.

Mempertahankan <daftar tolak> anggota

Saat Anda menambahkan jenis baru ke daftar yang diizinkan, gunakan daftar berikut untuk menentukan kapan Anda mungkin harus memperbarui daftar blokir anggota:

  • Saat Anda memperbarui rakitan kustom dengan versi yang memperkenalkan jenis baru.

  • Saat Anda menambahkan anggota ke jenis dalam daftar yang diizinkan.

  • Saat Anda memperbarui .NET Framework di server laporan.

  • Saat Anda meningkatkan server laporan ke versi Reporting Services yang lebih baru.

  • Saat Anda memperbarui server laporan untuk menangani skema RDL nanti, karena anggota baru mungkin telah ditambahkan ke jenis RDL.

Bekerja dengan operator dan Baru

Secara default, operator bahasa .NET Framework Visual Basic, kecuali untuk New, selalu diizinkan. Atribut AllowNew pada <Allow> elemen mengontrol New operator. Operator bahasa lain, seperti operator ! aksesor koleksi default dan makro cast Visual Basic .NET Framework seperti CInt, selalu diizinkan.

Menambahkan operator ke daftar blokir, termasuk operator kustom, tidak didukung. Untuk mengecualikan operator untuk jenis, Anda harus melakukan tindakan berikut:

  • Buat jenis proksi yang tidak mengimplementasikan operator yang ingin Anda kecualikan.

  • Tambahkan jenis proksi ke daftar yang diizinkan.

Untuk membuat array baru dalam ekspresi RDL, buat array dalam metode pada kelas yang Anda tentukan, dan tambahkan kelas tersebut ke daftar yang diizinkan.

Untuk membuat array baru dalam ekspresi RDL, Anda harus melakukan tindakan berikut:

  • Tentukan kelas baru dan buat array dalam metode pada kelas tersebut.

  • Tambahkan kelas ke daftar yang diizinkan.

File konfigurasi RsReportServer.config
Melaporkan log pelacakan layanan server

Ada pertanyaan lagi? Coba tanyakan forum Reporting Services