Zarządzanie bezpieczeństwem danych przy użyciu Dostępu do sekcji
Dostęp do sekcji służy do kontrolowania bezpieczeństwa aplikacji. Zasadniczo jest to część skryptu ładowania danych, w której dodaje się tabelę zabezpieczeń, aby określić, co kto może zobaczyć. Qlik Sense wykorzystuje te informacje, aby ograniczyć dane do odpowiedniego zakresu, gdy użytkownik otwiera aplikację, czyli część danych w aplikacji jest ukryta przed użytkownikiem na podstawie jego tożsamości. Dostęp do sekcji jest ściśle zintegrowany z danymi w aplikacji i polega na nich w kwestii kontroli dostępu. Ta forma dynamicznej redukcji danych może być stosowana do wierszy tabeli, kolumn lub ich kombinacji. Aby uzyskać więcej informacji, odwiedź stronę Zaufanie i bezpieczeństwo w Qlik.
Sekcje w skrypcie ładowania.
Zarządzanie kontrolą dostępu do danych odbywa się z wykorzystaniem jednej lub większej liczby tabel zabezpieczeń, które są ładowane w taki sam sposób jak zwykłe dane. Dzięki temu można przechowywać te tabele w standardowej bazie danych lub w arkuszu kalkulacyjnym. Instrukcje skryptu używane do zarządzania tabelami zabezpieczeń są podane w sekcji autoryzacji, inicjowanej w skrypcie instrukcją Section Access.
Jeśli skrypt zawiera definicję sekcji autoryzacji, część skryptu ładująca dane aplikacji musi znajdować się w odrębnej sekcji, zainicjowanej instrukcją Section Application.
Należy pamiętać, że po wprowadzeniu zmian w skrypcie ładowania trzeba zawsze załadować dane, aby zmiany zostały zastosowane.
Pola systemowe w instrukcji Section Access
Poziomy dostępu są przypisywane użytkownikom w jednej lub kilku tabelach zabezpieczeń ładowanych w części Dostęp do sekcji skryptu. Tabele te muszą zawierać co najmniej dwa pola systemowe: ACCESS, które jest pole definiujące poziom dostępu, i USERID lub USER.EMAIL . Inne opcjonalne pola systemowe można dodać w zależności od przypadku. Poniżej opisano pełny zestaw pól systemowych Dostępu do sekcji.
ACCESS
Określa poziom dostępu danego użytkownika.
Uprawienia dostępu do aplikacji w Qlik Sense można przyznawać określonym użytkownikom. W tabeli zabezpieczeń każdy użytkownik może mieć jeden z dwóch poziomów dostępu: ADMIN lub USER. Użytkownik z uprawnieniami ADMIN ma dostęp do wszystkich danych w aplikacji, chyba że ogranicza to tabela zabezpieczeń. Użytkownik z uprawnieniami USER ma dostęp do danych jedynie w zakresie zdefiniowanym w tabeli zabezpieczeń. Jeśli użytkownikowi nie zostanie przypisany żaden poprawny poziom dostępu, nie będzie on mógł otworzyć danej aplikacji.
Jeżeli instrukcja Section Access zostanie użyta w scenariuszu ładowania, użytkownik usługi harmonogramu INTERNAL\SA_SCHEDULER będzie potrzebować dostępu z uprawnieniami ADMIN do wykonywania operacji ładowania. Na przykład:
Jeżeli nie chcesz używać konta INTERNAL\SA_SCHEDULER, zobacz temat Używanie personifikacji do ładowania danych, w którym przedstawiono metodę alternatywną.
Jeśli Dostęp do sekcji jest używany w scenariuszu generowania aplikacji On-demand (ODAG) w aplikacji szablonu, użytkownik INTERNAL\SA_API musi zostać uwzględniony jako ADMIN w tabeli Dostęp do sekcji. Na przykład:
USERID
Zawiera ciąg znaków odpowiadający Qlik Sense nazwie domeny i nazwie użytkownika. Qlik Sense pobierze dane logowania z usługi proxy i porówna je z wartością w tym polu.
Znak wieloznaczny (*) jest interpretowany jako wszyscy użytkownicy, z zastrzeżeniem dalszych warunków określonych w tabeli zabezpieczeń. Na przykład w poniższej tabeli zabezpieczeń użytkownicy należący do grupy Qlik Sense Tenant Admins mogą zobaczyć wszystkie wymienione wartości REDUCTION.
NTNAME
Pole, które powinno zawierać ciąg znaków odpowiadający nazwie użytkownika lub grupy domeny systemu Windows NT. Jeśli wykorzystywany jest inny system uwierzytelniania, powinien zawierać nazwę zweryfikowanego użytkownika. Qlik Sense pobierze informacje logowania z systemu operacyjnego i porówna je z wartością w tym polu.
GROUP
Zawiera ciąg znaków odpowiadający grupie w Qlik Sense. Qlik Sense rozpozna użytkownika dostarczonego przez usługę proxy względem tej grupy.
SERIAL
Zawiera ciąg znaków odpowiadający platformie. Jeśli pole zawiera ciąg znaków ‘QLIKSENSE’ lub symbol wieloznaczny ‘*’, dostęp może zostać przyznany w zależności od innych pól w tabeli zabezpieczeń.
OMIT
Zawiera nazwę pola, które ma zostać pominięte w odniesieniu do danego użytkownika. Pole może zawierać symbole wieloznaczne lub być puste.
Zarządzanie dostępem użytkownika do aplikacji
Do ograniczenia dostępu do aplikacji określonym użytkownikom można użyć Dostępu do sekcji w jego najprostszej formie. Użytkownicy nie mają dostępu do aplikacji przez wykluczenie. Innymi słowy, jeśli konkretny identyfikator użytkownika nie znajduje się w tabeli zabezpieczeń, nie będzie on mógł uzyskać dostępu do aplikacji. Jedynym wyjątkiem od tej reguły jest sytuacja, w której symbol wieloznaczny (*) zostanie przypisany do pola USERID w jednym z wierszy w tabeli zabezpieczeń. Symbol wieloznaczny w tym przypadku oznacza, że wszyscy uwierzytelnieni użytkownicy mogą uzyskać dostęp do aplikacji. Oto przykład tabeli zabezpieczeń z listą identyfikatorów użytkowników:
Zarządzanie dostępem użytkownika do określonych danych w aplikacji
Dynamiczna redukcja danych ogranicza dostęp do wierszy i kolumn w tabelach danych w aplikacjach Qlik Sense po autoryzacji użytkownika w celu uzyskania dostępu do samej aplikacji.
Zarządzanie dostępem do danych na poziomie wiersza
Dostęp do danych na poziomie wiersza można ograniczyć, dodając kolumnę redukcji danych do tabeli zabezpieczeń w sekcji dostępu skryptu ładowania. Określone rekordy (wiersze) można ukrywać przed użytkownikami przez powiązanie danych Dostępu do sekcji z rzeczywistymi danymi. Kontrolowanie zakresu danych wyświetlanych lub wykluczanych polega na używaniu pól redukcji o takich samych nazwach w częściach Dostęp do sekcji i Aplikacja sekcji skryptu. Po zalogowaniu użytkownika program Qlik Sense dopasuje wybory w polach redukcji w sekcji dostępu do pól o identycznych nazwach w sekcji aplikacji (nazwy pól muszą być zapisane wielkimi literami). Po dokonaniu selekcji, Qlik Sense trwale ukrywa przed użytkownikiem wszystkie dane wykluczone na podstawie tych selekcji. Jeśli jako wartość pola w kolumnie redukcji danych jest używany symbol wieloznaczny (*), jest on interpretowany jako umożliwiający użytkownikowi dostęp do rekordów powiązanych ze wszystkimi wybranymi polami redukcji w tabeli zabezpieczeń.
Kiedy Qlik Sense porównuje pole redukcji w Dostępie do sekcji z polami w modelu danych, oczekiwane jest następujące działanie:
-
Jeśli wartość pola w modelu danych pasuje do pola redukcji w Dostępie do sekcji, aplikacja otwiera się, pokazując dane powiązane z dopasowaniem dla określonego użytkownika. Inne dane zostaną ukryte.
-
Jeśli wartość pola redukującego nie pasuje do żadnej z wartości w modelu danych, aplikacja nie otworzy się dla zwykłego UŻYTKOWNIKA. Otworzy się jednak bez redukcji dla użytkownika oznaczonego jako ADMINISTRATOR.
Nie zaleca się używania kilku pól redukujących w Dostępie do sekcji, ponieważ umożliwi to powstanie innych kombinacji dostępu niż zamierzone.
Znak wieloznaczny * w kolumnie redukcji danych odnosi się tylko do wszystkich wartości w tabeli zabezpieczeń. Jeśli w części Aplikacja sekcji znajdują się wartości, które są niedostępne w kolumnie redukcji tabeli zabezpieczeń, zostaną one zredukowane.
Przykład: Redukcja danych na podstawie tożsamości użytkownika
W tym przykładzie pole REDUCTION (nazwa zapisana wielkimi literami) istnieje teraz w części zarówno Dostęp do sekcji, jak i Aplikacja sekcji (wszystkie wartości pola również są zapisane wielkimi literami). W zwykłej sytuacji te dwa pola byłyby różne i niepowiązane, ale przez zastosowanie dostępu do sekcji zostaną one powiązane i wykorzystane do zredukowania liczby rekordów wyświetlanych użytkownikowi.
Wynik będzie następujący:
- Użytkownik ADMIN widzi wszystkie pola i tylko te rekordy, które mogą zobaczyć inni użytkownicy, gdy REDUCTION = 1 lub REDUCTION =2.
- Użytkownik A widzi wszystkie pola i jedynie rekordy powiązane z wartością REDUCTION=1.
- Użytkownik B widzi wszystkie pola i jedynie rekordy powiązane z wartością REDUCTION=2.
- Użytkownik C widzi wszystkie pola i tylko te rekordy, które mogą widzieć inni użytkownicy, gdy REDUCTION = 1 lub REDUCTION =2.
Zarządzanie dostępem do danych na poziomie kolumn
Dostęp do danych na poziomie kolumny można ograniczyć, dodając pole systemowe OMIT do tabeli zabezpieczeń w skrypcie Dostęp do sekcji. Poniższy przykład opiera się na poprzednim przykładzie, w którym stosowana jest już redukcja danych wiersza.
Przykład: Redukcja danych kolumny na podstawie identyfikatora użytkownika
Pole OMIT w dostępie do sekcji definiuje pola, które mają być ukryte przed użytkownikiem.
Wynik będzie następujący:
- Użytkownik ADMIN widzi wszystkie pola oraz tylko te rekordy w tym przykładzie, które mogą wyświetlać inni użytkownicy, gdy REDUCTION to 1, 2 lub 3.
- Użytkownik A widzi wszystkie pola i jedynie rekordy powiązane z wartością REDUCTION=1.
- Użytkownik B widzi wszystkie pola oprócz NUM i jedynie rekordy powiązane z wartością REDUCTION=2.
- Użytkownik C widzi wszystkie pola oprócz ALPHA i jedynie rekordy powiązane z wartością REDUCTION=3.
Zarządzanie dostępem do grup użytkowników
Dostęp do sekcji umożliwia ograniczenie zakresu danych widocznych dla użytkowników na podstawie członkostwa w grupie. Aby ograniczyć dane przy użyciu grup użytkowników, dodaj nazwę pola GROUP do tabeli zabezpieczeń w sekcji dostępu i zdefiniuj wartości dla pola GROUP.
Przykład: Redukcja danych na podstawie grup użytkownika
Wynik będzie następujący:
- Użytkownicy należący do grupy ADMIN widzą wszystkie pola oraz tylko te rekordy w tym przykładzie, które mogą wyświetlać inni użytkownicy, gdy REDUCTION to 1, 2 lub 3.
- Użytkownicy należący do grupy A widzą dane powiązane z wartością REDUCTION=1 we wszystkich polach.
- Użytkownicy należący do grupy B widzą dane powiązane z REDUCTION=2, ale nie w polu NUM.
- Użytkownicy należący do grupy C widzą dane powiązane z wartością REDUCTION=3, ale nie w polu ALPHA.
- Użytkownicy należący do grupy GROUP1 widzą dane powiązane z wartością REDUCTION=3 we wszystkich polach.
Qlik Sense porównuje użytkownika z identyfikatorem UserID oraz rozpoznaje użytkownika na tle grup w tabeli. Jeśli użytkownik jest zgodny lub należy do grupy z uprawnieniami dostępu, może otrzymać dostęp do aplikacji.
Używanie personifikacji do ładowania danych
Wewnętrzne konto systemowe SA_SCHEDULER jest domyślnie używane do uruchamiania zadań ładowania. To konto ma podwyższone uprawnienia i pod względem technicznym może korzystać z dowolnego źródła danych. W QMC jest jednak ustawienie umożliwiające używanie personifikacji do uruchamiania zadań ładowania z uprawnieniami właściciela aplikacji zamiast wewnętrznego konta systemowego. Po skonfigurowaniu tego ustawienia do ładowania jest używany właściciel aplikacji, a nie SA_SCHEDULER, co oznacza, że nie dodaje się SA_SCHEDULER w tabeli Dostęp do sekcji, tylko właściciela aplikacji. W łańcuchu zadań aplikacje mogą mieć różnych właścicieli z uprawnieniami do źródeł zależnymi od praw dostępu każdego właściciela. Zobacz klaster usług (tylko w języku angielskim), aby uzyskać więcej informacji.
Zarządzanie dostępem użytkowników w środowisku wielochmurowym
Środowisko wielochmurowe Qlik Sense obejmuje różne mechanizmy uwierzytelniania użytkowników. W przypadku Qlik Sense Enterprise on Windows identyfikator USERID jest zwykle weryfikowany w tabeli zabezpieczeń przez usługę proxy. W Qlik Cloud tę rolę uwierzytelniania przyjmuje dostawca tożsamości. W związku z tym Dostęp do sekcji skonfigurowany dla środowiska lokalnego, takiego jak Qlik Sense Enterprise on Windows, nie będzie działać w środowisku chmurowym.
W przypadku korzystania z dostawcy tożsamości OIDC lub SAML (Qlik IdP lub niestandardowego dostawcy tożsamości) z Qlik Cloud, subject claim służy do identyfikacji użytkowników podczas logowania. Jeżeli stosowany jest instrukcja Dostęp do sekcji, wartość pola USERID w tabeli zabezpieczeń jest porównywana z wartością subject claim. Podczas konfiguracji dzierżawy dopilnuj, by nazwa konta SAM została zamapowana do subject claim Twojego dostawcy tożsamości. Na przykład, jeśli nazwa Twojego konta SAM to AD_DOMAIN\Dev, ustaw subject claim na AD_DOMAIN\Dev. Aby zobaczyć wartość subject claim dostawcy tożsamości, dołącz /api/v1/diagnose-claims do adresu URL dzierżawy w przeglądarce, na przykład your-tenant.us.qlikcloud.com/api/v1/diagnose-claims. W odpowiedzi JSON subject claim nazywa się sub.
Jeśli nie możesz użyć nazwy konta SAM, istnieje inny sposób uwierzytelnienia użytkownika. Ponieważ adresy e-mail zwykle pozostają takie same w różnych środowiskach, możesz użyć UŻYTKOWNIKA.pole EMAIL zamiast USERID w tabeli zabezpieczeń. Oto przykład tego, jak mogłaby wyglądać tabela zabezpieczeń:
| DOSTĘP | IDENTYFIKATOR UŻYTKOWNIKA | USERE-mail | Komentarz | Kraj |
|---|---|---|---|---|
| USER |
ABC\JOE |
* | Dostęp lokalny | Stany Zjednoczone |
| USER | * |
joe.smith@example.com |
Dostęp w chmurze | Stany Zjednoczone |
| USER |
ABC\Ursula |
* | Dostęp lokalny | Niemcy |
| USER | * |
URSULA.SCHULTZ@EXAMPLE.COM |
Dostęp w chmurze | Niemcy |
| USER |
ABC\Stefan |
* | Dostęp lokalny | Szwecja |
| USER | * |
stefan.svensson@example.com |
Dostęp w chmurze | Szwecja |
Skrypt autoryzacji:
Każdy użytkownik ma dwa rekordy: jeden do dostępu lokalnego, a drugi do dostępu w chmurze. Symbole wieloznaczne zapewniają używanie tylko odpowiednich pól uwierzytelniających. W tym przykładzie pole COUNTRY jest używane jako pole redukcji danych.
Używanie Section Access i Czat Wniosków
Aby aplikacje korzystające z instrukcji Section Access były dostępne w Czat Wniosków, następujący użytkownicy usługi muszą mieć dostęp administracyjny w skrypcie Section Access:
-
INTERNAL/sa_repository: dzięki temu skrypt dostępu do sekcji jest dostępny z usługą repozytorium do kontrolowania dostępu użytkowników.
-
INTERNAL/sa_scheduler: umożliwia przeładowanie aplikacji przy użyciu zadań QMC.
Jeśli masz poufne informacje w nazwach aplikacji, pól lub elementów głównych, mogą one zostać ujawnione przez udostępnienie aplikacji używających dostępu do sekcji dla funkcji Czat Wniosków. Sugestie aplikacji dotyczące zapytań obejmują aplikacje w strumieniach, do których użytkownicy mają dostęp. Mogą to być aplikacje, do których użytkownicy nie mają dostępu w instrukcji Dostęp do sekcji aplikacji. Wybranie tych aplikacji jednak nic nie da. Po kliknięciu Wymiary lub Miary w celu wyświetlenia dostępnych elementów z aplikacji używającej instrukcji Section Access użytkownicy mogą zobaczyć elementy, do których nie mają dostępu. Kliknięcie tych elementów nie spowoduje jednak udostępnienia użytkownikom żadnych danych.
Na przykład:
Gdy ci użytkownicy znajdą się w skrypcie Dostęp do sekcji, możesz udostępnić aplikację dla funkcji Czat Wniosków. Po załadowaniu aplikacji będzie ona dostępna w funkcji Czat Wniosków.
Korzystanie z QVD z dostępem do sekcji
Pliki QVD można odczytywać jako ładowanie zwykłe lub jako ładowanie zoptymalizowane. Ładowanie zoptymalizowane polega na tym, że nie są wykonywane żadne transformacje danych i nie ma żadnych filtrów w klauzuli WHERE.
Ładowania zoptymalizowane nie działają w przypadku korzystania z QVD z dostępem do sekcji. Jeśli chcesz użyć pliku QVD do załadowania danych do dostępu do sekcji, musisz rozszerzyć plik QVD. Najłatwiejszym sposobem rozszerzenia pliku QVD jest dokonanie zmiany formatowania podczas ładowania danych.
W poniższym przykładzie plik QVD nie jest rozszerzony, ponieważ dane nie są formatowane.
Przykład: Niedziałający przykład bez formatowania danych (ładowanie zoptymalizowane)
Zamiast tego możesz na przykład użyć funkcji upper() do sformatowania danych, co spowoduje rozwinięcie pliku QVD.
Przykład: Działający przykład z formatowaniem danych
Można także dodać instrukcję Where 1=1 do instrukcji LOAD.
Przykład: Kolejny działający przykład z formatowaniem danych
Wytyczne i wskazówki dotyczące korzystania z instrukcji Section Access
Oto kilka ważnych faktów i przydatnych wskazówek dotyczących instrukcji Section Access.
- Wszystkie nazwy i wartości pól wymienione w instrukcjach LOAD lub SELECT w sekcji dostępu muszą być zapisane wielkimi literami. Zmień zapis wszelkich nazw pól zawierających w bazie danych małe litery na zapis wielkimi literami przy użyciu funkcji Upper, zanim pole zostanie odczytane przez instrukcję LOAD lub SELECT.
Więcej informacji zawiera temat Upper funkcja skryptu i funkcja wykresu.
- Wymienione tutaj nazwy pól systemowych Dostępu do sekcji nie mogą być używane jako nazwy pól w modelu danych.
- Jeśli wprowadzisz zmiany w kopii deweloperskiej opublikowanej aplikacji, kopia deweloperska musi zostać ponownie opublikowana, zanim kontrole Dostępu do sekcji zostaną zastosowane do opublikowanej aplikacji.
- Migawka przedstawia dane zgodnie z uprawnieniami dostępu użytkownika, który ją rejestruje, i może być udostępniana w narracji. Użytkownicy wracający do wizualizacji z narracji w celu wyświetlenia danych na żywo w aplikacji są jednak ograniczeni własnymi uprawnieniami dostępu.
- Do wartości wymiaru głównego nie należy przypisywać kolorów, jeśli korzysta się z dostępu do sekcji albo z danych poufnych, ponieważ wartości mogą zostać ujawnione przez konfigurację kolorów.
- Aby uniknąć ujawnienia zastrzeżonych danych, należy przed opublikowaniem aplikacji usunąć wszystkie dołączone pliki, względem których obowiązują ustawienia dostępu do sekcji. W przypadku publikacji aplikacji dołączone pliki są dodawane do publikacji. Jeśli publikowana aplikacja zostanie skopiowana, dołączone pliki zostaną dodane do kopii. Jeśli jednak względem dołączonych plików danych zastosowano ograniczenia dostępu do sekcji, wówczas ustawienia dostępu do sekcji nie zostaną zachowane w przypadku skopiowania plików, dzięki czemu użytkownicy skopiowanej aplikacji będą widzieć wszystkie dane w dołączonych plikach.
- Symbol wieloznaczny (*) jest interpretowany jako wszystkie (wymienione) wartości tego pola w tabeli. Jego użycie w jednym z pól systemowych (USERID, GROUP) w tabeli załadowanej w sekcji dostępu skryptu jest interpretowane jako wszystkie możliwe (nie tylko wymienione) wartości tego pola.
- Pola zabezpieczeń można umieścić w różnych tabelach.
- W przypadku ładowania danych z pliku QVD funkcja Upper powoduje spowolnienie procesu ładowania.
-
Jeśli użytkownik zablokuje sobie dostęp do aplikacji, konfigurując Section Access, wówczas może otworzyć aplikację bez danych i zmodyfikować sekcję dostępu w skrypcie ładowania danych. Wymaga to uprawnień do edytowania i przeładowania skryptu ładowania danych.
Więcej informacji zawiera temat Otwieranie aplikacji bez danych.
- Po wykonaniu binarnej operacji ładowania ograniczenia dostępu zostaną odziedziczone przez nową aplikację Qlik Sense.