Включение и отключение «песочницы» для языка определения отчетов
Функция «песочницы» для языка определения отчетов позволяет обнаруживать и ограничивать использование определенных типов ресурсов отдельными пользователями в среде с многочисленными пользователями, которые используют единственную веб-ферму серверов отчетов. Примером этого является сценарий услуг хост-сервера, в котором может поддерживаться единственная веб-ферма серверов отчетов, применяемая несколькими пользователями, а также, возможно, другими компаниями. Администратор сервера отчетов может включить эту функцию для выполнения следующих задач.
Ограничение размера внешних ресурсов. Внешние ресурсы включают изображения, 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 ключевое слово Integer
Visual 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
Журнал трассировки службы сервера отчетов