Row Level Security toepassen (II)

Uit het praktijkvoorbeeld uit deel 1 van ons blog Row Level Security: als een SSRS-rapport of een SSAS-kubus wordt gemaakt die zich baseert op deze tabel kunnen de gegevens hierin worden toegespitst op de gebruiker die het rapport aanroept.

Voor SSRS kun je er bijvoorbeeld voor kiezen om op basis van de Active Directory te bepalen welke gebruiker er een rapport aanroept. Deze waarde kan vervolgens worden gebruikt om een parameter te vullen die een rapportfilter in werking zet. Daardoor laat het rapport niet de volledige dataset uit de tabel zien, maar slechts de gegevens die de gebruiker zou moeten zien. In SSAS kan op basis van Roles eigenlijk hetzelfde trucje worden toegepast, waardoor een kubus bij het presenteren van de data op basis van welke gebruiker een overzicht aanroept, besluit welke informatie wel en niet wordt weergegeven. Dit is iets wat redelijk veel wordt gebruikt in BI, het nut van dit toepassen is daarmee dan ook helder.

Nu is er dus ook Row Level Security beschikbaar in SQL. Waarom wil je dit toepassen? Eigenlijk is het antwoord simpel; waarom niet!? Gezien het nut van het gebruik in Reporting Services of Analysis Services kun je waarschijnlijk ook wel bedenken wat het nut is van dit toepassen op de database zelf: elke gebruiker die de database aanroept krijgt direct een, op basis van zijn rechten, gefilterde resultaatset terug. Erg handig in bepaalde situaties!

Ook voor SQL 2016 of de huidige versie van AZURE waren er al allerlei trucs die iets dergelijks mogelijk maakte. Een voorbeeld hiervan is het creëren van een functie die de rechten per gebruiker regelt, waarna deze functie wordt gejoind in een view. Vervolgens wordt gebruikers toegang tot de database geboden via deze views. Groot nadeel van deze methode is dat bij elke tabel die wordt gecreëerd, een view moet worden gemaakt voorzien van de juiste functie-aanroep om dit rechtenstuk te regelen. Daarnaast creëer je een view die (min of meer) gelijk is aan de tabel en echt alleen bestaat omwille van security. In het kader van onder andere beheersbaarheid niet de meest ideale situatie.

Een andere situatie waarin dit bijvoorbeeld handig kan zijn, is een multi-tenant applicatie. Ook hier kan in één applicatie door verschillende gebruikers uit één database worden gewerkt, zonder dat de applicatie hiervoor de rechten hoeft te bekijken of door het wederom creëren van extra view.

Hoe in de praktijk gebruiken?

De in het praktijkvoorbeeld genoemde organisatie geeft een mooi voorbeeld van toepassing van Row Level Security: om allerlei redenen is het niet wenselijk dat een medewerker gegevens van klanten ziet waarmee hij geen contact heeft. In een DataWareHouse-omgeving, krijg je een situatie waarin er bijvoorbeeld een tabel is die informatie weergeeft welke klanten kunnen (of zelfs moeten) worden benaderd. Deze tabel kan er zo uitzien:

Rls Fact End Of Contracts

Als we nu voor een specifieke verkoper willen weergeven welke acties voor deze persoon nog openstaan kunnen we dit queryen door middel van een SELECT-statement, voorzien van een WHERE-statement met een bepaald SalesPersonID:

Rls Sales Person Id

Of alle data worden in een tool zoals SSRS of SSAS gestopt en deze handelt het rechtenstuk af. Dan is de query nog simpeler:

Rls Ssrs Of Ssas

Als je deze query laat uitvoeren op de database door alle gebruikers die hierbij kunnen, is de output hetzelfde: elke gebruiker die deze tabel mag benaderen, krijgt het totale aantal records terug dat voldoet aan de voorwaarde. Dit is echter allemaal vóór de introductie van Row Level Security. Want met Row Level Security kan elke gebruiker op basis van zijn rechten met dezelfde query andere uitkomsten krijgen!

Lees ook deel III: Row Level Security technisch inrichten

Erwin Slob - data analytics consultant bij Rubicon met jarenlange ervaring in Business Intelligence-oplossingen met behulp van Microsoft-technieken. Specialisaties: informatie-analyse, data modelleren en datavisualisatie.


Terug naar het overzicht

Klantcases

Succesvolle migratie naar Microsoft Business Intelligence

Met de migratie naar Microsoft Business Intelligence beschikt Altrecht over een modern en geavanceerd Business Intelligence- platform.

Lees meer

Dynamics CRM groeit uit tot centrale applicatie voor relatiebeheer en meer!

Behoefte aan één 'full service Microsoft-applicatie-dienstverlener' die in staat is op strategisch niveau mee te denken en gezamenlijk de ICT-visie te realiseren.

Lees meer

Optimalisatie kennismanagement met Microsoft SharePoint

Met SharePoint Server 2010 alle aanwezige kennis gestructureerd en snel en laagdrempelig beschikbaar.

Lees meer

Vragen over dit onderwerp?



Copyright Rubicon   |   All Rights Reserved   |   Disclaimer   |   Leveringsvoorwaarden