row & column level access

31
Row & Column Level Access Peter Rurenga OGh presentatie Martiri s 15-02-2011

Upload: cedric

Post on 04-Feb-2016

65 views

Category:

Documents


0 download

DESCRIPTION

Row & Column Level Access. Peter Rurenga OGh presentatie. 15-02-2011. Martiris. Onderwerpen. Waarom Row en/of Colum Level Security? (RLS en CLS) Overzicht methodes Views Oracle Label Security (OLS) Database Vault (DBV) Virtual Private Database (VPD) Inzoomen op VPD - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Row & Column Level Access

Row & Column Level Access

Peter RurengaOGh presentatie

Martiris15-02-2011

Page 2: Row & Column Level Access

Onderwerpen

• Waarom Row en/of Colum Level Security? (RLS en CLS)

• Overzicht methodes Views Oracle Label Security (OLS) Database Vault (DBV) Virtual Private Database (VPD)

• Inzoomen op VPD• Secure Private Data (SPD)• Samenvatting

Martiris15-02-2011

Page 3: Row & Column Level Access

Waarom RLS en CLS?

Security- ‘No need to know’- afschermen van gegevens- uitsluiten van gebruikers- privacy wetgeving

Functioneel- ‘Need to know’ - gecontroleerd gebruikerstoelaten- business mogelijk maken- multiclient: alleen toegang tot eigen gegevens

Martiris15-02-2011

Page 4: Row & Column Level Access

Security: een greep uit het nieuws...

bron: security.nl• Supermarkt IT'er steelt voor 100.000 euro aan

bonuspunten• Ziekenhuis ontslaat personeel na grasduinen EPD• Vodafone ontslaat personeel na groot datalek• Agent bekijkt politiedatabase in opdracht van crimineel

Martiris15-02-2011

Page 5: Row & Column Level Access

Functioneel: Outsourcing, SaaS, Cloud

Bijvoorbeeld Electronisch Patienten Dossier: • Centrale opslag van gegevens, gedeelde infra- en

datastruktuur• Verschillende partijen en indelingen:

o gegevens per ziekenhuis / afdeling / artso onderscheid naar rollen: verpleegkundige / arts o taken van elkaar overnemen o verschil in mutatie rechteno de patient inzicht in eigen dossier

Martiris15-02-2011

Page 6: Row & Column Level Access

Impact RLS op applicatie

Filteren records kan onverwachte gevolgen hebben(indien toegepast op reeds bestaande applicaties)

• referentiele integriteit• unique kolommen• batches

Martiris15-02-2011

Page 7: Row & Column Level Access

Traditionele aanpak: views

Voordelen:• biedt zowel RLS en CLS• afschermen door toegang te

beperken tot views, niet op tabellen• Flexibel• Parametriseren dmv Applicatie

Context• Werkt in alle DB versies

Martiris15-02-2011

Nadelen:• Verweven met applicatie• Tabel gegevens blijven beschikbaar

voor privileged users• Verschillende views voor

verschillende DML (valt te ondervangen met IO triggers)

• Programmeren

Page 8: Row & Column Level Access

Oracle Label Security (OLS) (1)

Wat is het?• Ontwikkeld voor defensie en inlichtingendienst.

o Transparant filteren van recordso Labels voor zowel gebruikers als recordso Onderscheid naar DML o Tabel krijgt extra, verborgen kolom (ROWLABEL)o Aparte licentie vereisto Alleen Enterprise Edition

Martiris15-02-2011

Page 9: Row & Column Level Access

Oracle Label Security (OLS) (2)Een label bestaat uit drie verschillende componenten:- Levels zijn hierarchisch:publiek (L1), vertrouwelijk (L2), geheim(L3)- Compartments: Manager (M), Employee (E) - Groups, hierarchisch: Region Noord (RN), Regio Zuid (RZ)Voorbeeld label record: 'L2:M:RN'voorbeeld label employee: 'L2:E:RN'voorbeeld label manager: 'L3:M,E:R20,R40,RN,RZ’

Nb, het is niet verplicht alle componenten te gebruiken.

Martiris15-02-2011

Page 10: Row & Column Level Access

Oracle Label Security (OLS) (3)

Gebruikers hebben:Minimum/Maximum/default level wat ze in mogen stellen voor nieuwe data.Per compartment en groep DML rechten.

Speciale rollen om data label aan te passen:- writedown/up : aanpassen level- writeaccross : aanpassen compartiments/groups

Martiris15-02-2011

Page 11: Row & Column Level Access

Oracle Label Security (OLS) (4)

Martiris15-02-2011

Voordelen:• Biedt RLS • Out of the box• Beschermd tegen insider threat• in de database: applicatie

onafhankelijk• policies kunnen in OiD worden

ondergebracht

Nadelen:• Biedt geen CLS • extra kolom• Niet flexibel• Best ingewikkeld• Aparte licentie• Alleen in Enterprise Edition

Page 12: Row & Column Level Access

Database Vault (DBV) (1)

Specifiek bedoeld voor:• Scheiden van taken• Voldoen aan wetgeving (SOX)• Afschermen privileged users, zoals DBA

Biedt uitgebreide interfaces, packages en rapportages.

Martiris15-02-2011

Page 13: Row & Column Level Access

Database Vault (DBV) (2)Hoe werkt het?1. DV-Admin maakt ‘realm’ aan (bv. HR_REALM)2. Voegt dan een object toe (bv. HR.EMPLOYEES)3. DV-Account Manager maakt gebruiker aan en maakt deze ‘participant’ van de ‘realm’.

Martiris15-02-2011

Page 14: Row & Column Level Access

Database Vault (DBV) (3)DBV is met name sterk in reguleren van SQL commando’s : ‘Command rules’ reguleren gebruik DML maar ook DDL, zoals ALTER / DROP statements.

Echter, DBV biedt geen RLS of CLS. Integratie met OLS mogelijk • maar dan weer een apartie licentie.

Martiris15-02-2011

Page 15: Row & Column Level Access

Virtual Private Database (VPD) (1)

Wat is het?• Transparant filteren van records en/of maskeren van

kolommen• Onzichtbare view• Onderscheid naar DML • Implementatie dmv. PL/SQL functies:

o Return = where clause, deze filtert records of maskeert kolomo Toepasbaar op tabellen, views of synoniemeno Activeren met DBMS_RLS package

Martiris15-02-2011

Page 16: Row & Column Level Access

Virtual Private Database (VPD) (2)

Voordelen• Scheiden applicatie van security• Afschermen privileged users• Flexibel• Gratis• Standaard aanwezig sinds 8.1.5• Security in de database, applicatie onafhankelijk• Kan er niet omheen (in tegenstelling tot views)

o Ad hoc query tools: Toad, SQL*Plus, ...

Martiris15-02-2011

Page 17: Row & Column Level Access

Virtual Private Database (VPD) (3)

Nadelen• Alleen beschibaar in Enterprise Edition• Zelf logica (PL/SQL) programmeren• Kan complex worden• Lastig debuggen• Niet waterdicht

Martiris15-02-2011

Page 18: Row & Column Level Access

Eenvoudig voorbeeld: beperk DEPT tot waarde 20

Eerst de functie die de beperking op zal leveren:

create or replace function restrict_dept (p_schema in varchar2 ,p_object in varchar2)

return varchar2 is begin

return 'deptno = 20'; end;

/

Martiris15-02-2011

Page 19: Row & Column Level Access

Eenvoudig voorbeeld: beperk DEPT tot waarde 20

Dan toepassen op het object (vet = verplicht)

begindbms_rls.add_policy (object_schema => 'scott' ,object_name => 'demo_dept'

,policy_name => 'restrict_dept' ,function_schema => 'sec_mgr' ,policy_function => 'restrict_dept' ,statement_types => 'select, update' ,update_check => true);

end;/

Martiris15-02-2011

Page 20: Row & Column Level Access

Application Context• Namespace met attribute / value pairs• Default application context: USERENV

• Syntax:sys_context(‘namespace’,’attribute’)• Global vs. Local vs. External• Voordelen: performance en flexibiliteit• Zelf definieren, aanwijzen ‘trusted program’• Zelf waardes toekennen• After logon trigger: kan maar hoeft niet

Martiris15-02-2011

Page 21: Row & Column Level Access

Best practice• Apart schema met daarin

o functies voor VPD o application context packageo rechten op DBMS_RLSo view/functie voor uitlezen context waarden

• Eventueel ten behoeve van eindgebruikerso wrapper package voor manipuleren Appl. Context.

• NB, voor policy functies zijn geen execute rechten nodig

Martiris15-02-2011

Page 22: Row & Column Level Access

Eenvoudig CLS: functie

Functie:create or replace function mask_loc (p_schema in varchar2 ,p_object in varchar2)return varchar2 isbeginreturn q'# deptno = 20 and sys_context('userenv','session_user')='SCOTT'#';end;

Martiris15-02-2011

Page 23: Row & Column Level Access

Eenvoudig CLS: scott ziet location van 20

Dan toepassen op het objectbegin dbms_rls.add_policy (object_schema => 'scott' ,object_name => 'demo_dept' ,policy_name => 'mask_loc' ,function_schema => 'sec_mgr' ,policy_function => 'mask_loc' ,statement_types => 'select' ,sec_relevant_cols => 'LOC' ,sec_relevant_cols_opt => dbms_rls.all_rows);

end;

Martiris15-02-2011

Page 24: Row & Column Level Access

Minimale ingredienten voor VPD

• Objecten• Onderscheid records / kolommen in objecten• Gebruikers (of rollen)

En deze vervolgens aan elkaar knopen…

Dat kan nu gemakkelijker: Secure Private Data

Martiris15-02-2011

Page 25: Row & Column Level Access

Secure Private Data (SPD) (1)

Secure Private Data is:• schil om VPD• declaratief• applicatie transparant• out of the box• web interface (apex)• PL/SQL code 100%

gegenereerd

Martiris15-02-2011

Gebruikers

Profielen

Data Segmenten

Applicatie Data

Figuur 1. Concept data model SPD

ORGANISATIES

Applicatie Rollen

Page 26: Row & Column Level Access

Secure Private Data (SPD) (2)

Wat biedt SPD?• rechten toekennen aan gebruikers of rollen • rechtenbeheer door FB • cascade rechten naar detail gegevens• afschermen subset• multiclient• delen van gegevens• IP restricties• three-tier / Ldap• Column Level Security

Martiris15-02-2011

Page 27: Row & Column Level Access

Secure Private Data (SPD) (3)

• XE of Standard Edition? Dan implementatie via views (ook gegenereerd)

• access logica in packages, Instead Of triggers• verder dezelfde functionaliteit

maar:• scheiding applicatie en security minder strikt• geen bescherming insider threats

Martiris15-02-2011

Page 28: Row & Column Level Access

Secure Private Data (SPD) (4)

Demo!

Martiris15-02-2011

Page 29: Row & Column Level Access

Secure Private Data Screenshot

Demo!

Martiris15-02-2011

Page 30: Row & Column Level Access

Productvergelijking

Martiris15-02-2011

Opties Label Security

Database Vault

VPD SPD

Column level security Nee Nee Ja Ja

Row level security Ja Nee Ja Ja

Out of the box Nee

Standard Edition/XE Nee Nee Nee Ja

Extra Oracle Licenties vereist

Nee Nee

Maatwerk mogelijk Nee Nee Ja Ja

Beheer door FB Nee Nee Nee

Afschermen privileged users

Ja Ja Ja Ja*

* Geldt niet voor de View Option

Page 31: Row & Column Level Access

Samenvatting

Vragen, discussie.

Martiris15-02-2011