Как разграничить доступ пользователей на сервере отчётов?

Существуют разные подходы к организации папок на сервере отчётности MS SQL Server Reporting Services. Один из них — разложить отчёты по темам или по модулям и дать на них права всем пользователям iScala. Его преимущество в простоте, а недостаток в том, что любой может просмотреть любой отчёт. В настоящей статье я поделюсь более сложным, но гораздо более «продвинутым» способом организации папок и доступа не только собственно к отчётам в них, но и ограничению доступа к данным в этих отчётах.

На картинке ниже можно увидеть папки, ассоциированные с номерами департаментов (в iScala это учётное измерение 1 «Департамент»):

Каждый сотрудник имеет доступ в общую папку «Департаменты», но внутри неё только в папку своего департамента. Иными словами, в папку 1002, например, имею доступ только сотрудники департамента Front Office, а остальные пользователи в неё не допускаются. Сами отчёты (оригиналы) находятся в отдельной папке, куда у пользователей нет доступа, но мы можем создать в папках департаментов так называемые «Связанные отчёты» (Linked Report), которые являются своего рода ярлыком на основной отчёт, но обладают своим собственным набором параметров. Чтобы создать такой связанный отчёт необходимо проделать следующие действия:

  1. Выберем исходный отчёт и щёлкнем на элементе, обозначающем выпадающее меню. Далее выберем команду «Create Linked Report» (Создать связанный отчёт):
  2. Скопируйте в качестве имени связанного отчёта название основного отчёта и нажмите кнопку «Change Location»:
  3. Выберите папку в которую нужно поместить связанный отчёт и нажмите кнопку «ОК»:
  4. После возвращения в форму создания связанного отчёта нажмите кнопку «ОК»:
  5. Сервер отчётов вызовет созданный связанный отчёт. Но нам ещё нужно изменить параметры, для чего необходимо перейти в режим управления. Для этого щёлкните на названии отчёта в строке навигации:
  6. После перехода в режим управления перейдите на закладку параметров:
  7. На этой картинке самое интересное 🙂
    В отчёте имеется параметр с кодом департамента (Учётное измерение 1 iScala). Мы можем установить его по умолчанию равным коду департамента, соответствующему папке департамента и сделать его скрытым, т.е. пользователь не сможет поменять этот параметр. То же самое можно проделать в отношении кода компании:
  8. В результате пользователи департамента 2301 увидят набор только «своих» складов, а «чужие» не увидят:
  9. А для финансового департамента скрытый параметр «Dpt» установлен равным «*» и пользователи этого департамента смогут увидеть все склады

Про автоматизацию создания связанных отчётов рекомендую прочитать статью «Автоматизация создания связанных отчётов при сложной структуре»

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

 

Список опубликованных процедур: