Otorisasi di SQL Server Reporting Services

Otorisasi adalah proses penentuan apakah identitas harus diberikan jenis akses yang diminta ke sumber daya tertentu dalam database server laporan. Reporting Services menggunakan arsitektur otorisasi berbasis peran yang memberikan akses pengguna ke sumber daya tertentu berdasarkan penetapan peran pengguna untuk aplikasi. Ekstensi keamanan untuk Reporting Services berisi implementasi komponen otorisasi yang digunakan untuk memberikan akses kepada pengguna setelah diautentikasi di server laporan. Otorisasi dipanggil ketika pengguna mencoba melakukan operasi pada sistem atau item server laporan melalui SOAP API dan melalui akses URL. Skenario ini dimungkinkan melalui antarmuka ekstensi keamanan IAuthorizationExtension2. Seperti yang dinyatakan sebelumnya, semua ekstensi mewarisi dari IExtension antarmuka dasar untuk ekstensi apa pun yang Anda sebarkan. IExtension dan IAuthorizationExtension2 adalah anggota namespace Microsoft.ReportingServices.Interfaces .

Periksa akses

Dalam otorisasi, kunci untuk setiap implementasi keamanan kustom adalah pemeriksaan akses, yang diimplementasikan dalam CheckAccess metode . CheckAccess dipanggil setiap kali pengguna mencoba operasi di server laporan. Metode CheckAccess ini kelebihan beban untuk setiap jenis operasi. Untuk operasi folder, contoh pemeriksaan akses mungkin terlihat seperti contoh berikut:

// Overload for Folder operations  
public bool CheckAccess(  
   string userName,   
   IntPtr userToken,   
   byte[] secDesc,   
   FolderOperation requiredOperation)  
{  
   // If the user is the administrator, allow unrestricted access.  
   if (userName == m_adminUserName)   
      return true;  
  
   AceCollection acl = DeserializeAcl(secDesc);  
   foreach(AceStruct ace in acl)  
   {  
         if (userName == ace.PrincipalName)  
         {  
            foreach(FolderOperation aclOperation in   
               ace.FolderOperations)  
            {  
               if (aclOperation == requiredOperation)  
                     return true;  
            }  
         }  
   }  
   return false;  
}  

Server laporan memanggil CheckAccess metode dengan meneruskan nama pengguna yang masuk, token pengguna, deskriptor keamanan untuk item, dan operasi yang diminta. Di sini Anda akan memeriksa pendeskripsi keamanan untuk nama pengguna dan izin yang sesuai untuk menyelesaikan permintaan, lalu mengembalikan true untuk menandakan bahwa akses diberikan atau salah untuk menandakan akses ditolak.

Deskriptor keamanan

Saat mengatur kebijakan otorisasi pada item di database server laporan, aplikasi klien (seperti Manajer Laporan) mengirimkan informasi pengguna ke ekstensi keamanan bersama dengan kebijakan keamanan untuk item tersebut. Kebijakan keamanan dan informasi pengguna ini dikenal secara kolektif sebagai pendeskripsi keamanan. Deskriptor keamanan berisi informasi berikut untuk item dalam database server laporan:

  • Grup atau pengguna yang memiliki beberapa jenis izin untuk melakukan operasi pada item.

  • Jenis item.

  • Daftar kontrol akses diskresi yang mengontrol akses ke item.

Deskriptor keamanan dibuat menggunakan layanan SetPolicies web dan SetSystemPolicies metode.

Alur otorisasi

Otorisasi Reporting Services dikontrol oleh ekstensi keamanan yang saat ini dikonfigurasi untuk berjalan di server. Otorisasi berbasis peran dan terbatas pada izin dan operasi yang disediakan oleh arsitektur keamanan Reporting Services. Diagram berikut menggambarkan proses otorisasi pengguna untuk beroperasi pada item di database server laporan:

Screenshot of the Reporting Services security authorization flow.

Seperti yang ditunjukkan dalam diagram ini, otorisasi mengikuti urutan ini:

  1. Setelah diautentikasi, aplikasi klien membuat permintaan ke server laporan melalui metode layanan Web Reporting Services. Tiket autentikasi diteruskan ke server laporan dalam bentuk cookie di header HTTP dari setiap permintaan Web.

  2. Cookie divalidasi sebelum pemeriksaan akses apa pun.

  3. Setelah cookie divalidasi, server laporan memanggil GetUserInfo dan pengguna diberi identitas.

  4. Pengguna mencoba operasi melalui layanan Web Reporting Services.

  5. Server laporan memanggil CheckAccess metode .

  6. Deskriptor keamanan diambil dan diteruskan ke implementasi ekstensi keamanan kustom .CheckAccess Pada titik ini, pengguna, grup, atau komputer dibandingkan dengan pendeskripsi keamanan item yang diakses dan berwenang untuk melakukan operasi yang diminta.

  7. Jika pengguna diotorisasi, layanan Web melakukan operasi dan mengembalikan respons terhadap aplikasi panggilan.