Vissza

Sor szintű adathozzáférési jogosultság megvalósítása SQL Server és Tableau között

  György Retek

  2017.06.06. 14:02

Az SQL Server, mint adatbáziskezelőktől elvárható, lehetőség széles skáláját kínálja az adatokhoz való hozzáférés korlátozásának, például select jog adható táblaszinten, felhasználótól függően maszkolhatóak táblák egyes oszlopai, így pl. az ügyletek adatai elérhetőek maradnak, de maguk az ügyfelek nem lesznek beazonosítható a riportoló számára.

A SQL server 2016-os változatától érhető el a row-level security funkcionalitás. Predikátumfüggvények segítségével táblákra sor szintű szűréseket tehetünk, a predikátumok hivatkozhatnak – sok más mellett – az aktív felhasználóra is. A Tableau oldalán csak a Tableau-ba bejelentkezett felhasználó adatainak továbbítása történik, vagyis az MSSQL connection beállításnál megadható initial sql parancs a következő lesz, feltételezve hogy a Tableau az SQL szerverrel fix tableau useren keresztül kommunikál. A [TableauServerUser]helyére a Tableau automatikusan behelyettesíti a bejelentkezett felhasználó azonosítóját:

EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;

Magán az SQL szerveren léteznie kell a kérdéses felhasználóknak a lekérdezendő táblákra érvényes SELECT joggal (login jog nem szükséges, hiszen a tableau user lép be).

Ismeretlen felhasználó nem fog tudni lekérdezni, hibaüzenet érkezik:

Fontos megjegyezni, hogy a felhasználó ha közvetlenül el tudja érni az SQL szervert a kérdéses loginnal, akkor is csak a számára engedélyezett adatokat fogja tudni csak elérni, vagyis ez a védelem a Tableau-tól független.

Példa predikátumra:

CREATE FUNCTION fn_securitypredicate(@zip as varchar(4)) 
    RETURNS TABLE 
WITH SCHEMABINDING 
AS 
    RETURN SELECT TOP 1 1 as fn_securitypredicate_result FROM dbo.securitytable 
           WHERE zip=@zip and username = USER_NAME();

go

 

CREATE SECURITY POLICY policy
ADD FILTER PREDICATE dbo.fn_securitypredicate(client_zip)  
ON dbo.crm 
WITH (STATE = ON);
go

A  fenti példa a felhasználói azonosítókhoz rendelt irányítószámokat tartalmazó securitytable -ban kérdezi le hogy adott felhasználó számára elérhető-e a kérdéses irányítószám. Ez maga a policy, a predikátum a predikátumfüggvényt felhasználva automatikusan szűri a crm táblát a zip kód alapján, vagyis a fenti példánál a crm tábla sor szinten szűrődik. Lehetőség van block predikátum beállítására is amivel a táblába való írás, törlés korlátozható, de mivel a Tableau riport eszköz és nem írja az adatbázist, a Tableau felől nincs szükség ilyen védelemre, viszont ha a felhasználók közvetlen hozzáféréssel is rendelkeznek érdemes gondolni rá.

Amennyiben pedig továbblépnél és szeretnéd ezekből a lehetőségekből a mindennapi munkában minél többet hasznosítani, keress fel minket az elérhetőségeink valamelyikén, és mi segítünk megtalálni azokat a területeket, ahol a legnagyobb üzleti hasznot realizálhatod egy ilyen eszköz használatával, természetesen szakmai támogatást nyújtunk a bevezetéshez


   

Megjegyzések
Még nincsenek hozzászólások. Légy első!

Blog kategória

Címkefelhő

Bloggerek

György Retek
Bejegyzések: 5
Csillagok: 7
Dátum: 2017.09.30.
Mihály Kávási
Bejegyzések: 7
Csillagok: 4
Dátum: 2017.09.04.
Kata Rozmis
Bejegyzések: 9
Csillagok: 9
Dátum: 2017.07.18.
Zsolt Hajnalka
Bejegyzések: 2
Csillagok: 0
Dátum: 2017.06.01.
Bence Baranyás
Bejegyzések: 1
Csillagok: 1
Dátum: 2017.05.24.

Kapcsolat