Secure Application Roles



Vergelijkbare documenten
Elfde-Liniestraat Hasselt Schooljaar TINFO POKER GAME Oracle Scripts

Oracle Database Vault

TRAININGEN EN MASTERCLASSES

VISIE Najaar 2009 Jaargang 14 Nummer 2 h 7,50

Na bestudering van dit hoofdstuk moet je tot het onderstaande in staat zijn:

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

Martiris Secure Private Data. Gegevensbescherming in Oracle Databases

Databases - Inleiding

Oracle-database creëren

Editions Based Redefinition: Tijdens de verbouwing gaat de verkoop door. Lucas Jellema, Alex Nuijten - AMIS Services BV

Sparse columns in SQL server 2008

Autorisatiepolicy s in een datawarehouse

Zelftest Oracle basiscursus

Oracle database voor gebruik met BPMone creëren

PL/SQL. Declaraties van variabelen. Structuur PL/SQL is een blok-georiënteerde taal: Toekenningen

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

EXIN Databases en SQL Foundation

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

Databases en SQL Foundation (DBSQLF.NL)

Katholieke Hogeschool Kempen

Een Data Driven toepassing op basis van Visual Objects en SQL Server

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

Informatie & Databases

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Inhoudsopgave. Theorie Praktijk Gegevens uit Database halen DML commando s... 14

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

De plug-in is heel eenvoudig te installeren met een setup-programma. Waarna je een aantal menu opties in het tools menu er bij krijgt.

[TOETS SQL INLEIDING]

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: Groep TDI 1

1. Inleiding Inleiding SQL Inleiding Database, databaseserver en databasetaal Het relationele model...

Hoofdstuk: 1 Principes van databases

Security web services

Handleiding Microsoft SQL Server configuratie

SQL Plan Management in Oracle11g Harald van Breederode

Een website maken met databasetoegang.

User Management E-applications

Bibliotheek in ProcessMaker

Hoe bouw ik een component? Drs. Arjan Burger

Data Warehouse Script Generator Doel

Query SQL Boekje. Fredrik Hamer

Oracle Multimaster Replicatie

RoBeheer 1.5. Dé specialist in ruimtelijke informatievoorziening. Crotec bv Parallelweg AL s-hertogenbosch

SSL VPN. In deze handleiding zullen wij onderstaande SSL mogelijkheden aan u uitleggen. - SSL VPN account/groep creëren.

Uitwerkingen van de opgaven

PHP en een MySQL database.

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank

Foutafhandeling in SQL

NHibernate als ORM oplossing

Orbis Software. Portal4U. Installatie Handleiding. Dit document bevat de Installatie Handleiding voor Portal4U

Oracle Application Server Portal Oracle Gebruikersgroep Holland Oktober 2003

Elfde-Liniestraat Hasselt Schooljaar TINFO POKER GAME Oracle DBA

SesamID gebruikers handleiding Versie 1.0 Februari 2017

Beveiligingsbeleid. Online platform Perflectie

Responsive web applicaties op Oracle

Gedistribueerd installeren

IT Galaxy 2018 ON THE RIGHT TRACK ON THE RIGHT TRACK #PQRITG18 #PQRITG18

Installatiehandleiding Business Assistent

Les 11 : Basis SQL (deel2).

CAK Installatiehandleiding

SQL SERVER Werking van Database Snapshots

SQL datadefinitietaal

SSL VPN. In deze handleiding zullen wij onderstaande SSL mogelijkheden aan u uitleggen. - SSL VPN account/groep creëren.

Wiki on Wheels. -Wikipedia on your personal SQL server. Door Anton Kirschhock

Handleiding - Aanmaken van SQL server gebruiker

12. Meer dan één tabel gebruiken en sub-queries

SQL.

Handleiding Subsidieportaal Agentschap SZW 02. Mijn Contactpersonen

EMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen

Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D

7. Het selecteren van gegevens

Client Applicaties (Browser+Desktop) http/https. Apache Webserver. http proxy. WMS WFS Adm SLD Tomcat. Tomcat. GeoServer. PostGIS

Oracle Rolling Upgrades met SharePlex Systems Consultant Quest Software Nederland 9/

Zonnepanelen Hoe krijg je de data op je website?

Single sign on kan dé oplossing zijn

HANDLEIDING LOKALE UITVOERBAARHEID VOOR EEN INTERNE INDIENER. Werken in het METC Management-Systeem METC Erasmus MC

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO

EasyAccess 2.0 Handleiding. Maak een Domain aan

Oracle client 1.2 voor ixperion 1.3 en hoger

COMPUTERWOORDEN.NL SQL - basis

Dynamische gebruikersbeslissingen in SAP Workflow

OGH Apex dag Hans Wijnacker. Golfscores.eu. Zeist,

WCF claims-based authorization

Handleiding configuratie en gebruik tekenmodule

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen:

IBAN API. Simpel & krachtig. Documentatie : IBAN REST API Versie : 1.0 DE BETAALFABRIEK

Hoog Beschikbaarheid en het waterschapshuis

Installatiehandleiding. ixperion Word Import. voor Windows 2008 R2 64bit. Smartsite ixperion WordImport Implementatie. Copyright

DATAMODELLERING CRUD MATRIX

Figuur 1 HTML-pagina opvragen

Single Sign On. voor. Residentie.net en Denhaag.nl

Transcriptie:

Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam en wachtwoord zowel toegang geeft tot de applicatie als tot de database. Hierdoor kunnen gebruikers buiten de applicatie om met bijvoorbeeld Toad of SQL*Plus de database benaderen. In de praktijk ziet men vaak dat rechten in de database dermate ruim zijn dat hierdoor de gebruiker in potentie veel kwaad kan. In dit artikel wordt besproken hoe voorkomen kan worden dat een gebruiker rechtstreeks inlogt op de database. Hierbij wordt gebruik gemaakt van Secure Application Roles. 2. Ontwerp Het ontwerp van de toegangsbeveiliging bepaalt de mogelijkheden van misbruik. De ene oplossing biedt voordelen ten opzichte van een andere, maar het gebruik van Role Based Access Control, kortweg RBAC, is een veel voorkomende keuze. Over RBAC is veel informatie te vinden, bijvoorbeeld op http:csrc.nist.govgroupssnsrbac en een veel voorkomend praktijkvoorbeeld staat beschreven in de volgende alinea. Een applicatie bestaat uit verschillende functionaliteiten. Functionaliteit kan daarbij gegroepeerd worden, zodat bepaalde functies eenvoudig aan een rol gekoppeld kunnen worden. Voor het wijzigen van de klantgegevens kan bijvoorbeeld de rol rol_wijzigen_klant aanwezig zijn. Deze rol beschikt over de privileges om de onderliggende database objecten te wijzigen via dml-statements. Dit principe staat in onderstaande figuur afgebeeld, waarbij er een n-op-n relatie bestaat tussen de verschillende objecten. user role privilege gebruiker Alhoewel er verschillende ontwerpen mogelijk zijn wordt in de rest van dit artikel RBAC als uitgangspunt gehanteerd. De centrale vraag bij het toepassen van RBAC binnen de Oracle database is hoe en wanneer we de relatie leggen tussen users en rollen. 3. Oplossingen Om de toegang tot applicaties en databases te beheren zijn er verschillende alternatieven. Een mogelijkheid is initieel inloggen onder een guest account en vervolgens onder water inloggen met het gebruikers account. Hierbij kan bijvoorbeeld gebruik gemaakt worden van account informatie van het operating system. Is de mogelijkheid aanwezig om een zelf gedefinieerd operating system account te gebruiken, dan is deze toegangsbeveiliging echter onvoldoende. Ingo Wevers 1

Ook kunnen we rollen hanteren waarbij deze rollen alleen via een wachtwoord te activeren zijn. Dit vereist echter weer noodzakelijke aanpassingen indien de wachtwoorden worden gewijzigd. Het gebruik van logon triggers biedt mogelijkheden om gebruikers toegang te ontzeggen, maar niet om rollen te activeren. Dit wordt veroorzaakt door het feit dat logon triggers als definer rights gedefinieerd zijn. Een logon trigger wordt namelijk uitgevoerd als de user sys en een aanroep naar een package waarbinnen rollen gezet worden, zal deze rol vervolgens activeren voor de sys user. Het gebruik van Secure Application Roles biedt de mogelijkheid om rollen uitsluitend te activeren door het uitvoeren van een package. Dit is een effectief mechanisme, omdat de applicatie op het moment van inloggen de rol kan activeren. Het vereist naast de initiële inrichting geen extra inspanningen op het gebied van user management en is eenvoudig aan te passen bij functie-wijzigingen. In de volgende paragraaf wordt Secure Application Roles nader uitgewerkt. 4. Activeren van rollen via Secure Application Roles In onderstaande figuur staat het principe Secure Application Roles afgebeeld, waarna een korte toelichting volgt. User Application Database Identification Authentication Authorisation guard package Package SetRole for user Authorisation table De user brengt een sessie tot stand met de applicatie. De applicatie bevat de modulen identificatie, authenticatie en autorisatie. Door middel van de combinatie gebruikersnaam en wachtwoord handelt de applicatie de identificatie en authenticatie af. Vervolgens gaat de autorisatie module, het guard package in bovenstaande figuur, verschillende controles uitvoeren. De keuze van het soort controle kan bijvoorbeeld gekoppeld worden aan de webserver naam waar de sessie vandaan komt en het al dan niet voorkomen van de gebruiker die in de tabel met autorisatie gegevens. Juist dit autorisatie package dat naar eigen inzicht ontworpen kan worden biedt veel mogelijkheden, waarbij er gebruik gemaakt kan worden van de context van die gebruiker. Indien het guard package de controles uitgevoerd heeft, wordt de package procedure SetRole aangeroepen. De uitvoering van SetRole zorgt ervoor dat de juiste rol geactiveerd wordt voor de gebruiker. Het package is in staat de rol te activeren, omdat in het CREATE ROLE statement IDENTIFIED USING <package> is gebruikt. Wrapping en auditing van het package kunnen vervolgens een bijdrage leveren aan de onzichtbaarheid van de controles en de vaststelling dat het autorisatie package inderdaad op basis van een enkele applicatie module wordt aangeroepen. Ingo Wevers 2

Onderstaand een voorbeeld van de SQL en PLSQL code voor het implementeren van Secure Application Roles. 1. Maken omgeving -- Tablespace users dient aanwezig te zijn CREATE USER test_user IDENTIFIED BY test DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; GRANT CREATE SESSION TO test_user; CREATE USER monitor IDENTIFIED BY test DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; GRANT DBA TO MONITOR; CREATE USER test_owner IDENTIFIED BY test DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; GRANT CREATE SESSION TO test_owner; GRANT CREATE TABLE TO test_owner; ALTER USER test_owner QUOTA UNLIMITED ON users; CONNECT test_ownertest CREATE TABLE customer (naam VARCHAR2(8)); INSERT INTO customer VALUES ('WEVERS'); COMMIT; 2. Secure Application Roles implementeren -- Maken van een rol die geactiveerd kan worden door een package. CONNECT MONITORtest CREATE ROLE write IDENTIFIED USING monitor.write_guard; GRANT SELECT,INSERT,DELETE,UPDATE ON test_owner.customer TO write; -- Toekennen van privileges aan de rol CREATE ROLE read IDENTIFIED USING monitor.read_guard; GRANT SELECT ON test_owner.customer TO read; -- Maken van een autorisatie-tabel DROP TABLE MONITOR.USERS; CREATE TABLE MONITOR.USERS (OSUSER VARCHAR2(6), ROL VARCHAR2(3)) TABLESPACE users; grant select on users to test_user; -- Package maken dat de rol kan activeren voor een gebruiker CREATE OR REPLACE PACKAGE monitor.write_guard AUTHID CURRENT_USER CREATE OR REPLACE PACKAGE BODY monitor.write_guard DBMS_SESSION.set_role ('write'); CREATE OR REPLACE PACKAGE monitor.read_guard AUTHID CURRENT_USER Ingo Wevers 3

CREATE OR REPLACE PACKAGE BODY monitor.read_guard DBMS_SESSION.set_role ('read'); -- Package maken dat de controles uitvoert en afhankelijk van de functie het juiste package aanroept en daarmee de rol activeert. CREATE OR REPLACE PACKAGE monitor.access_guard AUTHID CURRENT_USER --In eigen test <SERVERNAAM APPLICATIE> vervangen door localhost.localdomain CREATE OR REPLACE PACKAGE BODY monitor.access_guard FUNCTION isapplicationhost RETURN BOOLEAN RETURN (SYS_CONTEXT('USERENV','HOST') = '<SERVERNAAM APPLICATIE>'); v_aantal integer := 0; select count(*) into v_aantal from monitor.users b where b.osuser = SYS_CONTEXT('USERENV','OS_USER') and b.rol = 'DBA'; IF (v_aantal > 0) and (isapplicationhost) monitor.write_guard.set_role; ELSE monitor.read_guard.set_role; END IF; GRANT EXECUTE ON monitor.access_guard TO test_user; 3. Test connect monitortest -- Zorg voor registratie in de autorisatie table insert into MONITOR.USERS values ('oracle','dba'); --Stel vast dat je de rol write hebt ontvangen, ervan uitgaande dat je inlogt met het OSaccount oracle connect test_usertest; Ingo Wevers 4

--Voer vanuit de applicatie voor de user die wil inloggen het package uit exec monitor.access_guard.set_role; --Check de rollen en stel vast dat je een record kunt verwijderen select * from test_owner.customer; delete from test_owner.customer; rollback; --Voor de tweede test het record verwijderen, zodat de read rol wordt toegekend connect monitortest delete from MONITOR.USERS where osuser = 'oracle'; --Connect als de test_user connect test_usertest; --Voer het package wederom uit exec monitor.access_guard.set_role; --Stel vast dat je de rol read hebt ontvangen select * from test_owner.customer; --Een delete mag niet slagen delete from test_owner.customer; --Opruimen connect as sysdba drop user test_user; drop user test_owner cascade; drop user monitor cascade; drop role read; drop role write; 5. Conclusie Secure Application Roles biedt een oplossing voor beheersbare toegang tot de database. Het is een oplossing die erg geschikt is in situaties waarbij gebruik gemaakt wordt van Role Based Access Control. Het toekennen van rollen wordt niet statisch geregeld, maar dynamisch vanuit de applicatie op het moment dat iemand inlogt. Hierbij is een duidelijke autorisatie-structuur van de applicatie noodzakelijk. Het is een flexibele oplossing die beheersbaar en onderhoudbaar is. Een verandering van functie betekent slechts een wijziging in de autorisatie gegevens. Eisen voor het succesvol toepassen van Secure Application Roles zijn een goed doordacht RBAC ontwerp, een duidelijk mechanisme voor autorisatie, integratie van een autorisatie module in de applicatie en samenwerking tussen ontwikkelaars en dba's. Over de auteur: Ingo Wevers BSc is werkzaam als Oracle consultant binnen GRID-IT en richt zich met name op Oracle security en Oracle Streams. Reacties op dit artikel graag per mail naar iwevers@grid-it.nl Ingo Wevers 5