Я работаю в компании A. Компания A имеет дочернюю компанию B. Обе компании A и B используют одну и ту же базу данных ERP. Я создал отчет SSRS 2005 , который может использоваться обеими компаниями. Он имеет параметр CompanyID, который определяет, отображать ли данные для компании A или компании B.
Для большинства отчетов это будет нормально, но для конфиденциальной информации компании (такой как платежная ведомость) это будет проблемой, так как любой в компании A может изменить параметр CompanyID на ID компании B, и наоборот.
Моей первоначальной идеей для решения этой проблемы было создание связанного отчета t для каждой компании в их соответствующих папках A и B, где защита только для папки A разрешала только пользователям компании A и безопасность для папки B только разрешено пользователям B Затем я бы добавил параметр CompanyID по умолчанию к каждому связанному отчету и скрыл параметры от пользователя. Все идет нормально. Проблема в том, что вы все еще можете изменить значения параметров, используя строку запроса URL. Например, пользователь в компании A может изменить URL-адрес отчета с:
http://server/ReportServer/ReportViewer.aspx?/Payroll/A&rs:Command=Render
до:
http://server/ReportServer/ReportViewer.aspx?/Payroll/A&rs:Command=Render&CompanyID=B
Теперь они полностью обошли скрытый параметр по умолчанию.
Какой хороший подход для решения этой проблемы? Я хотел бы поделиться отчетами между обеими компаниями, если это возможно.
Обновление:
У нас также есть корпоративные сети ASP.NET, которые уже ограничивают доступ на основе компании через домен AD. Я полагаю, что мог бы использовать элемент управления ReportViewer на странице интрасети, чтобы применять соответствующие параметры во время выполнения. Я мог бы включить эту логику в общую страницу отчета, которую можно использовать для любого отчета, верно? (Прошу прощения за мое невежество, я полный SSRS n00b)