Bagikan melalui


Keamanan akses kode di Reporting Services

Pusat keamanan akses kode pada konsep inti ini: bukti, grup kode, dan set izin bernama. Di Reporting Services, komponen Report Manager, Perancang Laporan, dan Report Server masing-masing memiliki file kebijakan yang mengonfigurasi keamanan akses kode untuk rakitan kustom. File kebijakan ini juga mengonfigurasi akses kode untuk data, pengiriman, penyajian, dan ekstensi keamanan. Bagian berikut memberikan gambaran umum keamanan akses kode. Untuk informasi selengkapnya tentang artikel yang dibahas di bagian ini, lihat "Model Kebijakan Keamanan" dalam dokumentasi Microsoft .NET Framework SDK.

Reporting Services menggunakan keamanan akses kode karena, meskipun server laporan dibangun berdasarkan teknologi ASP.NET, ada perbedaan besar antara aplikasi ASP.NET umum dan server laporan. Aplikasi ASP.NET umum tidak menjalankan kode pengguna. Sebaliknya, Reporting Services menggunakan arsitektur terbuka dan dapat diperluas yang memungkinkan pengguna untuk memprogram terhadap file definisi laporan menggunakan elemen Kode dari Bahasa Definisi Laporan dan untuk mengembangkan fungsionalitas khusus ke dalam rakitan kustom untuk digunakan dalam laporan. Selain itu, pengembang dapat merancang dan menyebarkan ekstensi canggih yang meningkatkan kemampuan server laporan. Kekuatan dan fleksibilitas ini hadir dengan kebutuhan untuk memberikan perlindungan dan keamanan sebanyak mungkin.

Pengembang Reporting Services dapat menggunakan perakitan .NET Framework apa pun dalam laporan mereka dan secara asli memanggil semua fungsionalitas rakitan yang disebarkan ke cache perakitan global. Satu-satunya hal yang dapat dikontrol server laporan adalah izin apa yang diberikan untuk ekspresi laporan dan rakitan kustom yang dimuat. Di Reporting Services, rakitan kustom menerima izin Jalankan saja secara default.

Bukti

Bukti adalah informasi yang digunakan runtime bahasa umum (CLR) untuk menentukan kebijakan keamanan untuk rakitan kode. Bukti menunjukkan kepada runtime kode tersebut memiliki karakteristik tertentu. Bentuk bukti umum termasuk tanda tangan digital dan lokasi perakitan. Bukti juga dapat dirancang khusus untuk mewakili informasi lain yang bermakna bagi aplikasi.

Baik rakitan maupun domain aplikasi menerima izin berdasarkan bukti. Misalnya, lokasi rakitan yang coba diakses Reporting Services adalah salah satu bentuk bukti umum untuk rakitan bernama lemah. Contoh ini dikenal sebagai bukti URL. Bukti URL untuk ekstensi pemrosesan data kustom yang disebarkan ke server laporan mungkin .C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll Nama yang kuat atau tanda tangan digital dari rakitan adalah bentuk bukti umum lainnya. Dalam hal ini, bukti adalah informasi kunci publik untuk perakitan.

Grup kode

Grup kode adalah pengelompokan kode logis yang memiliki kondisi tertentu untuk keanggotaan. Kode apa pun yang memenuhi kondisi keanggotaan disertakan dalam grup. Administrator mengonfigurasi kebijakan keamanan dengan mengelola grup kode dan set izin terkait.

Kondisi keanggotaan untuk grup kode didasarkan pada bukti. Misalnya, keanggotaan URL untuk grup kode didasarkan pada bukti URL. Runtime bahasa umum (CLR) menggunakan mengidentifikasi karakteristik seperti bukti URL untuk menjelaskan kode dan untuk menentukan apakah kondisi keanggotaan grup telah terpenuhi. Misalnya, jika kondisi keanggotaan grup kode adalah "kode dalam rakitan C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll", runtime memeriksa bukti untuk menentukan apakah kode berasal dari lokasi tersebut. Contoh entri konfigurasi untuk jenis grup kode ini mungkin terlihat seperti contoh berikut:

<CodeGroup class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="FullTrust"  
   Name="MyCodeGroup"  
   Description="Code group for my data processing extension">  
      <IMembershipCondition class="UrlMembershipCondition"  
         version="1"  
         Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll"  
       />  
</CodeGroup>  

Anda harus bekerja dengan administrator sistem atau pakar penyebaran aplikasi untuk menentukan jenis keamanan akses kode dan grup kode yang diperlukan rakitan kustom atau ekstensi Reporting Services Anda.

Set izin bernama

Kumpulan izin bernama adalah sekumpulan izin yang dapat dikaitkan administrator dengan grup kode. Sebagian besar set izin bernama terdiri dari setidaknya satu izin, nama, dan deskripsi untuk kumpulan izin. Administrator dapat menggunakan set izin bernama untuk membuat atau mengubah kebijakan keamanan untuk grup kode. Lebih dari satu grup kode dapat dikaitkan dengan set izin bernama yang sama. CLR menyediakan set izin bernama bawaan seperti Tidak Ada, Eksekusi, Internet, LocalIntranet, Semuanya, dan FullTrust.

Catatan

Data kustom, pengiriman, penyajian, dan ekstensi keamanan di Reporting Services harus berjalan di bawah set izin FullTrust . Bekerja sama dengan administrator sistem Anda untuk menambahkan grup kode dan kondisi keanggotaan yang sesuai untuk ekstensi Reporting Services Anda.

Anda dapat mengaitkan tingkat izin kustom Anda sendiri untuk rakitan kustom yang Anda gunakan dengan laporan. Misalnya, jika Anda ingin mengizinkan assembly untuk mengakses file tertentu, Anda dapat membuat set izin bernama baru dengan akses I/O file tertentu lalu menetapkan izin yang diatur ke grup kode Anda. Set izin berikut memberikan akses baca-saja ke file MyFile.xml:

<PermissionSet class="NamedPermissionSet"  
   version="1"  
   Name="MyNewFilePermissionSet"  
   Description="A special permission set that grants read access to my file.">  
    <IPermission class="FileIOPermission"  
       version="1"  
       Read="C:\MyFile.xml"/>  
    <IPermission class="SecurityPermission"  
       version="1"  
       Flags="Assertion, Execution"/>  
</PermissionSet>  

Grup kode yang Anda berikan set izin ini mungkin terlihat seperti contoh berikut:

<CodeGroup class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="MyNewFilePermissionSet"  
   Name="MyNewCodeGroup"  
   Description="A special code group for my custom assembly.">  
   <IMembershipCondition class="UrlMembershipCondition"  
      version="1"  
      Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\MyCustomAssembly.dll"/>  
</CodeGroup>