Образец Security Extension

Изменения: 5 декабря 2005 г.

Образец модуля безопасности CustomSecurity использует проверку подлинности с помощью форм совместно с SQL Server для формирования пользовательской модели безопасности, которая работает вместе со службами Reporting Services. Этот образец не поддерживается операционными системами для платформы Itanium.

Образцы SQL Server не устанавливаются автоматически. Инструкции по установке образцов см. в разделе Установка образцов.

ms160724.security(ru-ru,SQL.90).gifПримечание безопасности.
Образец Security Extension не следует развертывать и тестировать в рабочей среде. Возврат к режиму проверки подлинности Windows после перехода на другой уровень безопасности обычно не рекомендуется. Во время выполнения могут возникнуть ошибки при попытке обращения к элементам в базе данных сервера отчетов, которые имеют пользовательские дескрипторы безопасности и не имеют дескрипторов безопасности проверки подлинности Windows. Чтобы вернуться к проверке подлинности Windows, необходимо заново установить службы Reporting Services и вручную повторно применить для пользователей Windows все параметры безопасности на основе ролей. Перед запуском этого образца следует сделать резервные копии файлов конфигурации.
ms160724.note(ru-ru,SQL.90).gifВажно!
Образцы предназначены только для обучения. Они не предназначены для использования в производственной среде и не тестировались в ней. Корпорация Майкрософт не предоставляет техническую поддержку для этих образцов. Образцы приложений и сборок не должны ни подключаться к рабочей базе данных SQL Server или к серверу отчетов, ни использоваться с ними без разрешения системного администратора.

Требования

Для запуска образца CustomSecurity необходимы навыки работы с Visual Studio и языком Visual C# или Visual Basic. Кроме того, должно быть установлено следующее программное обеспечение.

  • Среда Microsoft Visual Studio 2005 или совместимая среда разработки (для просмотра файлов проекта).
  • Microsoft .NET Framework версии 2.0.
  • SQL Server 2005, включая службы Reporting Services.
  • Образцы служб Reporting Services.
  • сервер отчетов, на доступ к которому имеется разрешение (если планируется использование образца расширения для добавления возможностей по обработке данных на сервере).

Расположение

По умолчанию образец расположен в подкаталоге Extension Samples\FormsAuthentication Sample каталога образцов служб Reporting Services.

C:\Program Files\Microsoft SQL Server\90\Samples\Reporting Services\Extension Samples\FormsAuthentication Sample

Построение образца

Сначала необходимо скомпилировать и установить модуль. Процедура подразумевает, что службы Reporting Services установлены в следующем каталоге по умолчанию: «C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services». Это место в оставшейся части данного раздела будет именоваться <установка>.

Если файл ключа для строгого имени еще не создавался, создайте его следующим образом.

To generate a strong name key file

  1. Откройте командную строку Microsoft Visual Studio 2005. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.

    -- или --

    Откройте командную строку Microsoft .NET Framework. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.

  2. Используйте команду CD, чтобы сменить текущий каталог командной строки и перейти в каталог, в котором установлены образцы.

    ms160724.note(ru-ru,SQL.90).gifПримечание.
    Чтобы определить каталог, в котором установлены образцы, нажмите кнопку Пуск, укажите пункты Все программы, Microsoft SQL Server, Документация и учебные материалы, а затем выберите пункт Каталог образцов. Если использовался каталог установки по умолчанию, то образцы расположены в каталоге «<системный_диск>:\Program Files\Microsoft SQL Server\100\Samples».
  3. В командной строке выполните следующую команду, чтобы создать файл ключа:

    sn -k SampleKey.snk

    ms160724.note(ru-ru,SQL.90).gifВажно!
    Дополнительные сведения о паре ключей для строгого имени см. в статье по строгим именам и безопасности для платформы .NET Framework в центре разработчиков .NET в MSDN.

Компиляция образца при помощи Visual Studio 2005

  1. Откройте файл CustomSecurity.sln в среде Microsoft Visual Studio 2005. Если образец был установлен в каталог по умолчанию, то его можно найти в папке «C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\Samples\Extensions».

  2. В обозревателе решений выберите проект CustomSecurity.

  3. В меню Проект выберите пункт Добавить ссылку.

    Откроется диалоговое окно Добавление ссылки.

  4. Перейдите на вкладку .NET.

  5. Нажмите кнопку Обзор и найдите на локальном диске файл Microsoft.ReportingServices.Interfaces. По умолчанию сборка расположена в каталоге <установка>\ReportServer\bin. Нажмите кнопку ОК.

    Выбранная ссылка будет добавлена в проект.

  6. В меню Построить выберите пункт Построить решение.

Развертывание образца

После компиляции образца следует скопировать файлы DLL и страницы ASPX в соответствующие подкаталоги для установки сервера отчетов.

Развертывание образца

  1. Скопируйте файлы Microsoft.Samples.ReportingServices.CustomSecurity.dll и Microsoft.Samples.ReportingServices.CustomSecurity.pdb в каталог <установка>\ReportServer\bin.

  2. Скопируйте файлы Microsoft.Samples.ReportingServices.CustomSecurity.dll и Microsoft.Samples.ReportingServices.CustomSecurity.pdb в каталог <установка>\ReportManager\bin.

  3. Скопируйте страницу Logon.aspx в каталог <установка>\ReportServer, а страницу UILogon.aspx — в каталог <установка>\ReportManager\Pages.

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

ms160724.note(ru-ru,SQL.90).gifВажно!
Перед внесением изменений создайте резервные копии всех файлов конфигурации.

Изменение файла RSReportServer.config

  1. Откройте файл RSReportServer.config в среде Visual Studio 2005 или при помощи обычного текстового редактора (например, в Блокноте). Файл RSReportServer.config расположен в каталоге <установка>\ReportServer.

  2. Найдите в нем элементы <Security> и <Authentication> и измените параметры следующим образом:

    <Security>
       <Extension Name="Forms" 
    Type="Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, 
    Microsoft.Samples.ReportingServices.CustomSecurity" >
          <Configuration>
             <AdminConfiguration>
                <UserName>username</UserName>
             </AdminConfiguration>
          </Configuration>
       </Extension>
    </Security>
    <Authentication>
       <Extension Name="Forms" 
    Type="Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension,
     Microsoft.Samples.ReportingServices.CustomSecurity" />
    </Authentication>
    

    Дополнительные сведения о безопасности платформы .NET Framework и служб Reporting Services см. в разделе Understanding Code Access Security in Reporting Services.

Для изменения файла RSWebApplication.config

  1. Далее следует открыть файл конфигурации диспетчера отчетов RSWebApplication.config, расположенный в каталоге <установка>\ReportManager.

  2. Найдите элемент <UI> и измените его следующим образом:

    <UI>
       <CustomAuthenticationUI>
          <loginUrl>/Pages/UILogon.aspx</loginUrl>
             <UseSSL>True</UseSSL>
       </CustomAuthenticationUI>
       <ReportServerUrl>http://<server>/ReportServer</ReportServerUrl>
    </UI>
    
ms160724.note(ru-ru,SQL.90).gifПримечание.
Если образец расширения безопасности запускается в среде разработки, где не установлен SSL-сертификат, то в предыдущем пункте конфигурации необходимо изменить значение элемента <UseSSL> на False. Рекомендуется всегда использовать сертификат протокола SSL при сочетании служб Reporting Services с проверкой подлинности с помощью форм.

Понадобится добавить группу кода для пользовательского модуля безопасности, которое предоставляет разрешение FullTrust для вашего модуля. Это достигается добавлением группы кода к файлу конфигурации rssrvpolicy.config.

Изменение файла RSSrvPolicy.config

  1. Откройте файл rssrvpolicy.config, расположенный в каталоге <установка>\ReportServer.

  2. Найдите в файле политики безопасности rssrvpolicy.config группу кода, имеющую URL-членство $CodeGen, как показано ниже, а затем добавьте соответствующий новый пункт.

    ms160724.note(ru-ru,SQL.90).gifПримечание.
    Если установлены службы Analysis Services, необходимо изменить Url="C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll на MSSQL.3.
    <CodeGroup
       class="UnionCodeGroup"
       version="1"
       PermissionSetName="FullTrust">
       <IMembershipCondition 
          class="UrlMembershipCondition"
          version="1"
          Url="$CodeGen$/*"
       />
    </CodeGroup>
    <CodeGroup
       class="UnionCodeGroup"
       version="1"
       Name="SecurityExtensionCodeGroup"
       Description="Code group for the sample security extension"
       PermissionSetName="FullTrust">
       <IMembershipCondition 
          class="UrlMembershipCondition"
          version="1"
          Url="C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll"
       />
    </CodeGroup>
    
ms160724.note(ru-ru,SQL.90).gifПримечание.
Для простоты образец проверки подлинности на основе форм не требует строгих имен, ему достаточно наличия записи о простом URL-членстве в файлах политики безопасности. В производственной реализации модуля безопасности необходимо создать сборки со строгими именами и использовать условие строгого именного членства при добавлении политик безопасности к своей сборке. Дополнительные сведения о сборках со строгими именами см. в разделе Создание и использование сборок со строгими именами в библиотеке MSDN.

Далее понадобится увеличить разрешения для группы кода «My Computer» в файле политики диспетчера отчетов.

Изменение файла RSMgrPolicy.config

  1. Откройте файл политик диспетчера отчетов rsmgrpolicy.config, расположенный в каталоге <установка>\ReportManager.

  2. Найдите в файле rsmgrpolicy.config следующую группу кода и измените атрибут PermissionSetName с Execution на FullTrust, как показано ниже:

    <CodeGroup 
            class="FirstMatchCodeGroup" 
            version="1" 
            PermissionSetName="FullTrust"
            Description="This code group grants MyComputer code Execution 
    permission. ">
        <IMembershipCondition 
                class="ZoneMembershipCondition"
                version="1"
                Zone="MyComputer" />
    

Для использования проверки подлинности с помощью форм следует изменить файлы Web.config для диспетчера отчетов и сервера отчетов, чтобы изменить метод проверки подлинности и отключить олицетворение.

Изменение файла Web.config для сервера отчетов

  1. Откройте файл Web.config в текстовом редакторе. По умолчанию сборка расположена в каталоге <установка>\ReportServer.

  2. Найдите элемент <identity> и присвойте атрибуту Impersonate значение false.

    <identity impersonate="false" />
    
  3. Найдите элемент <authentication> и присвойте атрибуту Mode значение Forms.

  4. Добавьте следующий элемент <forms> в качестве дочернего элемента для элемента <authentication> и присвойте атрибутам loginUrl, name, timeout и path следующие значения:

    <authentication mode="Forms">
       <forms loginUrl="logon.aspx" name="sqlAuthCookie" timeout="60" 
                   path="/"></forms>
       </authentication>
    
  5. Добавьте следующий элемент <authorization> непосредственно после элемента <authentication>.

    <authorization> 
       <deny users="?" />
    </authorization>
    

    Это запретит доступ к серверу отчетов не прошедшим проверку пользователям. Ранее установленный атрибут loginUrl элемента <authentication> будет перенаправлять не прошедшие проверку запросы на страницу Logon.aspx.

Изменение файла Web.config для диспетчера отчетов

  1. Откройте файл Web.config диспетчера отчетов. Файл RSReportServer.config расположен в каталоге <установка>\ReportServer.

  2. Отключите олицетворение, найдя раздел <identity impersonate= "true" /> и изменив его следующим образом: <identity impersonate="false" />.

Настройка анонимной проверки подлинности

По умолчанию группа пользователей Windows «Гости» включается в учетную запись IUSR_имя_компьютера. Учетная запись используется для первичной локальной регистрации и просмотра страницы Logon.aspx. Для поддержки проверки подлинности с помощью форм следует разрешить анонимный доступ к виртуальному каталогу ReportServer. По умолчанию анонимный доступ запрещен.

Включение анонимной проверки подлинности

  1. В службах Internet Information Services выберите виртуальный каталог ReportServer, обычно входящий в состав веб-узла по умолчанию, и откройте вкладки Свойства.

  2. Перейдите на вкладку Безопасность каталогов.

  3. В разделе Анонимный доступ и управление проверкой подлинности щелкните Правка.

    Появится диалоговое окно Методы проверки подлинности.

  4. Установите флажок Анонимный доступ.

  5. Нажмите кнопку ОК.

    Повторите эти действия для виртуального каталога «Отчеты».

Создание базы данных UserAccounts

Образец включает сценарий базы данных createuserstore.sql, который позволяет настроить сохранение пользователей для образца Forms базы данных SQL Server.

Создание базы данных UserAccounts

  1. Откройте среду SQL Server Management Studio и подключитесь к локальному экземпляру SQL Server.

  2. Найдите файл сценария SQL createuserstore.sql. Сценарий содержится в файлах образца проекта.

  3. Просмотрите сценарий до конца и замените «LocalMachine» на имя своего компьютера. При работе под управлением Windows Server 2003 замените LocalMachine\ASPNET на NT AUTHORITY\NETWORK SERVICE (если не применяется режим совместимости с IIS 5).

  4. Выполните запрос, чтобы создать базу данных UserAccounts.

  5. Выйдите из среды SQL Server Management Studio.

Проверка образца

Следующая процедура проверит расширение образца. Зарегистрируйте пользователя-администратора, который добавляет имя пользователя, хэш пароля и значение помех в таблицу users базы данных UserAccounts. Также понадобится ввести это имя пользователя в файл конфигурации сервера отчетов. Затем нужно зарегистрироваться под именем этого пользователя, чтобы проверить правильность проверки пароля, а также загрузку сборки расширения сервером отчетов.

Создание проекта отчета

  1. Перезапустите IIS, набрав в командной строке Iisreset.exe.

  2. Откройте диспетчер отчетов. Это можно сделать из меню программ служб Reporting Services или открыв виртуальный каталог Reports с помощью обозревателя.

  3. Введите имя пользователя, пароль и нажмите кнопку Зарегистрировать пользователя, чтобы добавить его в базу данных accounts.

  4. Откройте файл RSReportServer.config. Найдите элемент <Security> и добавьте имя ранее зарегистрированного пользователя следующим образом:

    <Security>
       <Extension Name="Forms" 
    Type="Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, 
    Microsoft.Samples.ReportingServices.CustomSecurity" >
          <Configuration>
             <AdminConfiguration>
                <UserName>username</UserName>
             </AdminConfiguration>
          </Configuration>
       </Extension>
    </Security>
    
  5. Вернитесь на страницу UILogon.aspx, повторно введите имя пользователя и пароль, а затем нажмите кнопку Вход в систему.

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

ms160724.note(ru-ru,SQL.90).gifПримечание.
Необходимо добавить пользователя-администратора к официальным ролям администратора системы и диспетчера содержимого (корневой каталог) сервера отчетов. Это предотвращает появление пустых дескрипторов безопасности в существующей базе данных сервера отчетов. Дополнительные сведения о ролях системного администратора и диспетчера содержимого см. в разделе Обзор предопределенных ролей

Использование веб-служб с пользовательской безопасностью

Можно использовать интерфейс прикладного программирования (API) веб-служб как с проверкой подлинности с помощью форм, так и с проверкой подлинности Windows. Однако в коде веб-служб необходимо вызвать LogonUser и пройти проверку учетных данных текущего пользователя. Кроме того, этот клиент веб-службы автоматически не обрабатывает файлы «cookie», как Internet Explorer и другие веб-обозреватели. Чтобы обеспечить эту возможность, необходимо расширить класс-посредник Microsoft.ReportingServices. Это можно сделать, переписав методы класса веб-служб GetWebRequest и GetWebResponse.

Отладка образца расширения

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

Microsoft .NET Framework предлагает несколько средств отладки, которые могут помочь проанализировать образцы кода. В следующей процедуре производится отладка предыдущего образца в Visual Studio 2005.

Отладка образца кода проверки подлинности с помощью форм

  1. Запустите среду Visual Studio и откройте файл CustomSecurity.sln на тестовом сервере отчетов.

  2. Откройте Internet Explorer и перейдите к диспетчеру отчетов, оставив образец кода открытым в среде Visual Studio.

  3. Переключитесь на среду Visual Studio и установите несколько точек остановки в коде проекта пользовательского модуля безопасности.

  4. Оставив активным окно проекта расширения, в меню Отладка выберите пункт Процесс.

    Откроется диалоговое окно Процессы.

  5. В списке процессов выберите процесс Aspnet_wp.exe (или W3wp.exe, если ваше приложение развернуто под IIS 6.0) и щелкните Присоединить.

  6. В диалоговом окне Присоединить к процессу выберите тип программы среда CLR, затем нажмите OK. Для повышения производительности процесса отладки убедитесь, что не выбран тип программы Собственный.

  7. При запуске образца появляется форма регистрации. Введите в форму свои учетные данные и нажмите кнопку Вход в систему.

    В каком бы месте ни встретилась точка остановки, отладчик остановит в ней выполнение процесса.

  8. Перемещайтесь по шагам кода с помощью клавиши F11. Дополнительные сведения об использовании среды Visual Studio для отладки см. в документации Visual Studio 2005.

ms160724.note(ru-ru,SQL.90).gifПримечание.
Этот способ отладки требует достаточно много ресурсов и процессорного времени. При возникновении сложностей закройте среду Visual Studio, перезапустите IIS и начните заново, подключив решение CustomSecurity к рабочему процессу ASP.NET и зарегистрировавшись в диспетчере отчетов.

Удаление образца расширения

Хотя это и не рекомендуется, можно вернуться к проверке подлинности Windows после того, как образец будет испытан.

Возвращение к проверке подлинности Windows

  1. Восстановите следующие файлы из резервных копий: Web.config, RSReportServer.config и RSWebApplication.config. Это установит для сервера отчетов стандартные для Windows методы проверки подлинности и авторизации. При этом также удаляются все изменения в файлах конфигурации сервера и диспетчера отчетов, сделанные для расширения.

  2. Отключение анонимного доступа в службах Internet Information Services (IIS) для виртуального каталога сервера отчетов.

После удаления данных конфигурации ваш модуль безопасности больше недоступен для сервера отчетов. Не требуется удалять никакие дескрипторы безопасности, созданные во время работы сервера отчетов под образцом модуля безопасности. Когда включена проверка подлинности Windows, сервер отчетов автоматически присваивает роль системного администратора группе BUILTIN\Администраторы компьютера, на котором развернут сервер отчетов. В то же время потребуется вручную заново установить все параметры безопасности на основе ролей для пользователей Windows.

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

См. также

Задачи

Образцы служб SQL Server Reporting Services

Другие ресурсы

Образцы Extension (службы Reporting Services)
Implementing a Security Extension

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Измененное содержимое
  • Изменены инструкции по созданию файла ключа, включающие его имя и расположение.