Bagikan melalui


Menegaskan izin dalam rakitan kustom

Secara default, kode rakitan kustom berjalan dengan set izin Eksekusi terbatas. Dalam beberapa kasus, Anda mungkin ingin menerapkan rakitan kustom yang melakukan panggilan aman ke sumber daya yang dilindungi dalam sistem keamanan Anda (seperti file atau registri). Untuk mencapai hal ini, Anda harus mengambil tindakan berikut:

  1. Identifikasi izin yang tepat yang dibutuhkan kode Anda untuk melakukan panggilan aman. Jika metode ini adalah bagian dari pustaka Microsoft .NET Framework, informasi ini harus disertakan dalam dokumentasi metode.

  2. Ubah file konfigurasi kebijakan server laporan untuk memberikan izin yang diperlukan kepada rakitan kustom. Untuk informasi selengkapnya tentang file konfigurasi kebijakan keamanan, lihat Menggunakan File Kebijakan Keamanan Reporting Services.

  3. Tegaskan izin yang diperlukan sebagai bagian dari metode di mana panggilan aman dilakukan. Ini diperlukan karena kode rakitan kustom yang dipanggil oleh server laporan adalah bagian dari rakitan host ekspresi laporan, yang berjalan dengan izin Eksekusi secara default. Kumpulan izin Eksekusi memungkinkan kode dijalankan, tetapi tidak menggunakan sumber daya yang dilindungi.

  4. Tandai rakitan kustom dengan AllowPartiallyTrustedCallersAttribute jika ditandatangani dengan nama yang kuat. Ini diperlukan karena rakitan kustom dipanggil dari ekspresi laporan yang merupakan bagian dari rakitan host ekspresi laporan, yang, secara default, tidak diberikan FullTrust; sehingga ini adalah pemanggil "tepercaya sebagian". Untuk informasi selengkapnya, lihat Menggunakan Rakitan Kustom Strong-Named.

Menerapkan Panggilan Aman

Anda dapat mengubah file konfigurasi kebijakan untuk memberikan izin spesifik perakitan Anda. Misalnya, jika Anda menulis rakitan kustom untuk menangani konversi mata uang, Anda mungkin perlu membaca nilai tukar mata uang saat ini dari file. Untuk mengambil informasi tarif, Anda perlu menambahkan izin keamanan tambahan, FileIOPermission, ke izin Anda yang ditetapkan untuk perakitan. Anda dapat membuat entri tambahan berikut dalam file konfigurasi kebijakan:

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

Anda kemudian menambahkan grup kode yang mereferensikan kumpulan izin tersebut:

<CodeGroup class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="CurrencyRatesFilePermissionSet"  
   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\MSSQL\Reporting Services\ReportServer\bin\CurrencyConversion.dll"/>  
</CodeGroup>  

Agar kode Anda memperoleh izin yang sesuai, Anda harus menegaskan izin dalam kode rakitan kustom Anda. Misalnya, jika Anda ingin menambahkan akses baca-saja ke file XML, C:\CurrencyRates.xml, Anda harus menambahkan kode berikut ke metode Anda:

// C#  
FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\CurrencyRates.xml");  
try  
{  
   permission.Assert();  
   // Load the XML currency rates file  
   XmlDocument doc = new XmlDocument();  
   doc.Load(@"C:\CurrencyRates.xml");  
...  

Anda juga dapat menambahkan pernyataan sebagai atribut metode:

[FileIOPermissionAttribute(SecurityAction.Assert, Read=@"C:\CurrencyRates.xml")]  

Untuk informasi selengkapnya, lihat ".NET Framework Security" di Panduan Pengembang .NET Framework.

Menggunakan Rakitan Kustom dengan Laporan