Sikkerhet og tilgangskontroll i RDBMS-er

Like dokumenter
Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado

Bruke SQL fra Python. Med Psycopg2

Databaser kort intro. Tom Heine Nätt

1. SQL datadefinisjon og manipulering

Tilkobling og Triggere

Ulike DBMSer. Mest kjente: Oracle PostGreSQL* MySQL* SQLServer* DB2 SQLite Access (DBMS og utv. verktøy i ett) *Skal benyttes i kurset.

Datamodellering og databaser SQL, del 2

ORDBMS og OODBMS i praksis

Småteknisk Cantor Controller installasjon

SQL: Systemaspekter. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Systemaspekter V18 1 / 21

Agenda. Data og grenser Kontekster XSS XSS og kompliserende kontekster Injection attacks Beskyttelse OWASP

Applikasjonsutvikling med databaser

Eksamen i Internetteknologi Fagkode: IVA1379

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Arne Maus, Ifi. delvis lån av gamle foiler

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Bruke SQL fra Java. Med JDBC (Java Database Connec/vity)

Introduksjon til fagfeltet

Satsvise, interaktive, sanntids/innbakte systemer. Arne Maus, Ifi. Oppdeling av både program og data på flere maskiner

MySQL. Historikk. Nedlasting og installasjon

Flytte Lønn 5.0 fra SQL 2000 til SQL 2005 / 2008

Java Database Connectivity (JDBC) Norvald H. Ryeng

PERSONVERN, GDPR OG COREPUBLISH

Sikkerhet i Pindena Påmeldingssystem

EKSAMEN 6102 / 6102N DATABASER

Kapittel 11. Databasesikkerhet

Metaspråket for å beskrive grammatikk

Repetisjon: Normalformer og SQL

VMware Horizon View Client. Brukerveiledning for nedlasting, installasjon og pålogging for fjerntilgang

SPSS Høgskolen i Innlandet

Sikkerhet i Pindena Påmeldingssystem

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Utvikling fra kjernen og ut

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Forelesning 3 DAS - Systemtabeller, indekser, distribuerte systemer m.m. - Tom Heine Nätt/Edgar Bostrøm

Fra krav til objektdesign

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Flytte System 4 fra SQL 2000 til SQL 2005 / 2008

10. ASP og SQL Innledning Recordset-objektet. Innhold. Referanse til læreboka Kapittel Se detaljer nedenfor.

Scan Secure GTS PAS

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign

INF329,HØST

Installasjon av Cantor Controller MSSQL. Installasjon av Enbruker. Veiledningen har tre kapittel

Brukerveiledning for Intelligent Converters MySQL Migration Toolkit IKA Trøndelag IKS 2012

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Utvikling fra kjernen og ut

SQL Server guide til e-lector

Opus Dental 7.1 Oppdateringsveiledning

Eksamen i Internetteknologi Fagkode: ITE1526

Eksamen i IBE102 Webutvikling Våren 2017.

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

6105 Windows Server og datanett

Utvikling fra kjernen og ut

2011 Cisco and/or its affiliates. All rights reserved. Cisco Public 1

Sikkerhet i Pindena Påmeldingssystem

PowerOffice Server Service

Her kan du lese om forskjellige tilgangsområder, passord, utlogging og tilslutt en gjennomgang av hvordan man håndterer skrivere.

Oppgave 1 (Opprett en database og en tabell)

Kjøre Wordpress på OSX

6105 Windows Server og datanett

IN2090 Databaser og datamodellering 07 Datamanipulering

6105 Windows Server og datanett

GENERELL BRUKERVEILEDNING WEBLINE

Public. Sikker sone. - har konseptet en framtid? Peter Engelschiøn, Knut-Erik Gudim og Simen Myrum

Effektiv Systemadministrasjon

Din verktøykasse for anbud og prosjekt

Integritetsregler i SQL. Primærnøkler

Hvordan koble seg opp mot prosjekt i SAFE fra Mac OS X?

Transaksjonshåndtering. Skalerbarhet.

Om verktøyet. Installering av MySQL Migration Toolkit. Installer toolkitet. Brukerveiledning til Intelligent Converters MySQL Migration Toolkit

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

Innhold RDP... 2 Oppkobling Kirkedata... 2 Flere brukerpålogginger til Kirkedata... 8

EKSAMEN DATABASER

Huldt & Lillevik Ansattportal Ansattportal. Versjon

6105 Windows Server og datanett

Flytte Lønn 5 Databaser til ny SQL 2012 instanse

Phone Assistant. Arne-Jørgen Auberg

Feilsøking i BO. Olav Syse, konsulent. Jan Terje Hansen, service manager. Be business intelligent

6105 Windows Server og datanett

Pen- tes'ng av webservices. Asbjørn Reglund Thorsen Gruppe- og utviklingsleder UIO/FSAT

Brukerveiledning. Pålogging og bruk av Bra DESKTOP. Braathe Gruppen AS

Konfigurasjon av nettverksløsning for Eldata 8.0 basert på PostgreSQL databasesystem.

Jens Erik Torgersen, Kantega AS. Sjefskonsulent

Integritetsregler i SQL

Innhold RDP... 2 Oppkobling Kirkedata... 2 Flere brukerpålogginger til Kirkedata... 6

Veileder for bruk av tynne klienter

Intentor Helpdesk - Installasjon Step #3: Microsoft Reporting Services

PostGIS som navet i dataforvaltningen ved Skog og landskap

Forelesning 1 DAS - Introduksjon / Systemer / Brukeradmin - (Tom Heine Nätt /) Edgar Boström / Lars V. Magnusson

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

Utrulling av sertifikater til IOS

Kom i gang med emedia

Viktig informasjon til nye brukere av Mac-klient fra UiB

Videregående programmering 6

Lab 1: Installasjon av Virtualiseringsløsning (VMWare Server ESXi 6.5) med en Virtuell Linux maskin (Cent OS 7 64-bit)

Huldt & Lillevik Ansattportal. - en tilleggsmodul til Huldt & Lillevik Lønn. Teknisk beskrivelse

Transkript:

Sikkerhet og tilgangskontroll i RDBMS-er IN2090 14. nov 2018 Mathias Stang 1

Agenda Modeller for tilgangskontroll Brukere og roller i RDBMS-er GRANT og REVOKE SQL Injections 2

Hovedmål med databasesikkerhet Konfidensialitet Uvedkommende må ikke kunne se data de ikke skal ha tilgang til. Integritet Data må være korrekte og pålitelige. Derfor må data beskyttes mot endringer fra uautoriserte brukere. Tilgjengelighet Brukere må kunne se eller modifisere data de har fått tilgang til

Sikkerhet: ikke bare i databasesystemet Databasesystemer eksisterer ikke isolert Sikkerhetshull kan finnes i alle ledd, f.eks., nettverket, applikasjoner osv. Vi skal fokusere på tilgangskontroll i vanlige DBMS

Tilgangskontroll for desktop-systemer Hvordan sikrer min Windows/Linux/mac-maskin at jeg ikke leser andre brukeres filer på samme maskin? 5

Autentisering for desktop-systemer Må logge seg inn først, med brukernavn og passord Tilgang til innhold avhengig av brukeren som er logget inn Filer osv. har ulike tilgangsrettigheter for ulike brukere kontrollerer at applikasjoner bare får tilgang til de riktige filene Applikasjon Filer + Rettigheter 6

Nettverk Informasjonssystem med sentral RDBMS RDBMS Server Filer 7

Tilgangskontroll med RDBMS -brukere på klienten ikke det samme som brukere for DB Min laptop ser at jeg er logget inn som bruker «mathias» Kan hvilken som helst database nå vite at jeg er Mathias J. Stang, som bor i Oslo, Norge? To måter å styre brukertilgang på: I klient- (eller backend-)applikasjonen I databasesystemet 8

Nettverk Tilgangskontroll i klientapplikasjonen Klienten autentiserer brukere Klienten sjekker hva brukeren får lov til å hente ut, legge inn, endre, slette DB-systemet stoler på at klienten gjør dette riktig. Trenger sikring slik at bare klientapplikasjonen kan få tilgang til DB RDBMS Server Filer 9

Nettverk Tilgangskontroll i backend Klient-app håndterer autentisering i samspill med backend Backend sjekker hva brukere får lov til legge inn, endre, slette DB systemet stoler på at backend gjør dette riktig. Backend og RDBMS er typisk bak samme brannmur. Backend Appl. RDBMS Server Filer 10

Nettverk Tilgangskontroll i RDBMS Klienten delegerer brukerautentisering til RDBMS RDBMS har endelig ansvar for hvilke brukere har hvilke rettigheter Klienten kan «forhåndssjekke» RDBMS Server Filer 11

Tilgangskontroll i SQL databaser Brukere (Users) Roller (Roles) Rettigheter (Permissions) For eksempel: Bruker mathias har rollen kundeadmin Bruker martin har rollen superbruker Brukere med rollen brukeradmin kan legge til og slette kunder Brukere med rollen brukeradmin kan ikke slette hele kundetabellen Brukere med rollen superbruker kan slette hele kundetabellen 12

Brukere All interaksjon med databasesystemet er via en «bruker» (user) psql -h dbpg-ifi-kurs -U mjstang -d fdb Autentisering: sjekke at brukeren er den den påstår å være. Typisk med passord, SSH public keys, osv. Gyldige brukerkontoer og (krypterte) passord lagres av RDBMS. Databaser, skjemaer, tabeller, views, etc. «eies» av en bruker Ingen umiddelbar kobling til rettigheter! Transaksjoner i databasen kan spores til brukeren som ba om dem SQL-kommando CREATE USER bare for «superbrukere» på tjeneren 13

Roller Mulig å si at «bruker mjstang kan legge til og slette kunder» Men Vanskelig å holde oversikt over hvem som har hvilke rettigheter Vanskelig å legge til en ny bruker? Har vi glemt noen rettigheter? Vanskelig å endre «policy» kundeadmin skal ikke kunne endre rabatt til en kunde, bare selgere kan det Role-based Access Control: Gi rettigheter basert på roller brukere har Lett å gi eller fjerne roller for en bruker Lett å gi eller fjerne rettigheter for alle som innehar en rolle 14

Roller i SQL Lag en ny rolle «brukeradmin»: CREATE ROLE brukeradmin; Gi rollen «brukeradmin» til brukeren «mjstang» GRANT brukeradmin TO mjstang; Fjern rollen «brukeradmin» fra brukeren «mjstang» REVOKE brukeradmin FROM mjstang; 15

Grunnleggende om RDBMS-tilgangskontroll Generell (forenklet) syntaks: GRANT {tillatelse} ON {objekt} TO {bruker_eller_rolle} REVOKE {tillatelse} ON {objekt} FROM {bruker_eller_rolle} Tillatelser kan være en (eller flere, kommaseparert) av f.eks.: SELECT, INSERT, UPDATE, DELETE, CREATE, CONNECT, ALL Objekt kan f.eks. være tabellnavn, eller «DATABASE» (f.eks. for CREATE eller CONNECT) Tillatelser kan gis til brukere eller roller eller til PUBLIC (alle) 16

Eksempler på GRANT GRANT SELECT ON tliste TO kundeadmin; GRANT INSERT, DELETE, UPDATE ON tliste TO mjstang; Vi kan også sette tillatelser på enkeltattributter: GRANT UPDATE (beskrivelse) ON tlistelinje TO mjstang; 17

GRANT OPTION Hvis vi vil gi brukere tillatelse til å gi andre brukere tillatelser, legger vi til WITH GRANT OPTION på slutten: GRANT SELECT ON tliste TO mjstang WITH GRANT OPTION Linjen ovenfor gir brukeren mjstang SELECT-tillatelse på tabellen tliste, samt tillatelsen til å gi andre brukere eller roller SELECT-tillatelse 18

Views og tilgangskontroll I stedet for å gi tilganger til tabeller, kan man lage views som et «vindu» til tabellene, og gi tilganger til views i stedet Det er faktisk også mulig med «updatable views», men dette faller utenfor pensum Det finnes også flere mekanismer som lar oss styre hva brukere og roller har tillatelse til å gjøre på radnivå men det faller også utenfor pensum. 19

Nettverk SQL Injection Backend app. RDBMS Server Filer 20

SQL Injection Et type angrep mot en klientapplikasjon/backend der en (ondsinnet) bruker sender egen SQL-kode som så kjøres Da kan man f.eks. kjøre SELECT på andre ting enn utvikleren hadde tenkt, eller gjøre vilkårlige endringer i databasen Utnytter følgende faktorer: At vi har et program som kjører SQL-spørringer (f.eks. Java eller Python) Programmet tar input fra brukeren SQL ikke har et skille mellom data og SQL-kommandoer Der programmet skulle ha satt inn brukerdata i en spørring, blir det i stedet satt inn en SQL-kommando fra brukeren 21

SQL Injection: Grunnleggende prinsipp En nettbutikk lar deg søke etter produkter slik: String produktnavn = brukerinput(); String sql = "SELECT * FROM prod WHERE navn = '"+produktnavn+"'"; Med input «hei» får vi følgende spørring: SELECT * FROM prod WHERE navn = 'hei'; Men med input «O'boy» får vi syntaksfeil: SELECT * FROM prod WHERE navn = 'O'boy'; Hva med input «Hei'; DROP TABLE prod;--»? SELECT * FROM prod WHERE navn = 'Hei'; DROP TABLE prod;--'; 22

SQL injection En liten demo klarer vi å hacke denne tjenesten? 23

SQL Injection hvorfor er dette viktig? Et av de vanligste formene for hackerangrep lar ondsinnede brukere hente informasjon de ikke skulle hatt tilgang til, eller endre (eller ødelegge) data etter eget ønske Skyldes vanligvis at brukerdata ukritisk konkateneres inn i en spørring Løses veldig enkelt med å bruke parametriserte spørringer 24

https://xkcd.com/327/ Skjønte du den ikke? https://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-work 25

PS: Husk repetisjonsforelesning på mandag! 26