Безопасность доступа к коду в службах отчетности

Центры безопасности доступа к коду относятся к этим основным понятиям: доказательства, группы кода и именованные наборы разрешений. В службах Reporting Services компоненты диспетчера отчетов, конструктора отчетов и сервера отчетов имеют файл политики, который настраивает безопасность доступа к коду для пользовательских сборок, а также данных, доставки, отрисовки и расширений безопасности. В следующих разделах представлен обзор безопасности доступа к коду. Дополнительные сведения о разделах, описанных в этом разделе, см. в разделе "Модель политики безопасности" в документации по пакету SDK microsoft .NET Framework.

Службы Reporting Services используют безопасность доступа к коду, так как, хотя сервер отчетов основан на технологии ASP.NET, существует существенное различие между типичным приложением ASP.NET и сервером отчетов. Обычное приложение ASP.NET не выполняет пользовательский код. В отличие от этого, службы Reporting Services используют открытую и расширяемую архитектуру, которая позволяет пользователям программировать файлы определений отчета с помощью элемента Code языка определения отчета и разрабатывать специализированные функции в настраиваемую сборку для использования в отчетах. Кроме того, разработчики могут разрабатывать и развертывать мощные расширения, повышающие возможности сервера отчетов. Благодаря этой силе и гибкости необходимо обеспечить максимальное количество защиты и безопасности.

Разработчики служб Reporting Services могут использовать любую сборку .NET Framework в своих отчетах и вызывать все функциональные возможности сборок, развернутых в глобальном кэше сборок. Единственное, что сервер отчетов может контролировать, какие разрешения предоставляются для выражений отчетов и загруженных пользовательских сборок. В службах Reporting Services пользовательские сборки по умолчанию получают разрешения только для выполнения.

Свидетельство

Свидетельством является информация, которую среда CLR использует для определения политики безопасности для сборок кода. Доказательства указывают среде выполнения, что код имеет определенную характеристику. Распространенные формы доказательств включают цифровые подписи и расположение сборки. Доказательства также могут быть настраиваемыми для представления других сведений, значимых для приложения.

Оба сборки и домены приложений получают разрешения на основе доказательств. Например, расположение сборки, к которым службы Reporting Services пытается получить доступ, является одной из распространенных форм доказательств слабо именованных сборок. Это называется свидетельством URL-адреса. Доказательства URL-адреса для настраиваемого модуля обработки данных, развернутого на сервере отчетов, могут быть "C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll". Строгое имя или цифровая подпись сборки является другой распространенной формой доказательств. В этом случае доказательства — это информация открытого ключа для сборки.

Группы кода

Группа кода — это логическая группа кода, которая имеет указанное условие для членства. Любой код, соответствующий условию членства, включен в группу. Администраторы настраивают политику безопасности, управляя группами кода и связанными наборами разрешений.

Условие членства для группы кода основано на доказательствах. Например, членство ПО URL-адреса для группы кода основано на доказательствах URL-адреса. Среда CLR использует характеристики идентификации, такие как доказательства URL-адреса, чтобы описать код и определить, соответствует ли условие членства в группе. Например, если условие членства в группе кода является "кодом в C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dllсборки", среда выполнения проверяет доказательства, чтобы определить, исходит ли код из этого расположения. Пример записи конфигурации для этой группы кода может выглядеть следующим образом:

<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>  

Обратитесь к специалисту по развертыванию системного администратора или приложения, чтобы определить тип групп безопасности доступа к коду и групп кода, необходимых пользовательским сборкам или расширениям служб Reporting Services.

Именованные наборы разрешений

Именованный набор разрешений — это набор разрешений, которые администраторы могут связать с группой кода. Большинство именованных наборов разрешений состоят по крайней мере из одного разрешения, имени и описания набора разрешений. Администраторы могут использовать именованные наборы разрешений для установки или изменения политики безопасности для групп кода. Несколько групп кода могут быть связаны с одним именованным набором разрешений. Среда CLR предоставляет встроенные именованные наборы разрешений; Среди них — "Ничего", "Выполнение", "Интернет", "LocalIntranet", "Все" и "FullTrust".

Замечание

Пользовательские данные, доставка, отрисовка и расширения безопасности в службах Reporting Services должны выполняться в наборе разрешений FullTrust . Обратитесь к системным администраторам, чтобы добавить соответствующие условия для групп кода и членства в расширениях служб Reporting Services.

Вы можете связать собственные пользовательские уровни разрешений для пользовательских сборок, используемых с отчетами. Например, если вы хотите разрешить сборке получить доступ к определенному файлу, можно создать новый именованный набор разрешений с определенным доступом к файлу ввода-вывода, а затем назначить набор разрешений группе кода. Следующий набор разрешений предоставляет доступ только для чтения к файлу 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>  

Группа кода, которая предоставляет этот набор разрешений, может выглядеть следующим образом:

<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>  

См. также

Безопасная разработка (службы Reporting Services)