Hantera datasäkerhet med avsnittsåtkomst | Qlik Sense för WindowsHjälp
Gå till huvudinnehåll Gå till ytterligare innehåll

Hantera datasäkerhet med avsnittsåtkomst

Avsnittsåtkomst används för att styra säkerheten för en app. Detta är i princip en del av dataladdningsskriptet där du lägger till en säkerhetstabell som definierar vem som får se vad. Qlik Sense använder denna information för att minska datamängden till lämpligt omfång när användaren öppnar applikationen, det vill säga, en del av datan i applikationen döljs för användaren baserat på deras identitet. Avsnittsåtkomst är nära integrerat med data i applikationen och är beroende av dessa för att styra åtkomsten. Den här typen av dynamisk datareduktion kan fokusera på tabellrader, tabellkolumner eller båda. Mer information finns i Trust and Security at Qlik (Förtroende och säkerhet hos Qlik).

Delavsnitt i laddningsskriptet

Kontroll av dataåtkomst 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 inleds av satsen Section Access i skriptet.

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

Section Access; Load * INLINE [ ACCESS, USERID, REDUCTION USER, AD_DOMAIN\ADMIN, * USER, AD_DOMAIN\A, 1 USER, AD_DOMAIN\B, 2 USER, AD_DOMAIN\C, 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;

Observera att när du har gjort ändringar i laddningsskriptet måste du alltid ladda om data för att ändringarna ska träda i kraft.

Avsnittsåtkomst-systemfält

Behörighetsnivåerna tilldelas användarna i en eller flera säkerhetstabeller som laddas i Section Access-delen av skriptkoden. Dessa tabeller måste innehålla minst två systemfält: ACCESS, som är fältet som definierar behörighetsnivån, och USERID eller USER.EMAIL . Andra valfria systemfält kan läggas till beroende på det enskilda fallet. Hela uppsättningen av systemfält i avsnittsåtkomst beskrivs nedan.

ACCESS

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

Åtkomst till Qlik Sense-applikationer kan ges för specifika användare. I säkerhetstabellen kan användare få behörighetsnivåerna ADMIN eller USER. En användare med ADMIN-behörighet har tillgång till alla data i applikationen, om inte åtkomsten begränsas av säkerhetstabellen. En användare med USER-behörighet får endast tillgång till data i enlighet med definitionen i säkerhetstabellen. Om ingen giltig behörighetsnivå är tilldelad, kan användaren inte öppna applikationen.

Om Section Access används i ett laddningsscenario behöver INTERNAL\SA_SCHEDULER, som är användaren av schemaläggningstjänsten, ADMIN-behörighet för att göra laddningar. Exempel:

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

Om du inte vill använda kontot INTERNAL\SA_SCHEDULER finns information om en annan metod i Använda personifiering för att ladda data.

Om avsnittsåtkomst används i ett ODAG-scenario (generering av on-demand-applikation) i mallapplikationen, måste INTERNAL\SA_API-användaren inkluderas som ADMIN i avsnittsåtkomsttabellen. Exempel:

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

USERID

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

Ett jokertecken (*) tolkas som alla användare och ytterligare villkor specificeras i säkerhetstabellen. I följande säkerhetstabell kan till exempel användare som ingår i Qlik Sense Tenant Admins se alla listade REDUCTION-värden.

Section Access; LOAD * INLINE [ ACCESS, USERID, GROUP, REDUCTION ADMIN, *, Qlik Sense Tenant Admins, * USER, QLIK-POC\SOMEOTHERUSER1, *, 1 USER, QLIK-POC\SOMEOTHERUSER2, *, 2 ... ];
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 säkerhetstabellen. Skillnaden mellan fälten är att NTNAME även kontrollerar grupper.

NTNAME

Anteckning om informationNTNAME är ett äldre QlikView-fält och USERID bör användas om inte QlikView använder samma säkerhetstabell.

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 inloggningsinformationen från operativsystemet och jämför den med värdet i det här fältet.

GROUP

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

SERIAL

Anteckning om informationSERIAL är ett äldre QlikView-fält och används inte om du bara använder Qlik Sense.

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 säkerhetstabellen.

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å fältet som ska utelämnas för just den här användaren. Jokertecken kan användas och listan kan lämnas tom.

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 används i en visualisering kan dessutom leda till en ofullständig visualisering för användare som inte har åtkomst till de utelämnade fälten.

Hantera användares åtkomst till en applikation

Avsnittsåtkomst kan, i dess enklaste form, användas för att hindra specifika användare från åtkomst till en applikation. Användare nekas åtkomst till en applikation genom exkludering. Med andra ord, om ett specifikt användar-ID inte finns med i säkerhetstabellen, kommer de inte att kunna komma åt applikationen. Det enda undantaget är om ett jokertecken (*) är tilldelat till USERID-fältet på en av raderna i säkerhetstabellen. I det här fallet betyder ett jokertecken att alla autentiserade användare kan komma åt applikationen. Här är ett exempel på en säkerhetstabell med en lista över användar-ID:n:

Section Access; LOAD * inline [ ACCESS, USERID ADMIN, AD_DOMAIN\ADMIN USER, AD_DOMAIN\A USER, AD_DOMAIN\B ]; Section Application;

Hantera användares åtkomst till specifika data i en applikation

Dynamisk datareduktion begränsar åtkomsten till rader och kolumner i datatabellerna i Qlik Sense-applikationer efter att en användare har fått behörighet att få tillgång till själva applikationen.

Hantera åtkomst till data på radnivå

Begränsa åtkomsten till data på radnivå genom att lägga till en datareduktionskolumn i säkerhetstabellen i behörighetsdelavsnittet av laddningsskriptet. Specifika poster (rader) kan döljas för användare genom att avsnittsåtkomst-data länkas till verkliga data: Vilka värden som ska visas respektive uteslutas styr du genom att använda ett eller flera reduktionsfält med samma namn i avsnitten för avsnittsåtkomst och Section Application i skriptkoden. När användaren har loggat in matchar Qlik Sense urvalen i reduktionsfält i access-avsnittet med fält i application-avsnittet som har exakt samma fältnamn (fältnamnen måste skrivas med versaler). Efter att valen har gjorts, Qlik Sense permanent döljer all data som till följd av dessa val blivit uteslutna för användaren. Om ett jokertecken (*) används som fältvärde i datareduktionskolumnen tolkas detta som att användaren ska ha åtkomst till poster som är associerade med alla valda reduktionsfält i säkerhetstabellen.

När Qlik Sense jämför reduktionsfältet i avsnittsåtkomst med fält i datamodellen förväntas följande beteenden:

  • Om ett fältvärde i datamodellen matchar reduktionsfältet i avsnittsåtkomst kommer applikationen att öppnas och visa data med anknytning till matchningen för den angivna användaren. Övriga data döljs.

  • Om det reducerande fältvärdet inte matchar något av värdena i datamodellen kommer applikationen inte att öppnas för en normal USER. Men den kommer att öppnas oreducerad för en användare som är markerad som ADMIN.

Vi rekommenderar inte att flera reducerande fält används i avsnittsåtkomst, eftersom andra åtkomstkombinationer än de avsedda då kommer att tillåtas.

Anteckning om information

Jokertecknet * i datareduktionskolumnen refererar bara till alla värden i säkerhetstabellen. Om det finns värden i Section Application som inte är tillgängliga i reduktionskolumnen i säkerhetstabellen, kommer dessa att reduceras.

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 alla fältnamn och fältvärden som standard konverteras till versaler i behörighetsdelavsnittet.
Anteckning om informationOm du vill aktivera att skript kan laddas i en Qlik Hanteringskonsol-uppgift, krävs som standard INTERNAL\SA_SCHEDULER-kontoanvändaren med ADMIN-åtkomst. Om du inte vill använda kontot INTERNAL\SA_SCHEDULER finns information om en annan metod i Använda personifiering för att ladda data.

Exempel: Datareduktion på radnivå baserad på användarens identitet

Section Access; Authorization: LOAD * inline [ ACCESS, USERID, REDUCTION ADMIN, AD_DOMAIN\ADMIN, * USER, AD_DOMAIN\A, 1 USER, AD_DOMAIN\B, 2 USER, AD_DOMAIN\C, * ADMIN, INTERNAL\SA_SCHEDULER, * ]; Section Application; T1: LOAD *, NUM AS REDUCTION; LOAD RecNo() AS NUM AUTOGENERATE 3;

I det här exemplet finns fältet REDUCTION (versaler) nu i både Section Access och Section Application (även alla fältvärden skrivs med versaler). De två fälten skulle normalt vara olika och åtskilda, men när avsnittsåtkomst används länkas dessa fält samman och minskar det antal poster som visas för användaren.

Resultatet blir:

  • Användare ADMIN kan se alla fält och endast de poster som andra användare kan se när REDUCTION = 1 eller REDUCTION =2.
  • 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, men endast de poster som är kopplade till REDUCTION=2.
  • Användare C kan se alla fält och endast de poster som andra användare kan se när REDUCTION = 1 eller REDUCTION =2.

Hantera åtkomst till data på kolumnnivå

Begränsa åtkomsten till data på kolumnnivå genom att lägga till systemfältet OMIT i säkerhetstabellen i avsnittsåtkomst-skriptet. Följande exempel bygger på det tidigare exemplet som redan innehåller datareduktion på radnivå.

Exempel: Datareduktion på kolumnnivå baserad på användarens identitet

Section Access; LOAD * inline [ ACCESS, USERID, REDUCTION, OMIT ADMIN, 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;

OMIT-fältet i avsnittsåtkomst 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 bara de poster som är kopplade till REDUCTION=2.
  • Användare C kan se alla fält förutom ALPHA, och bara de poster som är kopplade till REDUCTION=3.
Anteckning om informationFör en del visualiseringar gäller minimikrav för data som måste uppfyllas innan de renderas. Därför kan meddelandet "Ofullständig visualisering" visas när ett fält på kolumnnivå utelämnas från användarens datavy.

Hantera åtkomst till användargrupper

Avsnittsåtkomst erbjuder alternativet att med gruppmedlemskap begränsa omfattningen av de data som användare kan se. Om du vill begränsa data med hjälp av användargrupper lägger du till fältnamnet GROUP i säkerhetstabellen i behörighetsdelavsnittet och definierar värden för fältet GROUP.

Exempel: 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 att se alla fält och bara de poster andra användare kan se i det här exemplet när REDUCTION är 1, 2 eller 3.
  • Användare som tillhör A-gruppen tillåts se data som är kopplade till REDUCTION=1 i alla fält.
  • Användare som tillhör B-gruppen tillåts se data kopplade till REDUCTION=2, men inte i NUM-fältet.
  • Användare som tillhör C-gruppen tillåts se data kopplad till REDUCTION=3, men inte i ALPHA-fältet
  • Användare som tillhör GROUP1-gruppen tillåts se data som är kopplade till REDUCTION=3 i alla fält.

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 applikationen.

Använda personifiering för att ladda data

Som standard används det interna systemkontot SA_SCHEDULER för att köra laddningsuppgifter. Kontot har förhöjd behörighet och kan i princip använda vilken datakälla som helst. I QMC finns dock en inställning som använder personifiering för att köra laddningsuppgifter med applikationsägarens behörighet istället för det interna systemkontot. När den här inställningen konfigureras används applikationsägaren och inte SA_SCHEDULER för laddningar, vilket innebär att du lägger till applikationsägaren i avsnittsåtkomst-tabellen istället för SA_SCHEDULER. I en uppgiftskedja kan applikationer ha olika ägare med behörighet till källor beroende på varje ägares åtkomsträttigheter. Mer information finns i Tjänstekluster (endast på engelska).

Hantera användaråtkomst i en Multi-Cloud-miljö

I en Qlik Sense-multimolnmiljö ingår flera sätt att autentisera användare. Med Qlik Sense Enterprise on Windows verifieras ofta USERID i Section Access-säkerhetstabellen av proxytjänsten. I Qlik Cloud tar en identitetsleverantör den autentiseringsrollen. Därför kommer inte Section Access som är konfigurerat för en lokal miljö som Qlik Sense Enterprise on Windows att fungera i en molnmiljö.

Om en OIDC- eller SAML-identitetsleverantör (Qlik IdP eller anpassad IdP) används med Qlik Cloud, används subject claim för att identifiera användare när de loggar in. Med Section Access jämförs värdet i USERID-fältet i säkerhetstabellen med värdet för subject claim. När du konfigurerar klientorganisationen ska du försäkra dig om att SAM-kontonamnet mappas till subject claim för identitetsleverantören. Om till exempel SAM-kontonamnet är AD_DOMAIN\Dev anger du subject claim som AD_DOMAIN\Dev. Om du vill se värdet för IdP:ns subject claim lägger du till /api/v1/diagnose-claims efter klientorganisationens URL i webbläsaren, till exempel your-tenant.us.qlikcloud.com/api/v1/diagnose-claims. I JSON-svaret kallas subject claim för sub.

Om du inte kan använda SAM-kontonamnet finns det ett annat sätt att autentisera en användare. Eftersom e-postadresser ofta är samma i olika miljöer, kan du använda USER.EMAIL-fältet istället för USERID i säkerhetstabellen. Här är ett exempel på hur säkerhetstabellen kan se ut:

ACCESS USERID USERE-post Kommentar Land
USER

ABC\Joe

* Access-on-prem USA
USER *

joe.smith@example.com

Access-in-cloud USA
USER

ABC\Ursula

* Access-on-prem Tyskland
USER *

ursula.schultz@example.com

Access-in-cloud Tyskland
USER

ABC\Stefan

* Access-on-prem Sverige
USER *

stefan.svensson@example.com

Access-in-cloud Sverige

Behörighetsskript:

Section Access; LOAD * INLINE [ ACCESS, USERID, USER.EMAIL, COUNTRY USER, ABC\Joe, *, United States USER, *, joe.smith@example.com, United States USER, ABC\Ursula, *, Germany USER, *, ursula.schultz@example.com, Germany USER, ABC\Stefan, *, Sweden USER, *, stefan.svensson@example.com, Sweden ];

Observera att varje användare har två poster: en för lokal åtkomst och en för åtkomst i molnet. Jokertecknen säkerställer att bara relevanta autentiseringsfält används. I det här exemplet används COUNTRY som datareduktionsfält.

Använda Section Access och Insight Advisor Chat

För att appar som använder Section Access ska bli tillgängliga i Insight Advisor Chat måste du se till att följande tjänstanvändare har administratörsbehörighet i Section Access-skriptet:

  • INTERNAL/sa_repository: det här gör skriptet för avsnittsåtkomst tillgängligt i databastjänsten för styrning av användaråtkomst.

  • INTERNAL/sa_scheduler: detta gör att applikationen kan läsas in igen med QMC-uppgifter.

Anteckning om varning

Om du har känslig information i applikationsnamn, fältnamn eller namn på originalobjekt kan dessa exponeras genom att göra applikationer som använder Section Access tillgängliga för Insight Advisor Chat. Appförslag för frågor omfattar appar i strömmar som användare har åtkomst till. Dessa kan omfatta applikationer som användare inte har åtkomst till i en applikations avsnittsåtkomst. Att välja dessa applikationer kommer dock inte att göra något. När du klickar på Dimensioner eller Mått för att visa de tillgängliga elementen från en applikation med avsnittsåtkomst kan användare se objekt som de inte har åtkomst till. Om användaren klickar på dessa element kommer det dock inte att visas några data.

Exempel:

Section Access; LOAD * inline [ USERID ,ACCESS INTERNAL\sa_repository ,ADMIN INTERNAL\sa_scheduler ,ADMIN DOMAINNAME\user1 ,ADMIN DOMAINNAME\user2 ,USER DOMAINNAME\user3 ,USER ];

När dessa användare är i avsnittsåtkomst-skriptet, kan du göra applikationen tillgänglig för Insight Advisor Chat. När applikationen har laddats om, kommer applikationen att vara tillgänglig i Insight Advisor Chat.

Använda QVD-filer med avsnittsåtkomst

QVD-filer kan läsas som vanlig laddning eller optimerad laddning. En optimerad laddning innebär att inga dataomvandlingar sker under laddningen och att det inte finns några filter i någon WHERE-sats.

Optimerade laddningar fungerar inte om QVD-filer används med avsnittsåtkomst Om du vill använda en QVD-fil för att ladda data i avsnittsåtkomst måste du expandera QVD-filen. Enklaste sättet att expandera en QVD-fil är att ändra formatering när data laddas.

I följande exempel expanderas inte QVD-filen eftersom ingen formatering görs av data.

Exempel: Exempel som inte fungerar utan formatering av data (optimerad laddning).

section access; LOAD ACCESS, USERID, PASSWORD, [GROUP] FROM SAccess.qvd (qvd);

I stället kan du exempelvis använda funktionen upper() för att formatera data som kommer att expandera QVD-filen.

Exempel: Exempel som fungerar med formatering av data

section access; LOAD ACCESS, USERID, PASSWORD, upper([GROUP]) as [GROUP] FROM SAccess.qvd (qvd);

Du kan även lägga till en Where 1=1-sats i LOAD-satsen.

Exempel: Ytterligare ett exempel som fungerar med formatering av data

section access; LOAD ACCESS, USERID, PASSWORD, [GROUP] FROM SAccess.qvd (qvd) where 1=1;

Riktlinjer och tips för användning av avsnittsåtkomst

Här följer några viktiga fakta och användbara tips om avsnittsåtkomst.

  • Alla fältnamn och värden som listas i LOAD- eller SELECT-satser i åtkomstdelavsnittet 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.

  • Du kan inte använda Section Access-systemfältsnamnen som listas här som fältnamn i din datamodell.
  • Om du gör ändringar i en utvecklingskopia av en publicerad applikation, måste utvecklingskopian publiceras igen innan avsnittsåtkomst-kontroller tillämpas på den publicerade applikationen.
  • 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 applikationen, blir de dock begränsade av sina egna behörigheter.
  • 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.
  • Om du vill undvika att exponera begränsad data kan du ta bort alla bifogade filer med avsnittsåtkomstinställningar innan du publicerar applikationen. Bifogade filer tas med när applikationen publiceras. Om den publicerade applikationen 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 applikationen kan se alla data i de bifogade filerna.
  • Ett jokertecken (*) tolkas som alla (listade) värden för fältet i 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.
  • Säkerhetsfält kan placeras i olika tabeller.
  • När data laddas från en QVD-fil går laddningen långsammare om funktionen Upper används.
  • Om du har låst dig själv ute från en app genom att ställa in avsnittsåtkomst kan du öppna appen utan data och redigera behörighetsdelavsnittet 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 applikation utan data.

  • Om en binär laddning används, kommer åtkomstbegränsningarna att ärvas av den nya Qlik Sense applikationen.

Var den här sidan till hjälp för dig?

Om du stöter på några problem med den här sidan eller innehållet på den, t.ex. ett stavfel, ett saknat steg eller ett tekniskt fel – meddela oss!