Защита отчетов и ресурсов
Можно управлять степенью предоставляемого пользователям доступа к отдельным отчетам и ресурсам. По умолчанию только пользователи, являющиеся членами встроенной группы Администраторы, могут выполнять отчеты, просматривать ресурсы, изменять свойства и удалять элементы. Остальные пользователи должны иметь созданные для них назначения ролей, предоставляющие доступ к отчету или ресурсу.
Доступ к отчетам и ресурсам на основе ролей
Чтобы предоставить доступ к отчетам и ресурсам, можно разрешить пользователям наследовать существующие назначения ролей родительской папки или создать новые назначения ролей для нужного элемента.
В большинстве случаев используются разрешения, унаследованные от родительской папки. Установка параметров безопасности для конкретного отчета или ресурса необходима только в том случае, если нужно скрыть отчет или ресурс от пользователей, которым не нужно знать о его существовании, или для расширения доступа к отчету или элементу. Эти цели не исключают друг друга. Можно сделать отчет доступным для меньшего количества пользователей и одновременно предоставить всем или некоторым из них дополнительные права доступа для управления отчетом.
Возможно, для решения поставленной задачи придется выполнить несколько назначений ролей. Допустим, нужно предоставить доступ к отчету двум пользователям (Анне и Фернандо) и членам группы менеджеров по управлению персоналом. Анна и Фернандо должны иметь возможность управлять отчетом, а члены группы менеджеров по управлению персоналом — только выполнять его. Для согласования всех этих пользователей необходимо создать три отдельных назначения ролей: одно — чтобы сделать Анну диспетчером содержимого отчета, второе — чтобы сделать Фернандо диспетчером содержимого отчета и третье — чтобы предоставить членам группы менеджеров по управлению персоналом право только на просмотр отчета.
Если заданы параметры безопасности для отчета или ресурса, эти параметры продолжают действовать даже после перемещения элемента в новое место. Например, если отчет, обращаться к которому могут только несколько пользователей, будет перемещен в папку, на которую распространяется сравнительно свободная политика обеспечения безопасности, отчет по-прежнему будет доступен только этим пользователям.
Сдерживание атак, осуществляемых путем инжекции HTML-кода, в опубликованном отчете или документе
В службах Службы Reporting Services отчеты и ресурсы обрабатываются с использованием идентификатора безопасности пользователя, который запустил отчет. Если отчет содержит выражения, сценарий, пользовательские элементы отчета или пользовательские сборки, код выполняется с использованием учетных данных пользователя. Если ресурсом является HTML-документ, содержащий сценарий, сценарий начнет выполняться, когда пользователь откроет документ на сервере отчетов. Возможность запустить код или сценарий без отчета — мощная функция, несущая в себе определенную долю риска. Если код вредоносен, сервер отчетов и пользователь, запустивший отчет, становятся уязвимыми для атаки.
Предоставляя доступ к отчетам и ресурсам, обрабатываемым как HTML, важно помнить, что отчеты обрабатываются с полным уровнем доверия и что потенциально вредоносный сценарий может быть отослан клиенту. В зависимости от настроек браузера клиент будет выполнять HTML-код с уровнем доверия, установленным в браузере.
Можно снизить риск выполнения вредоносных сценариев, приняв следующие меры предосторожности.
Избирательно решайте, кто может публиковать содержимое на сервере отчетов. Поскольку всегда существует возможность публикации вредоносного содержимого, лучше ограничить число пользователей, которые могут публиковать содержимое.
Все издатели также должны избегать публикации отчетов и ресурсов, поступивших из неизвестных или не заслуживающих доверия источников. При необходимости откройте файл в текстовом редакторе и поищите подозрительный скрипт или URL-адреса.
Параметры отчета и внедрение скриптов
Параметры отчета обеспечивают гибкость общего проектирования и выполнения отчетов. Однако в некоторых случаях этой гибкостью может воспользоваться злоумышленник для организации атаки. Чтобы снизить риск неумышленного запуска вредоносных сценариев, открывайте только готовые для просмотра отчеты из надежных источников. Рекомендуется ознакомиться со следующим сценарием, представляющим потенциальную возможность атаки путем внедрения скрипта в модуль подготовки к просмотру в формате HTML:
Отчет содержит текстовое поле с действием гиперссылки, равным значению параметра, который может содержать опасный текст.
Отчет публикуется на сервере отчетов или делается доступным другим образом, при этом значением параметра отчета можно управлять через URL-адрес веб-страницы.
Злоумышленник создает ссылку на веб-страницу или на сервер отчетов, указывая значение параметра в виде «javascript:<вредоносный_скрипта>» и отправляет эту ссылку кому-либо еще, выполняя завлекающую атаку.
Противодействие атакам путем внедрения скриптов в гиперссылки в опубликованном отчете или документе
Отчеты могут содержать внедренные гиперссылки в значении свойства Action элемента отчета или части элемента отчета. Гиперссылки могут быть привязаны к данным, извлекаемым из внешнего источника данных при обработке отчетов. Если злоумышленник изменит базовые данные, возникает опасность использования гиперссылки для атаки с помощью уязвимости в реализации обработки сценариев. Когда пользователь щелкает ссылку в опубликованном или экспортированном отчете, может выполниться скрипт злоумышленника.
Чтобы уменьшить риск включения в отчеты ссылок, через которые можно запускать вредоносные сценарии, привязывайте гиперссылки только к данным из надежных источников. Убедитесь, что данные результатов запросов и выражения, привязывающие данные к гиперссылкам, не создают ссылок, которыми может воспользоваться злоумышленник. Например, не основывайте гиперссылку на выражении, объединяющем данные из нескольких полей набора данных. При необходимости перейдите к отчету и воспользуйтесь функцией «Просмотр исходного кода», чтобы проверить код на наличие подозрительных сценариев и URL-адресов.
Сдерживание атак, осуществляемых путем инжекции кода SQL, в параметризованном отчете
В любом отчете, содержащем параметры типа String, используйте список доступных значений (иначе называемый списком допустимых значений) и убедитесь, что у любого пользователя, запускающего отчеты, есть разрешение только на просмотр данных в отчете. При определении параметра типа String пользователю предоставляется текстовое поле, в которое можно ввести любое значение. Список допустимых значений ограничивает значения, которые могут быть введены. Если параметр отчета привязан к параметру запроса и не использует список допустимых значений, пользователь отчета может ввести в это текстовое поле команду на языке SQL и выполнить атаку встроенными командами SQL в отношении этого отчета и всего сервера. Наличие у этого пользователя достаточных разрешений для выполнения новой инструкции SQL может привести к нежелательным последствиям на сервере.
Если параметр отчета не привязан к параметру запроса и значения параметра включены в отчет, пользователь отчета может ввести синтаксис выражения или URL-адрес в значение параметра и подготовить отчет для просмотра через Excel или HTML. Если после этого другой пользователь просматривает отчет и щелкает содержимое подготовленного к просмотру параметра, то он может невольно выполнить вредоносный сценарий или перейти по ссылке.
Чтобы снизить риск неумышленного запуска вредоносных сценариев, открывайте отчеты, готовые для просмотра, только из проверенных источников.
Примечание |
---|
В предыдущих версиях документации был включен пример создания динамического запроса в виде выражения. Этот тип запроса не рекомендуется использовать, так как он создает уязвимость для атак, осуществляемых путем инжекции SQL-кода. |
Защита конфиденциальных отчетов
Отчеты, содержащие конфиденциальные данные, следует защищать на уровне доступа к данным, требуя от пользователей, чтобы они предоставили учетные данные, дающие право на доступ к этим данным. Дополнительные сведения см. в разделе Задание учетных данных и сведений о соединении для источников данных отчета. Кроме того, можно защитить папку, сделав ее недоступной для неавторизованных пользователей. Дополнительные сведения см. в разделе Защита папок.
См. также