Защита моделей

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

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

  • От защиты модели на основе роли (то есть возможности просматривать модель в иерархии папок сервера отчетов).

  • От защиты на основе роли для отчета, который использует эту модель в качестве источника данных. Если пользователю не удается получить доступ к отчету, он не сможет просматривать данные в этой модели (в службах Службы Reporting Services данные модели можно просматривать только в отчетах; приложения стороннего разработчика могут представлять данные модели другими способами).

  • От защиты элементов этой модели.

  • От защиты базы данных на уровне представления, таблицы или столбца.

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

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

  • Пользователи, обладающие разрешением на просмотр модели, могут делать это в иерархии папок сервера отчетов, а также считывать ограниченный объем сведений о модели на странице «Общие свойства» (например, когда она была создана или изменялась), а также запрашивать модель путем перехода по ссылкам в любом нерегламентированном отчете, который использует эту модель в качестве источника данных.

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

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

Защита элементов модели

Защита элементов модели позволяет управлять доступом к определенным частям модели. Защита элементов настраивается в среде SQL Server Management Studio. После включения защиты элементов модели можно создавать назначения ролей для определенных узлов пространства имен этой модели. Дополнительные сведения см. в разделе Страница «Безопасность элементов модели» (диспетчер отчетов).

Пространство имен модели отчета представлено в виде иерархической структуры, состоящей из корневого узла, сущностей, ролей модели и полей. Кроме того, она состоит из папок и проекций, которые используются для организации (но не защиты) элементов модели. При просмотре модели в среде Management Studio можно перемещаться по иерархической структуре и назначать роли на различных уровнях. Назначение ролей в корневом узле позволяет управлять доступом ко всей модели отчета или к отдельным ее частям (путем изменения разрешений для отдельных ветвей). Как и в случае с защитой пространства имен папок сервера отчетов, пространство имен модели поддерживает наследуемую защиту элементов на вложенных уровнях в структуре дерева.

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

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

Защита моделей с помощью системы безопасности базы данных

Безопасность базы данных обеспечивает третий уровень защиты отчета, управляемого моделью. Если ограничить доступ к таблицам или столбцам, то база данных при несанкционированном доступе возвратит ошибку доступа. Если в модель включены таблицы или столбцы, которые являются субъектами защиты базы данных, то при попытке подключиться к элементу модели, соответствующему таблице или столбцу, просмотр которых не разрешен для данного пользователя, будет возвращено сообщение об ошибке. Хотя защита базы данных на уровне таблиц или столбцов в некоторых случаях необходима, ее влияние на перемещение по нерегламентированному отчету зависит именно от импорта. Пользователь, получающий сообщение об ошибке при перемещении по отчету, должен вернуться в ту часть модели, доступом к которой он обладает.

ПримечаниеПримечание

Если значения определенных таблиц или столбцов для определенных пользователей зависит от безопасности базы данных, убедитесь, что в источнике данных используется встроенная безопасность Windows.

Защищаемые элементы модели

Среда Management Studio используется для защиты следующих элементов модели:

  • корневой узел;

  • папки;

  • сущности;

  • роли модели (где термин «роль» относится к связям между сущностями);

  • поля.

Проекцию нельзя защитить как единое целое, однако можно защитить элементы модели внутри проекции. Защита наследуется на основе безопасности элементов модели. Например, если доступом к элементу модели обладают только администраторы, то при появлении проекции этого элемента модели доступ к нему сможет получить также только администратор.

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

Скрытие элементов модели

В качестве альтернативы ограничению доступа через назначение ролей можно запрещать пользователям просматривать определенные части модели с помощью свойства «Hidden». Если нужно скрыть от пользователей тот или иной элемент модели, то в конструкторе моделей следует задать свойству «Hidden» для данного элемента значение «true». Скрытие элемента не удаляет его из вычислений или связей модели. Например, если какое-либо поле в выражении скрыто, оно тем не менее используется выражением, хотя пользователи его не видят. Скрытие элемента распространяется на всех пользователей. Если видимость элемента и доступ к нему нужно изменить для конкретного пользователя или группы, то для его защиты следует использовать не свойство «Hidden», а назначение ролей.

Защита элементов в модели отчета

Защитить элементы можно в модели от диспетчера отчетов. Модель должна быть развернута на сервере отчетов.

  1. В диспетчере отчетов перейдите к папке, в которой находится модель.

  2. Проведите курсором над именем модели, щелкните стрелку, чтобы открыть меню, и выберите Безопасность.

  3. На странице свойств модели нажмите кнопку Безопасность элемента модели.

  4. Установите флажок Установить защиту отдельных элементов модели независимо от самой модели.

  5. Выберите корневой узел. Для корневого узла требуется назначение ролей.

  6. Выберите Назначить разрешения следующим пользователям и группам.

  7. Введите список пользователей или групп, используя точку с запятой «;» в качестве разделителя.

  8. Нажмите кнопку Применить.

  9. Перейдите к следующей сущности, связи, полю или папке, для которых нужно установить защиту. Повторите шаги с 6 по 8.