Gå till huvudinnehåll
Hantera säkerhet med section access

PÅ DEN HÄR SIDAN

Hantera säkerhet med section access

Genom att använda section access i dataladdningsskriptet kan du hantera dataåtkomst på radnivå. På så sätt kan en enda fil användas för att lagra data för användare eller användargrupper. Qlik Sense använder informationen i section access för att auktorisera på radnivå. Data reduceras dynamiskt så att användare bara ser data de har behörighet att se.

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. Filer bör bara publiceras av Qlik Sense-servern. Eftersom all information lagras i en fil, kan filen bli mycket stor.

Appen måste vara publicerad innan section access-kontroller används. Omladdning av appen leder inte till att några nya eller ändrade section access-skript används.

Anteckning om varning Om du vill undvika att exponera data som kräver behörighet kan du ta bort alla bifogade filer med section access-inställningar innan du publicerar appen. Bifogade filer inkluderas 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.
Anteckning om varningEn ö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.
Anteckning om varning Tilldela inte originaldimensionsvärden färger om du använder section access eller arbetar med känsliga data, eftersom värdena kan exponeras av färgkonfigurationen.

Avsnitt i skriptet

Åtkomstkontroll på radnivå styrs av en eller flera säkerhetstabeller som laddas på vanligt sätt. Därför kan du lagra tabellerna i en standarddatabas eller i ett kalkylark. De skriptsatser som styr säkerhetstabellerna definieras i ett auktoriseringsdelavsnitt, som i skriptet inleds av satsen Section Access.

Om ett auktoriseringsdelavsnitt definieras i skriptet, måste den del av skriptet som laddar appdata placeras i ett annat delavsnitt som inleds med satsen Section Application.

Example:  

Section Access;

AuthorizationTable:

Load ACCESS, USERID, REGION From ... ;

 

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.

Om section access används i ett ODAG-scenario (on-demand-appgenerering) i mallappen måste INTERNAL\SA_API-användaren inkluderas som ADMIN i section access-tabellen. Exempel:

Section Access; LOAD * inline [ ACCESS, USERID ADMIN, INTERNAL\SA_API ];

NTNAME

Ett fält som ska innehålla en sträng som motsvarar ett gruppnamn eller användarnamn för Windows NT-domän. Om ett annat autentiseringssystem används ska det innehålla namnet på en autentiserad användare.

Qlik Sense hämtar inloggningsuppgifterna från operativsystemet och jämför dem med värdet i detta fält.

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.

Anteckning om information USERID och NTNAME använder samma autentiseringsuppgifter, så det är inte nödvändigt att kontrollera båda på samma rad i behörighetstabellen. Skillnaden mellan fälten är att NTNAME även kontrollerar grupper.

USER.EMAIL

Stöds inte för närvarande. Kommer bara att matchas med jokertecken i Qlik Sense.

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.

Anteckning om informationNär du använder grupper för att reducera data och vill ha åtkomst till Qlik Management Console, krävs INTERNAL\SA_SCHEDULER-kontot fortfarande.

SERIAL

Innehåller en sträng som motsvarar plattformen. Om fältet innehåller strängen ”QLIKSENSE” eller ett jokertecken ”*”, kan åtkomst ges beroende på övriga fält i behörighetstabellen.

Anteckning om informationOm fältet SERIAL innehåller ett licensnummer kommer raden Section Access att neka åtkomst till dokumentet. Den här inställningen är bara giltig i QlikView.

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.

Anteckning om informationDu 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 användaren med UserID och löser användaren mot grupper i tabellen. Om användaren tillhör en grupp med åtkomstbehörighet eller om användaren matchar, så ges åtkomst till appen.

Anteckning om information

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.

Anteckning om informationNär data laddas från en QVD-fil går laddningen långsammare om funktionen Upper används.
Anteckning om informationOm 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 gruppen Ekonomi ö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 urvalen i fält i section access med fält i section application som har exakt 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.
Anteckning om informationAlla fältnamn som används i överföringen som beskrivs ovan, liksom alla fältvärden i dessa fält, måste skrivas med versaler, eftersom det är standard att fältnamn och fältvärden konverteras till versaler i section access.
Anteckning om informationOm 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;

Fältet REDUCTION (versaler) finns nu tillgängligt i både section access och section application (även alla fältvärden skrivs med versaler). De båda fälten skulle normalt vara olika och åtskilda, 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.

    Anteckning om information

    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

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