Часто при администрировании системы QlikView приходится решать вопросы прав доступа на уровне документов (при наличии у пользователя лицензии). Как правило, доступ к документу можно предоставить:

  • либо лично пользователю – в свойствах безопасности документа,
  • либо настройкой групповых политик в ActiveDirectory (AD) – включить пользователя в группу, у которой есть доступ к этому документу. Соответственно, убрать доступ можно такими же путями.

Доступ к документам: Чек-лист

При работе с доступами к документам приходится отвечать на следующие вопросы:

  1. У пользователя есть доступ к этому документу?
  2. Если нет доступа напрямую к документу, то, может быть, он есть через какую-либо группу?
  3. Через эту группу нет, но тут есть еще группы в этой группе – может быть, доступ есть через одну из вложенных групп?
  4. К каким еще документам у пользователя есть доступ?
  5. А кто вообще и имеет доступ к этому документу?

И так далее. До определенного момента ответы на такие вопросы решались просмотром свойств документов, исследованием групп и уровней их вложенности в AD. Но если на первые три вопроса ответ можно найти довольно быстро, то на последние два, которые требуют либо анализа всех документов QlikView на сервере, либо перечисления всех пользователей и пользователей всех групп, имеющих доступ к документу, на поиски ответа можно потратить очень большое количество времени.

Утилита: Быстрый анализ уровней доступа к документам

Примерно в таких размышлениях нами было принято решение создать инструмент быстрого анализа уровней доступа, который смог бы ответить на вышеперечисленные вопросы. В процессе разработки мы применили уже ставшую традиционной связку QlikView + PowerShell. Они разделили задачи между собой следующим образом:

  • PowerShell
    • Забирает пользователей из AD.
    • Забирает группы из AD и их членов.
    • Анализирует доступы к документам директории с документами на сервере.
    • Создает выгрузки полученных данных в формате .csv.
    • Запускает QlikVIew.
  • QlikView
    • Забирает файлы данных, подготовленные PowerShell.
    • Трансформирует, выделяет нужное и сохраняет в хранилище с меткой даты, на которую действуют эти доступы (даты выгрузки).
    • Представляет данные в удобном для анализа виде.

Теперь обо всем по порядку.

Для начала нам надо узнать:

  • собственно, какие пользователи у нас есть в системе,
  • какие группы заведены и членов этих групп.

С этими вопросами мы можем обратиться в AD.

НА ЗАМЕТКУ! Краткая справка из Википедии, что же такое АД:  Active Directory («Активный каталог», AD) — LDAP-совместимая реализация службы каталогов корпорации Microsoft для операционных систем семейства Windows Server. Позволяет администраторам использовать групповые политики для обеспечения единообразия настройки пользовательской рабочей среды, разворачивать программное обеспечение на множестве компьютеров через групповые политики и т.п.

Если по-простому, то для нас это – каталог пользователей и групп, посредством которого можно управлять доступом пользователей и его уровнями. Его мы выгружаем с помощью Power Shell и складываем в хранилище для дальнейшей переработки QlikView. Сначала выгружаем всех пользователей системы:Права доступа к документам

Затем группы и их членов:Права доступа к документам

Права доступа к документамИ, наконец, грузим непосредственно права доступа к изучаемым каталогам:

Права доступа к документам

После этого шага Power Shell запускает QlikView и передает эстафету ему. Как известно, в .qvd информация хранится более оптимально, чем в .csv, поэтому, в первую очередь, с помощью QlikView мы забираем созданные Powershell .csv файлы, преобразуем в требуемый для нас вид и сохраняем в .qvd с временной меткой. Однажды ожидаем возникновение еще одного запроса от пользователей, с которым еще не сталкивались:

А у кого когда-либо был доступ к этому файлу?

Поэтому уже сейчас готовимся к нему, сохраняя историю доступов.

После этого шага осталось только загрузить данные в QlikView и показать их в виде, который поможет ответить на все поставленные выше вопросы (за исключением последнего – с ним к нам еще не приходили J). Этот этап оказался интересен моментом, когда требуется анализировать вложенность групп – группа может содержать группу, которая может содержать группу, в которой состоит пользователь и именно через эту цепочку он получает доступ. Но этот вопрос решился использованием встроенной функции иерархий QlikView.

В итоге у нас получился дашборд с аскетичным дизайном и необходимым функционалом:

Права доступа к документам

За ценные идеи и участие в создании материалов этой статьи благодарю Голева Илью и Головкина Андрея!