Поделиться через


Включение и отключение «песочницы» для языка определения отчетов

Функция «песочницы» для языка определения отчетов позволяет обнаруживать и ограничивать использование определенных типов ресурсов отдельными пользователями в среде с многочисленными пользователями, которые используют единственную веб-ферму серверов отчетов. Примером этого является сценарий услуг хост-сервера, в котором может поддерживаться единственная веб-ферма серверов отчетов, применяемая несколькими пользователями, а также, возможно, другими компаниями. Администратор сервера отчетов может включить эту функцию для выполнения следующих задач.

  • Ограничение размера внешних ресурсов. Внешние ресурсы включают изображения, XSLT-файлы и данные карт.

  • Во время публикации отчета ограничить типы и члены, используемые в тексте выражения.

  • Во время выполнения ограничить длину текста и размер возвращаемых значений для выражений.

При включении функции «песочницы» для языка определения отчетов отключаются следующие функции:

  • Пользовательский код в элементе определения отчета <Code>>.

  • Режим обратной совместимости RDL для пользовательских элементов отчета SQL Server 2005 Reporting Services (службы SSRS).

  • именованные параметры в выражениях.

В этом разделе описывается каждый элемент в элементе <RDLSandboxing> в файле RSReportServer.Config. Дополнительные сведения о внесении изменений в файл см. в разделе Изменение файла конфигурации служб Reporting Services (RSreportserver.config). Операции с записями журнала трассировки сервера, связанные с функцией «песочницы» для выражений языка определения отчетов. Дополнительные сведения о журналах трассировки см. в разделе Журнал трассировки службы сервера отчетов.

Пример конфигурации

В следующем примере показаны параметры и примеры значений <RDLSandboxing> для элемента в файле RSReportServer.Config.

<RDLSandboxing>  
   <MaxExpressionLength>5000</MaxExpressionLength>  
   <MaxResourceSize>5000</MaxResourceSize>  
   <MaxStringResultLength>3000</MaxStringResultLength>  
   <MaxArrayResultLength>250</MaxArrayResultLength>  
   <Types>  
      <Allow Namespace="System.Drawing" AllowNew="True">Bitmap</Allow>  
      <Allow Namespace="TypeConverters.Custom" AllowNew="True">*</Allow>  
   </Types>  
   <Members>  
      <Deny>Format</Deny>  
      <Deny>StrDup</Deny>  
   </Members>  
</RDLSandboxing>  

Параметры конфигурации

Сведения о параметрах настройки приведены в следующей таблице. Параметры представлены в том порядке, в котором они следуют в файле конфигурации.

Параметр Описание
MaxExpressionLength Максимально допустимое число символов в выражении языка определения отчетов.

Значение по умолчанию: 1000
MaxResourceSize Максимально допустимый размер внешнего ресурса (КБ).

Значение по умолчанию: 100
MaxStringResultLength Максимально допустимое число символов для возвращаемого значения выражения языка определения отчетов.

Значение по умолчанию: 1000
MaxArrayResultLength Максимальное число элементов для возвращаемого значения выражения языка определения отчетов, допустимое в массиве.

Значение по умолчанию: 100
Типы Список членов, разрешенных для выражений языка определения отчетов.
Разрешить Тип или набор типов, разрешенных для выражений языка определения отчетов.
Пространство имен Атрибут для элемента Allow , представляющий пространство имен, содержащее один или несколько типов, применимых к атрибуту Value. Это свойство учитывает регистр символов.
AllowNew Логический атрибут элемента Allow, указывающий, разрешено ли создание новых экземпляров этого типа в выражениях RDL или в элементах RDL <Class>.

Примечание. Если RDLSandboxing параметр включен, новые массивы нельзя создавать в выражениях языка определения отчетов независимо от параметра AllowNew.
Значение Значение элемента Allow , представляющее имя типа, разрешенного в выражениях языка определения отчетов. Значение * показывает, что разрешены все типы в пространстве имен. Это свойство учитывает регистр символов.
Участники Для списка типов, включенных в элемент <Типы> , представляет список имен членов, запрещенных в выражениях языка определения отчетов.
Запретить Имя члена, запрещенного в выражении языка определения отчетов. Это свойство учитывает регистр символов.

Примечание. Если для элемента указано Deny , то все элементы всех типов с этим именем будут запрещены.

Работа с выражениями в режиме «песочницы» для выражений языка определения отчетов

Функцию «песочницы» для выражений языка определения отчетов можно изменить, чтобы обеспечить управление ресурсами, используемыми в выражении, следующим образом:

  • ограничение количества символов, используемых в выражении;

  • ограничение размера результата, возвращаемого выражением;

  • разрешение списка определенных типов, которые могут быть использованы в выражении;

  • ограничение списка членов по именам для списка разрешенных типов, которые могут быть использованы в выражении;

  • функция «песочницы» для выражений языка определения отчетов позволяет создать список разрешенных типов и список запрещенных членов. Список разрешенных типов называется списком разрешений. Список запрещенных членов называется списком блокировок.

Примечание

В определении отчета компьютеру неизвестны типы всех экземпляров в справочниках выражений служб. При добавлении члена к списку блокировок в списке разрешений блокируются все члены всех типов с этим именем.

Проверка результатов выражений языка определения отчетов производится во время выполнения. Выражения языка определения отчетов проверяются в определении отчета при публикации отчета. Наблюдение за журналом трассировки сервера отчетов на наличие нарушений. Дополнительные сведения см. в статье Report Server Service Trace Log.

Работа с типами

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

  • статические члены этого типа;

  • Метод Visual Basic New .

  • Элемент <Классы> в определении отчета.

  • члены, добавленные к списку блокировок, для типа в списке разрешений.

Список разрешений не управляет следующими точками входа:

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

  • параметры отчета; Указанные пользователем значения параметров могут содержать любой допустимый тип выражения языка определения отчетов;

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

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

  • добавить к имени члена элемент <Запретить> ;

  • в пользовательской сборке создать в классе член-посредник с другим именем для того члена, который необходимо разрешить;

  • добавить этот новый класс к списку разрешений.

Чтобы добавить функции Visual Basic .NET Framework в список разрешений, добавьте в список разрешений соответствующие типы из пространства имен Microsoft.VisualBasic.

Чтобы добавить ключевые слова типа Visual Basic .NET Framework, добавьте в список разрешений соответствующий тип CLR. Например, чтобы использовать платформа .NET Framework ключевое слово IntegerVisual Basic, добавьте следующий фрагмент XML в <элемент RDLSandboxing>:

<Allow Namespace="System">Int32</Allow>  

Чтобы добавить универсальный или допускающий значение NULL тип Visual Basic .NET Framework в список разрешений, выполните следующие действия:

  • Создайте тип-посредник для универсального или допускающего значение NULL типа Visual Basic .NET Framework.

  • добавьте тип-посредник к списку разрешений.

При добавлении типа из пользовательской сборки к списку разрешений для сборки неявное предоставление разрешения на выполнение не выполняется. Необходимо специально изменить файл управления доступом для кода, предоставив разрешение на выполнение для данной сборки. Дополнительные сведения см. в статье Code Access Security in Reporting Services.

Ведение <списка запретов> участников

В следующем списке показано, когда необходимо обновление списка заблокированных членов при добавлении нового типа к списку разрешений:

  • при обновлении пользовательской сборки до версии, в которой вводятся новые типы;

  • при добавлении новых членов к типам в списке разрешений;

  • При обновлении платформы .NET Framework на сервере отчетов.

  • При обновлении сервера отчетов до последней версии служб Reporting Services.

  • при обновлении сервера отчетов для обработки последней схемы языка определения отчетов при добавлении новых членов к типам языка определения отчетов.

Работа с операторами и оператором New

По умолчанию операторы языка Visual Basic платформа .NET Framework, за Newисключением , всегда разрешены. Оператор New управляется атрибутом AllowNew элемента <Allow> . Другие операторы языка, такие как оператор доступа коллекции по умолчанию и Visual ! Basic платформа .NET Framework макросы приведения, такие как CInt, всегда разрешены.

Добавление операторов к списку заблокированных, включая пользовательские, не поддерживается. Чтобы исключить тип операторов, выполните следующие действия:

  • создайте тип-посредник, не реализующий операторы, которые необходимо исключить;.

  • добавьте тип-посредник к списку разрешений.

Чтобы создать новый массив в выражении языка определения отчетов, создайте массив в определяемом классе и добавьте этот класс к списку разрешений.

Чтобы создать новый массив в выражении языка определения отчетов, необходимо выполнить следующие действия:

  • определите новый класс и создайте массив в методе в этом классе;

  • добавьте этот класс к списку разрешений.

См. также:

RSReportServer Configuration File
Журнал трассировки службы сервера отчетов