Aracılığıyla paylaş


Raporlama Servisleri içinde yetkilendirme

Yetkilendirme, kimlik raporlama sunucusu veritabanı belirli bir kaynağa erişim izni istenen türü verilmiş olup olmadığını belirleme işlemi gerçekleşir. Reporting Servicesbir kullanıcının erişim izni verilen kaynak uygulama için kullanıcı rol atamasının temel bir rol tabanlı yetkilendirme mimarisi kullanır. Güvenlik Uzantıları Reporting Servicesiçeren bir yetkilendirme bileşen rapor sunucusunda doğrulanan bir kez kullanıcılara erişim vermek için kullanılan bir uygulama. Yetkilendirme, kullanıcı sistemi ya da soap API aracılığıyla ve url erişim aracılığıyla rapor sunucusu madde üzerinde bir işlem gerçekleştirmeye çalıştığında çağrılır. Bu güvenlik uzantısı arabirimi aracılığıyla mümkün kılan IAuthorizationExtension. Daha önce belirtildiği gibi tüm uzantıları den devralan IExtension temel arabirim dağıttığınız herhangi bir uzantısı. IExtension ve IAuthorizationExtension üyesi Microsoft.ReportingServices.Interfaces ad.

Erişim denetimi

Yetkilendirme, herhangi bir özel güvenlik uygulaması içinde uygulanan erişim denetimi anahtarıdır CheckAccessyöntemi. CheckAccessher zaman bir kullanıcı rapor sunucusu üzerindeki bir işlem girişiminde denir. CheckAccessYöntemi her işlem türü için aşırı yük. Klasör işlemleri için erişim denetimi örneği aşağıdaki gibi görünebilir:

// 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;
}

// 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;
}

Rapor sunucusu arama CheckAccessyöntemi ile oturum açmış olan kullanıcının, kullanıcı belirteci, güvenlik tanımlayıcısı adına geçen madde ve istenen işlem için. Kullanıcı adı ve dönüş isteği tamamlamak için gerekli izni güvenlik tanımlayıcısı kontrol burada trueerişim verilmeden signify için veya falseerişim engellendi signify için.

Güvenlik tanımlayıcıları

Yetkilendirme ilkeleri üzerinde rapor sunucusu veritabanında öğeleri belirlenirken, bir istemci uygulaması (Rapor Yöneticisi) gibi güvenlik uzantısı öğesi için bir güvenlik ilkesi ile birlikte kullanıcı bilgileri gönderir. Bu güvenlik ilkesini ve kullanıcı bilgilerini toplu olarak güvenlik tanımlayıcısı olarak bilinmektedir. Güvenlik tanımlayıcısı için raporlama sunucusu veritabanı içindeki bir öğeyi aşağıdaki bilgileri içerir:

  • Grup ya da bir tür Madde işlemleri gerçekleştirmek için izni olan kullanıcı.

  • Öğenin türü.

  • Kısıtlı erişim denetim listesi öğesine erişimi denetleme.

Güvenlik tanımlayıcıları, Web hizmetini kullanarak oluşturulur SetPoliciesve SetSystemPoliciesyöntemleri.

Yetkilendirme akışı

Reporting ServicesYetkilendirme sunucu üzerinde çalıştırmak için şu anda yapılandırılmış güvenlik uzantısı tarafından denetlenir. Yetkilendirme rol tabanlı ve sınırlı izinleri ve işlemleri tarafından sağlanan Reporting ServicesGüvenlik mimarisi. Rapor sunucusu veritabanında öğeleri üzerinde çalışacağı kullanıcı yetkilendirme işlemi aşağıdaki çizimde gösterilmektedir:

Reporting Services güvenlik yetkilendirme akışı

Bu çizimde görüldüğü gibi yetkilendirme bu sırası aşağıdaki gibidir:

  1. Kimlik doğrulaması yapıldıktan sonra istemci uygulamaları Reporting Services Web hizmeti yöntemleri rapor sunucusu istekte bulunurlar. Bir kimlik doğrulama bileti her Web isteği http üstbilgisinde bir çerez şeklinde rapor sunucusuna geçirilir.

  2. Tanımlama bilgisi, önce herhangi bir erişim denetimi doğrulanır.

  3. Tanımlama bilgisi doğrulandıktan sonra rapor sunucusu arar GetUserInfove kullanıcı kimlik verilir.

  4. Kullanıcı bir işlem Reporting Services Web hizmeti yoluyla çalışır.

  5. Rapor sunucusu arama CheckAccessyöntemi.

  6. Güvenlik tanımlayıcısı alınır ve bir özel güvenlik uzantısı uygulanması için geçirilen CheckAccess. Bu noktada, kullanıcı, Grup veya bilgisayar için güvenlik tanımlayıcısı erişilen öğesinin karşılaştırılır ve istenen işlemi gerçekleştirmek için yetkili.

  7. Kullanıcının yetkilendirildiği Web hizmeti işlemi gerçekleştirir ve çağıran uygulama yanıt verir.