Memahami kebijakan keamanan

Kode apa pun yang dijalankan server laporan harus menjadi bagian dari kebijakan keamanan akses kode tertentu. Kebijakan keamanan ini terdiri dari grup kode yang memetakan bukti ke sekumpulan set izin bernama. Seringkali, grup kode dikaitkan dengan set izin bernama yang menentukan izin yang diizinkan untuk kode dalam grup tersebut. Runtime menggunakan bukti yang disediakan oleh host tepercaya atau oleh loader untuk menentukan grup kode mana yang dimiliki kode dan, oleh karena itu, izin mana yang memberikan kode. Reporting Services mematuhi arsitektur kebijakan keamanan ini sebagaimana didefinisikan oleh runtime bahasa umum (CLR) Microsoft .NET Framework. Bagian berikut menjelaskan berbagai jenis kode di Reporting Services dan aturan kebijakan yang terkait dengannya.

Melaporkan rakitan server

Rakitan server laporan berisi kode yang merupakan bagian dari produk Reporting Services. Reporting Services ditulis menggunakan rakitan kode terkelola; semua rakitan ini diberi nama yang kuat (yaitu, ditandatangani secara digital). Grup kode untuk rakitan ini didefinisikan menggunakan StrongNameMembershipCondition, yang memberikan bukti berdasarkan informasi kunci publik untuk nama kuat perakitan. Grup kode diberikan set izin FullTrust .

Melaporkan ekstensi server (penyajian, data, pengiriman, dan keamanan)

Ekstensi server laporan adalah data kustom, pengiriman, penyajian, dan ekstensi keamanan yang Anda atau pihak ketiga lainnya buat untuk memperluas fungsionalitas Reporting Services. Anda harus memberikan FullTrust ke ekstensi atau kode rakitan ini dalam file konfigurasi kebijakan yang terkait dengan komponen Reporting Services yang Anda perluas. Ekstensi yang dikirim sebagai bagian dari Reporting Services ditandatangani dengan kunci publik server laporan dan menerima set izin FullTrust .

Penting

Anda harus mengubah file konfigurasi kebijakan Reporting Services untuk mengizinkan FullTrust untuk ekstensi pihak ketiga mana pun. Jika Anda tidak menambahkan grup kode dengan FullTrust untuk ekstensi kustom Anda, grup kode tersebut tidak dapat digunakan oleh server laporan.

Untuk informasi selengkapnya tentang file konfigurasi kebijakan di Reporting Services, lihat Menggunakan file kebijakan keamanan Reporting Services.

Ekspresi yang Digunakan dalam Laporan

Ekspresi laporan adalah ekspresi kode sebaris atau metode yang ditentukan pengguna yang terkandung dalam elemen Kode dari file bahasa definisi laporan. Ada grup kode yang sudah dikonfigurasi dalam file kebijakan yang memberikan ekspresi ini izin Eksekusi yang ditetapkan secara default. Grup kode terlihat seperti contoh berikut:

<CodeGroup  
   class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="Execution"  
   Name="Report_Expressions_Default_Permissions"  
   Description="This code group grants default permissions for code in report expressions and Code element. ">  
    <IMembershipCondition  
       class="StrongNameMembershipCondition"  
       version="1"  
       PublicKeyBlob="002400..."  
    />  
</CodeGroup>  

Izin eksekusi memungkinkan kode untuk dijalankan (dijalankan), tetapi tidak menggunakan sumber daya yang dilindungi. Semua ekspresi yang ditemukan dalam laporan dikompilasi ke dalam rakitan (disebut rakitan "host ekspresi") yang disimpan sebagai bagian dari laporan yang dikompilasi. Saat laporan dijalankan, server laporan memuat rakitan host ekspresi dan melakukan panggilan ke dalam rakitan tersebut untuk menjalankan ekspresi. Rakitan host ekspresi ditandatangani dengan kunci tertentu yang digunakan untuk menentukan grup kode untuk semua host ekspresi.

Ekspresi laporan mereferensikan kumpulan model objek laporan (bidang, parameter, dll.) dan melakukan tugas sederhana seperti operasi aritmatika dan string. Kode yang melakukan operasi sederhana ini hanya memerlukan izin Eksekusi . Secara default, metode yang ditentukan pengguna dalam elemen Kode dan rakitan kustom apa pun diberikan izin Eksekusi di Reporting Services. Dengan demikian, untuk sebagian besar ekspresi, konfigurasi saat ini tidak mengharuskan Anda mengubah file kebijakan keamanan apa pun. Untuk memberikan izin tambahan untuk ekspresi rakitan host, administrator perlu memodifikasi file konfigurasi kebijakan server laporan dan Perancang Laporan, dan mengubah grup kode ekspresi laporan. Karena ini adalah pengaturan global, mengubah izin default untuk host ekspresi memengaruhi semua laporan. Untuk alasan ini, Anda harus menempatkan semua kode yang memerlukan keamanan ekstra ke dalam rakitan kustom. Hanya rakitan ini yang diberikan izin yang Anda butuhkan.

Penting

Kode yang memanggil rakitan eksternal atau sumber daya yang dilindungi harus dimasukkan ke dalam rakitan kustom untuk digunakan dalam laporan. Melakukannya memberi Anda lebih banyak kontrol atas izin yang diminta dan dinyatakan oleh kode Anda. Anda tidak boleh melakukan panggilan ke metode aman dalam elemen Kode . Melakukannya mengharuskan Anda untuk memberikan FullTrust ke host ekspresi laporan dan memberikan semua akses penuh kode kustom ke CLR.

Perhatian

Jangan berikan FullTrust ke grup kode untuk host ekspresi laporan. Jika ya, Anda mengaktifkan semua ekspresi laporan untuk melakukan panggilan sistem yang dilindungi.

Rakitan kustom yang dirujuk dalam laporan

Beberapa ekspresi laporan dapat memanggil rakitan kode lain, juga dikenal di Reporting Services sebagai rakitan kustom. Server laporan mengharapkan rakitan ini memiliki setidaknya izin Eksekusi dalam file konfigurasi kebijakan. Secara default, file kebijakan yang dikirim dengan Reporting Services memberikan izin Eksekusi ke semua rakitan mulai dari zona 'Komputer Saya'. Anda dapat memberikan izin tambahan ke rakitan kustom sesuai kebutuhan.

Dalam beberapa kasus, Anda mungkin perlu melakukan operasi yang memerlukan izin kode tertentu dalam ekspresi laporan. Biasanya, skenario ini berarti bahwa ekspresi laporan perlu melakukan panggilan ke metode pustaka CLR yang aman (seperti yang mengakses file atau registri sistem). Dokumentasi .NET Framework menjelaskan izin kode yang diperlukan untuk melakukan panggilan aman ini. Untuk menjalankan panggilan, kode panggilan harus diberikan izin spesifik dan aman ini. Jika Anda melakukan panggilan dari ekspresi laporan atau elemen Kode , rakitan host ekspresi harus diberikan izin yang sesuai. Namun, setelah Anda memberikan izin kepada host ekspresi, semua kode yang berjalan dalam ekspresi apa pun dalam laporan apa pun sekarang diberikan izin khusus tersebut. Jauh lebih aman untuk melakukan panggilan dari rakitan kustom dan memberikan izin khusus kepada rakitan kustom tersebut.