Hantera säkerhet med section access

Du kan använda section access i skriptet för inläsning av data för att hantera säkerheten. På så sätt kan en enskild fil användas för att innehålla data för ett antal användare eller användargrupper. Qlik Sense använder informationen i section access för autentisering och behörighetskontroll och reducerar informationen dynamiskt så att användaren endast ser sina egna data.

Observera: Användargrupper stöds inte i Kubernetes.

Säkerheten är inbyggd i själva filen, så även hämtade filer är skyddade, i viss mån. Om säkerhetskraven är höga bör dock hämtning av filer och användning offline förhindras, och filer bör endast publiceras av Qlik Sense-servern. Eftersom all information lagras i en fil, kan filen bli mycket stor.

Varning:

Om du vill undvika att exponera data som kräver behörighet kan du ta bort alla bifogade filer med avsnittsåtkomstinställningar innan du publicerar appen.

Bifogade filer tas med när appen publiceras. Om den publicerade appen kopieras tas de bifogade filerna med i kopian. Om avsnittsåtkomstbehörigheter har tillämpats på de bifogade datafilerna bibehålls dock inte avsnittsåtkomstinställningarna när filerna kopieras, så användare av den kopierade appen kan se alla data i de bifogade filerna.

Varning: En ögonblicksbild visar data i enlighet med behörigheten för den användare som tar ögonblicksbilden, och den kan sedan delas i en berättelse. När användarna går tillbaka till en visualisering från en berättelse för att se data i realtid i appen, blir de dock begränsade av sina egna behörigheter.
Varning:

Du får inte tilldela originaldimensionsvärden färger om du använder section access eller arbetar med känsliga data, eftersom värdena kan exponeras.

Avsnitt i skriptet

Behörighetskontroll styrs av en eller flera säkerhetstabeller som laddas på vanligt sätt i Qlik Sense. Därför kan du lagra tabellerna i en vanlig databas. De skriptsatser som hanterar säkerhetstabellerna definieras i behörighetsavsnittet, som i skriptet börjar med skriptsatsen Section Access.

Om ett sådant behörighetsavsnitt definieras i skriptet, måste den del av skriptet som laddar app-data föregås av skriptsatsen Section Application.

Example:  

Section Access;
LOAD * inline
[ACCESS,USERID
USER,U ];
Section Application;
LOAD... ... from... ...

Systemfält i Section access

Behörighetsnivåerna tilldelas användarna i en eller flera av de tabeller som har lästs in i section access. Dessa tabeller kan innehålla flera olika användarspecifika systemfält, vanligen USERID, samt det fält som anger behörighetsnivån ACCESS. Alla systemfält i section access används för autentisering eller behörighetskontroll. Hela uppsättningen av systemfält i section access beskrivs nedan.

ACCESS

Definierar vilken behörighet en viss användare ska ha.

Behörighet till Qlik Sense-appar kan ges till namngivna användare eller användargrupper. I säkerhetstabellen kan användare får behörighetsnivåerna ADMIN eller USER. Om ingen giltig behörighetsnivå är tilldelad, kan användaren inte öppna appen.

En person med ADMIN-behörigheter har tillgång till all data i appen. En person med USER-behörigheter har endast åtkomst till data enligt vad som anges i säkerhetstabellen.

USERID

Innehåller en sträng som motsvarar ett Qlik Sense-användarnamn. Qlik Sense hämtar inloggningsuppgifterna från proxyn och jämför dem med värdet i detta fält.

GROUP

Innehåller en sträng som motsvarar en grupp i Qlik Sense. Qlik Sense löser användaren som angetts av proxyn gentemot denna grupp.

Observera: När du använder grupper för att reducera data och vill Qlik Management Console, krävs INTERNAL\SA_SCHEDULER-kontot fortfarande.

OMIT

Innehåller namnet på det fält som ska utelämnas för just den här användaren. Jokertecken kan användas och listan kan lämnas tom. Ett smidigt sätt att göra detta är att använda underfält.

Observera: Du bör inte tillämpa OMIT på nyckelfält. De nyckelfält som utelämnas är synliga i datamodellvyn men innehåller är inte tillgängligt, vilket kan vara förvirrande för användaren. Tillämpning av OMIT på fält som inte används i någon visualisering kan dessutom leda till ofullständiga visualiseringar för användare som inte har tillgång till de fält som har utelämnats.

Qlik Sense jämför den användare som har angetts av proxyn med UserID, och matchar användaren mot grupperna i tabellen. Om användaren tillhör en grupp med behörighet eller om användaren matchar, så ges tillgång till appen.

Observera:

Om du har låst dig själv ute ur en app genom att ställa in section access kan du öppna appen utan data och redigera åtkomstsektionen i dataladdningsskriptet. För att göra detta måste du ha åtkomst till att redigera och ladda om dataladdningsskriptet.

Mer information finns i Öppna en app utan data.

Eftersom den interna logiken som är signaturen för Qlik Sense också används i behörighetsavsnittet, kan de skyddade fälten mycket väl finnas i olika tabeller. Alla fält som anges i LOAD- eller SELECT-satser i section access måste skrivas med VERSALER. Fältnamn som skrivits med gemener i databasen bör konverteras till versaler med hjälp av funktionen Upper innan fältet läses med LOAD- eller SELECT-satserna.

Mer information finns i Upper - skript- och diagramfunktion.

Ett jokertecken, *, tolkas som alla (listade) värden i ett fält, det vill säga ett värde som listats någon annanstans i den här tabellen. Om den används i något av systemfälten (USERID, GROUP) i en tabell som laddats i skriptets behörighetsavsnitt, tolkas den som alla (även inte listade) möjliga värden i detta fält.

Observera: När data laddas från en QVD-fil går laddningen långsammare om den övre funktionen används.
Observera: Om du har aktiverat section access, kan du inte använda namnen på systemfälten angivna här för section access som fältnamn i din datamodell.

Example:

I det här exemplet kan endast användare i finansgruppen öppna dokumentet.

Åtkomst till dokument
Åtkomst Grupp
USER Ekonomi

Dynamisk datareduktion

Qlik Sense har stöd för dynamisk datareduktion som gör att användaren kan förhindras att se delar av datauppsättningen i en app baserat på section access-inloggningen:

  • Fält (kolumner) kan döljas med hjälp av systemfältet OMIT.
  • Poster (rader) kan döljas genom att section access-data länkas till verkliga data: Vilka värden som ska visas respektive uteslutas styr du genom att använda ett eller flera fält med samma namn i section access och section application. När användaren har loggat in matchar Qlik Sense de valda fältvärdena i section access till fält i section application med samma fältnamn (fältnamnen måste skrivas med VERSALER). Efter att urvalen har gjorts kommer Qlik Sense permanent att dölja de data som till följd av valen blivit utelämnade för användaren.
Observera: Alla de fältnamn som används i överföringen, liksom namnen på alla fältvärden i dessa fält, måste skrivas med versaler eftersom det är standard att fältnamn och namn på fältvärden konverteras till versaler i section access.
Observera: Om du vill aktivera att skript kan laddas igen i en Qlik Management Console-uppgift, krävs INTERNAL\SA_SCHEDULER-kontoanvändaren med ADMIN-åtkomst.

Example: Datareduktion baserad på användar-ID

section access;
LOAD * inline [
ACCESS, USERID,REDUCTION, OMIT
USER, AD_DOMAIN\ADMIN,*,
USER, AD_DOMAIN\A,1,
USER, AD_DOMAIN\B, 2,NUM
USER, AD_DOMAIN\C, 3, ALPHA
ADMIN, INTERNAL\SA_SCHEDULER,*,
];
section application;
T1:
LOAD *,
NUM AS REDUCTION;
LOAD
Chr( RecNo()+ord('A')-1) AS ALPHA,
RecNo() AS NUM
AUTOGENERATE 3;

REDUCTION-fältet (versaler) finns nu tillgängligt i både section access och section application (även alla fältvärden är versaler). De båda fälten skulle normalt vara helt olika och separata, men genom att använda section access länkas dessa fält samman och minskar det antal poster som visas för användaren.

OMIT-fältet i section access anger de fält som ska döljas för användaren.

Resultatet blir:

  • ADMIN-användare kan se alla fält och endast de poster som andra användare kan se i detta exempel, när REDUCTION är 1, 2 eller 3.
  • Användare A kan se alla fält, men endast de poster som är kopplade till REDUCTION=1.
  • Användare B kan se alla fält förutom NUM, och endast de poster som är kopplade till REDUCTION=2.
  • Användare C kan se alla fält förutom ALPHA, och endast de poster som är kopplade till REDUCTION=3.

Example: Datareduktion baserad på användargrupper

section access;

LOAD * inline [

ACCESS, USERID, GROUP, REDUCTION, OMIT

USER, *, ADMIN, *,

USER, *, A, 1,

USER, *, B, 2, NUM

USER, *, C, 3, ALPHA

USER, *, GROUP1, 3,

ADMIN, INTERNAL\SA_SCHEDULER, *, *,

];

section application;

T1:

LOAD *,

NUM AS REDUCTION;

LOAD

Chr( RecNo()+ord('A')-1) AS ALPHA,

RecNo() AS NUM

AUTOGENERATE 3;

Resultatet blir:

  • Användare som tillhör ADMIN-gruppen tillåts se all data och alla fält.
  • Användare som tillhör A-gruppen tillåts se all data kopplade till REDUCTION=1 över alla fält.
  • Användare som tillhör B-gruppen tillåts se all data kopplade till REDUCTION=2, men inte i NUM-fältet.
  • Användare som tillhör C-gruppen tillåts se all data kopplade till REDUCTION=3, men inte i ALPHA-fältet.
  • Användare som tillhör GROUP1-gruppen tillåts se all data kopplade till REDUCTION=3 över alla fält.
  • INTERNAL\SA_SCHEDULER-användare tillhör inte någon grupp, men tillåts se all data över alla fält.

    Observera:

    Jokertecknet (*) på denna rad refererar endast till alla värden i section access-tabellen. Om det finns värden i section application som inte är tillgängliga i REDUCTION -fältet i section access, kommer dessa att reduceras.

Ärvda behörigheter

Observera: Den här funktionen är inte tillgänglig i Kubernetes.

Om en binary-sats används kommer behörighetskontrollen att ärvas av den nya Qlik Sense-appen.

Hjälpte den här informationen?

Tack för att du berättar det här. Är det något du vill säga om det här avsnittet?

Varför var informationen inte till hjälp och hur kan vi förbättra den?