Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Любой код, выполняемый сервером отчетов, должен быть частью определенной политики безопасности доступа к коду. Эти политики безопасности состоят из групп кода, которые сопоставляют доказательства с набором именованных наборов разрешений. Часто группы кода связаны с именованным набором разрешений, который указывает допустимые разрешения для кода в этой группе. Среда выполнения использует доказательства, предоставленные доверенным узлом или загрузчиком, чтобы определить, к каким группам кода относится код, и, следовательно, какие разрешения на предоставление кода. Службы Reporting Services соответствуют этой архитектуре политики безопасности, как определено средой clR (CLR) Microsoft .NET Framework. В следующих разделах описываются различные типы кода в службах Reporting Services и правила политики, связанные с ними.
Сборки сервера отчетов
Сборки сервера отчетов — это сборки сервера отчетов, содержащие код, который является частью продукта Служб Reporting Services. Службы Reporting Services записываются с помощью сборок управляемого кода; все эти сборки имеют строгое имя (то есть цифровая подпись). Группы кода для этих сборок определяются с помощью strongNameMembershipCondition, который предоставляет доказательства на основе сведений о открытом ключе для строгого имени сборки. Группа кода предоставляет набор разрешений FullTrust .
Расширения сервера отчетов (отрисовка, данные, доставка и безопасность)
Расширения сервера отчетов — это пользовательские данные, доставка, отрисовка и расширения безопасности, создаваемые вами или другими сторонними сторонами для расширения функциональных возможностей служб Reporting Services. Необходимо предоставить FullTrust этим расширениям или коду сборки в файлах конфигурации политики, связанных с расширенным компонентом служб Reporting Services. Расширения, отправленные в составе служб Reporting Services, подписаны с открытым ключом сервера отчетов и получают набор разрешений FullTrust .
Это важно
Необходимо изменить файлы конфигурации политики Служб Reporting Services, чтобы разрешить FullTrust для любых сторонних расширений. Если вы не добавите группу кода с FullTrust для пользовательских расширений, они не могут использоваться сервером отчетов.
Дополнительные сведения о файлах конфигурации политики в службах Reporting Services см. в разделе "Использование файлов политик безопасности служб Reporting Services".
Выражения, используемые в отчетах
Выражения отчета — это встроенные выражения кода или определяемые пользователем методы, содержащиеся в элементе Code файла языка определения отчета. Существует группа кода, которая уже настроена в файлах политики, которые предоставляют эти выражения разрешения выполнения , заданные по умолчанию. Группа кода выглядит следующим образом:
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="Execution"
Name="Report_Expressions_Default_Permissions"
Description="This code group grants default permissions for code in report expressions and Code element. ">
<IMembershipCondition
class="StrongNameMembershipCondition"
version="1"
PublicKeyBlob="002400..."
/>
</CodeGroup>
Разрешение на выполнение позволяет выполнять код (выполнять), но не использовать защищенные ресурсы. Все выражения, найденные в отчете, компилируются в сборку (называемую сборкой узла выражений), которая хранится в составе скомпилированного отчета. При выполнении отчета сервер отчетов загружает сборку узла выражения и вызывает ее для выполнения выражений. Сборки узла выражения подписываются определенным ключом, который используется для определения группы кода для всех узлов выражений.
Выражения отчетов ссылались на коллекции объектной модели отчета (поля, параметры и т. д.) и выполняют простые задачи, такие как арифметические и строковые операции. Код, выполняющий эти простые операции, требует только разрешения на выполнение . По умолчанию определяемые пользователем методы в элементе Code и любые пользовательские сборки предоставляются разрешения на выполнение в службах Reporting Services. Таким образом, для большинства выражений текущая конфигурация не требует изменения файлов политики безопасности. Чтобы предоставить дополнительные разрешения узлам выражений, администратору необходимо изменить файлы конфигурации политики сервера отчетов и конструктора отчетов, а также изменить группу кода выражений отчета. Так как это глобальный параметр, изменение разрешений по умолчанию для узлов выражений влияет на все отчеты. По этой причине настоятельно рекомендуется поместить весь код, требующий дополнительной безопасности в настраиваемую сборку. Только эта сборка будет предоставлена необходимым разрешениям.
Это важно
Код, вызывающий внешние сборки или защищенные ресурсы, должен быть включен в пользовательскую сборку для использования в отчетах. Это обеспечивает более полный контроль над запрошенными разрешениями и утверждениями в коде. Не следует вызывать безопасные методы в элементе Code . Для этого требуется предоставить FullTrust узлу выражений отчета и предоставить всем пользовательским кодам полный доступ к clR.
Осторожность
Не предоставляйте FullTrust группе кода для узла выражений отчета. При этом можно включить все выражения отчета для выполнения защищенных системных вызовов.
Пользовательские сборки, на которые ссылаются отчеты
Некоторые выражения отчета могут вызывать сторонние сборки кода, также известные в Службах Reporting Services как пользовательские сборки. Сервер отчетов ожидает, что эти сборки имеют по крайней мере разрешение на выполнение в файлах конфигурации политики. По умолчанию файлы политики, которые предоставляют службам Reporting Services разрешение на выполнение для всех сборок, начиная с зоны "Мой компьютер". При необходимости можно предоставить дополнительные разрешения пользовательским сборкам.
В некоторых случаях может потребоваться выполнить операцию, требующую определенных разрешений кода в выражении отчета. Как правило, это означает, что выражение отчета должно вызывать защищенный метод библиотеки CLR (например, доступ к файлам или системный реестр). В документации по .NET Framework описываются разрешения кода, необходимые для выполнения этого безопасного вызова; Для выполнения вызова код вызова должен быть предоставлен этим конкретным, безопасным разрешениям. При вызове из выражения отчета или элемента Code сборка узла выражения должна быть предоставлена соответствующим разрешениям. Однако после предоставления разрешения на размещение выражения все коды, которые выполняются в любом выражении в любом отчете, теперь предоставляются это конкретное разрешение. Это гораздо безопаснее для вызова из пользовательской сборки и предоставления этой пользовательской сборки определенных разрешений.
См. также
Безопасность доступа к коду в службах Reporting Services
Безопасная разработка (службы Reporting Services)