Poziomy dostępu do danych w Qlik Sense

Mimo powtarzanej w czasopismach i na blogach mantry o jak najszerszym dostępie pracowników firmy do danych, często nadal występuje potrzeba jego ograniczenia. Czy to ze względów bezpieczeństwa, czy po prostu praktycznych – aplikacja analityczna okrojona dla danego managera do jednego regionu, będzie dla niego czytelniejsza.

W tym wpisie opiszę sposoby zarządzania dostępem do danych w Qlik Sense.

Dostęp danych Qlik Sense

Serce Qlika

“Sercem” Qlik Sense jest aplikacja analityczna (“appka”). Aplikacje zawierają w sobie dane i zbudowane na tych danych wizualizacje. Jednolite i “samowystarczalne” pliki aplikacji możemy przenosić między środowiskami (lokalny serwer, własny komputer, chmura).

Gdy aplikacja jest w środowisku komputera osobistego – czyli w Qlik Sense Desktop – nie wdrożymy żadnych ograniczeń, ponieważ domyślnie aplikacja jest i tak dostępna tylko dla nas, mamy nad nią pełną kontrolę. Gdy plik aplikacji prześlemy innej osobie, przekażemy jej również pełną kontrolę.

Ograniczenie dostępu możemy wdrożyć w aplikacjach opublikowanych na serwerze, czy to w Hubie serwera firmowego (on-premise lub w chmurze) czy to w Hubie Qlik Sense Cloud.

Opisane tutaj sposoby ustalania poziomów dostępu mają w związku z tym zastosowanie do aplikacji opublikowanych na serwerze.

Qlik dostęp do apki

Dostęp do appki, potem do zakresu danych w appce

W każdym miejscu appka jest reprezentowana przez miniaturkę. Możemy sobie wyobrazić dwa etapy dostępu – najpierw dostęp do appki, czyli jej miniaturki, potem dostęp do zakresu danych wewnątrz aplikacji.

To jest:

A. przed dostaniem się do aplikacji, czyli jej widoczność
B. po otwarciu aplikacji, czyli zakres danych.

Licencje Qlik

Dostęp do appki

1. Licencja

Użytkownik musi mieć przyznaną licencję, by móc skorzystać z Huba Qlik Sense. W Qlik Sense występuje kilka różnych licencji, ale nia mają one wpływu na zakres dostępu do danych, tylko na funkcjonalności interfejsu.

QMC, czyli Qlik Management Console, przykładowe przypisanie licencji.

Strumienie w Qlik Sense

2. Dostęp do strumienia

Aplikacje na serwerze zorganizowane są w “strumieniach” – można w nich znaleźć analogię do “folderów”. Podobnie w chmurze Qlik Cloud (SaaS) – tu mamy “spaces”.

Po autentykacji użytkownika i sprawdzeniu jego licencji, nastąpi sprawdzenie autoryzacji. W tym momencie zaczynają działać tzw. Security Rules. Z użyciem tych reguł sterujemy dostępem do strumieni. Liczba strumieni nie jest ograniczona, tworzymy je według potrzeb danej organizacji. Mogą powstać strumienie dedykowane dla poszczególnych działów, np. swój “folder” będzie miał Controlling, Logistyka, Marketing itd, lub według funkcji, np. Kierownicy sklepów, agenci terenowi, dyrekcja. W mniejszych organizacjach tworzymy czasami jeden strumień i korzystamy z następnego poziomu kontroli dostępu – do aplikacji. Jest to szczególnie wygodne w przypadku wdrożeń, gdzie jeden lub dwóch deweloperów dostarcza aplikacje dla całej firmy i użytkownicy są mało aktywni w produkowaniu własnych analiz w ramach swoich strumieni. Tworzymy wtedy jeden strumień, do którego “wrzucamy” wszystkie aplikacje.

Strumienie (“foldery appek”) w Qlik Sense, do administrowania dostępem do analiz.

aplikacja analityczna

3. Dostęp do aplikacji

W domyślnie zainstalowanych regułach dostępowych serwera Qlik Sense każdy, kto ma dostęp do strumienia, ma również dostęp do wszystkich umieszczonych w nim aplikacji. Możemy zmienić te ustawienia i sterować dostępem do poszczególnych aplikacji w ramach jednego strumienia. Wykonujemy to stosując własne Security Rules. Możemy je napisać samemu, lub skorzystać z Security Rules wdrożonych przez Data Wizards.

Uwaga, ten poziom szczegółowości dostępu nie jest już możliwy w Qlik Sense Cloud (SaaS).

Gdy spełnione są powyższe warunki, możemy otworzyć aplikację.

Qlik Sense REGION

Zakres danych w appce

Ograniczanie dostępu do danych w appce jest bardzo proste. Realizujemy je poprzez przypisanie każdemu użytkownikowi odpowiedniego filtru na danych. Ponieważ każda (poprawna) appka Qlik Sense ma jeden, spójny model danych (wszystkie tabele są ze sobą powiązane), filtr na wybranym polu ogranicza cały zakres danych.

Dostęp, jaki będzie miała wybrana osoba, możemy bardzo łatwo przetestować, po prostu nakładając w pełnej apce selekcję na wybranym polu.

Następnie wybrane wartości w danym polu wiążemy identyfikatorem użytkownika, już w modelu danych.

Zanim dany użytkownik otworzy appkę, silnik Qlik Sense “nałoży filtr” i usunie wszystkie niepowiązane dane.

Powiązanie definicji dostępu z danymi w aplikacji. Tabela użytkowników powiązana z danymi przez pole REGION.

Qlik Sense symulacja

Symulacja i późniejsze działanie ograniczenia dostępu. Selekcja użytkownika MICHALS powoduje zawężenie danych do REGION = PÓŁNOC. Tak samo zadziała ograniczenie dostępu do danych. Aplikacja użytkownikowi MICHALS otworzy tylko z regionem PÓŁNOC.

Qlik tabela pełen dostęp

Użytkownik, który ma dostęp do kilku REGIONÓW.

W rzeczywistych danych każdej firmy mogą wystąpić luki, na przykład nie wszystkie miasta muszą mieć przypisany REGION. W przypadku wdrożenia ograniczenia dostępu, dane dla tych miast zostaną ucięte dla każdego… Dlatego dobrze jest zadbać o zastąpienie Nulli w takich wierszach wartością, np. “BRAK REGIONU” i przypisanie jej właścicielowi / użytkownikowi kluczowemu. Więcej o jakości danych we wpisie “Dashboardy bez kontekstu”.

Więcej o Section Access

Opisane wyżej ograniczenie dostępu do zakresu danych odbywa się w sekcji skryptu zwanej Section Access. I tu ciekawostka, wielu deweloperów błędnie tłumaczy sobie tą nazwę na polski, mówiąc “dostęp do sekcji”. Jest to niepoprawne, bo nie chodzi o dostęp do “sekcji danych” (zapewne rozumując, że”sekcja danych” to wyfiltrowane wiersze) tylko o sekcję dostępu – ang. Section Access (nie Access to Section). W skrypcie czytającym dane do Qlik mamy dwie “rzeczywistości”:

  • Section Application (tu powstaje standardowy kod, również generowany przez menedżera danych, wizualnego preparatora danych) i
  • Section Access. W tej sekcji skryptu umieszczamy właśnie logikę cięcia danych. Umieszczone w sekcji dostępu tabele nie będą powiązane ani widoczne w modelu danych, posłużą tylko do jego “cięcia”.

Przykład:

Section Application;

//Polecenia wczytania danych. Na starcie skryptu polecenie “Section Application” nie jest wymagane.

Section Access;

//Tutaj następuje definicja ograniczenia dostępu do danych według użytkownika.

Section Application;

//Uwaga! Jeżeli chcemy wznowić wczytywanie danych do aplikacji, musimy “powrócić” do “sekcji aplikacji” poleceniem “Section Application”.

Zastosowania

Filtrowanie danych jest świetnym sposobem, by wyprodukować jedną, spójną aplikację dla całej firmy, a dzieleniem jej na części zarządzać poprzez Section Access. Każdy pracownik otworzy tą samą aplikację, ale z różnym, odpowiednim dla siebie zakresem danych.

Poza filtrowaniem danych według wierszy możliwe jest wycinanie pól danych (kolumn).

Możemy sobie na przykład wyobrazić aplikację sprzedażową, która zawiera dane marżowe. Nawet jeżeli ograniczymy użytkownikowi widoczność arkusza z kalkulacją marży, to będzie mógł wyszukać pole z wartościami marży lub nawet stworzyć własny wykres z jej wartościami. Zapobiegniemy temu przez “upuszczanie” z modelu danych pola z marżą dla wybranych użytkowników. To również konfiguruje się w Section Access.

Qlik Sense przed ograniczeniem dostępu do arkusza

Coś dla zaawansowanych użytkowników – Security Rules

Dzięki Security Rules możemy również ograniczyć użytkownikom widoczność poszczególnych arkuszy.

Widoczne wszystkie arkusze.

Qlik Sense ograniczenie dostępu do arkusza

Wybrany użytkownik nie widzi arkusza “Malarz raportów”.

Qlik sense ograniczenie widoczności

Eksperymentując udało nam się nawet ograniczyć widoczność poszczególnych wykresów na arkuszach, Nie jest to jednak dobre rozwiązanie. Powoduje informację o błędzie danego obiektu ale go nie ukrywa, a to wygląda nieprofesjonalnie, dlatego go nie polecamy.

Więcej możliwości z Security Rules

Security Rules pozwalają nie tylko zarządzać widocznością aplikacji i arkuszy, ale również innych obiektów takich jak zakładki, narracje (prezentacje), rozszerzenia, połączenia do danych itd. Reguły te kontrolują nawet możliwość eksportu danych z aplikacji (do Excela). Jest to dość szeroki temat, odpowiedni na inny wpis blogowy.

Podsumowanie jednym zdaniem

Podsumowując, z pomocą Security Rules sterujemy dostępem do obiektów w Qlik Sense Hub, z pomocą Section Access sterujemy widocznym dla każdego zakresem danych.