Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Управление доступом для кода основывается на следующих базовых понятиях: свидетельство, группы кода и именованные наборы разрешений. В службах 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 предоставляет встроенные именованные наборы разрешений, такие как Nothing, Execution, Internet, LocalIntranet, Everything и 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>