Bezpečnosť v databáze Oracle



Podobné dokumenty
Zabezpečení dat v Oracle Database

Konsolidace na privátní cloud

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into

Analýza nestrukturovaných dat pomocí Oracle Endeca Information Discovery

<Insert Picture Here> Jak garantovat bezpečnost systémů ve státní správě

Komplexní přístup k bezpečnosti

Administrace Oracle Práva a role, audit. Kukhar Maria

Administrace Oracle. Práva a role, audit

Potřebujete mít vaše IS ve shodě s legislativou? Bc. Stanislava Birnerová

Administrace Oracle. Jan Šaršon. Audit databáze

Jak efektivně ochránit Informix?

<Insert Picture Here> Oracle Exadata Database Machine koncept úspěšně ověřen pokračujeme

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Od Czech POINTu k vnitřní integraci

Víte, kdo pracuje s vašimi dokumenty? Stanislava Birnerová

a konverze na úřadech Martin Řehořek

aktuality, novinky Ing. Martin Řehořek

Komplexní přístup k bezpečnosti

Oracle Database Security

Zranitelnost databáze a ochrana vašich citlivých dat. Michal Lukanič, Database Specialist

4. lekce Přístup k databázi z vyššího programovacího jazyka

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Správa identit a bezpečnosti - cesta k bezpečnému IS. Stanislava Birnerová Direct Account Manager Novell-Praha, s.r.o.

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Databáze II. 1. přednáška. Helena Palovská

2. blok Zabezpečení a ochrana dat

Využití identity managementu v prostředí veřejné správy

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Virtual private database. Antonín Steinhauser

Databázové a informační systémy

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Virtualizace pomocí Novell Open Enterprise Server 2

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Analýza zranitelností databází. Michal Lukanič, Database Specialist

Monitorování a audit databází v reálném čase. Ing. Jan Musil IBM Česká republika

Oracle XML DB. Tomáš Nykodým

Použití databází na Webu

Virtual Private Database (VPD) Jaroslav Kotrč

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Nastavení DCOM. Uživatelský manuál

DUM 15 téma: Příkazy pro řízení přístupu

IBM InfoSphere Guardium - ochrana databází

Struktura pamětí a procesů v DB Oracle. Radek Strnad

NÁVOD K INSTALACI SOLUTIONS

Řešení ochrany databázových dat

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

ISMS. Autentizace ve WiFi sítích. V Brně dne 5. a 12. prosince 2013

Text úlohy. Systémový katalog (DICTIONARY):

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

SQL - trigger, Databázové modelování

Databázové systémy. Cvičení 6: SQL

Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13

Modelování hrozeb. Hana Vystavělová AEC, spol. s r.o.

Databáze I. Přednáška 4

Návod k instalaci S O L U T I O N S

Bezpečnostní aspekty informačních a komunikačních systémů KS2

Efektivní provoz koncových stanic

Komentáře CISO týkající se ochrany dat

Michal Krátký, Miroslav Beneš

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

IBM Cloud computing. Petr Leština Client IT Architect. Jak postavit enterprise cloud na klíč IBM Corporation

M Administrace Microsoft SQL Server Popis: Absolvent kurzu bude umět: Požadavky pro absolvování kurzu: Kurz určen pro: Literatura:

Databázové systémy Cvičení 5.3

Příloha č. 12. Systém společného přihlašování, tzv. Single Sign On, ochrana dat

KIV/ZIS cvičení 6. Tomáš Potužák

Zápisování dat do databáze

Silná autentizace a detekce fraudu (nejen) ve finančním sektoru jak to udělat správně

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Instalace a konfigurace

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Moderní správa databáze. David Krch Technology Sales Consultant

Ochrana mobilních uživatelů před hrozbami Internetu mimo firemní prostředí. Simac Technik ČR, a.s.

Monitoring SQL Server, Resource Governor, Tracing SQL Server

Komunikace mezi doménami s různou bezpečnostní klasifikací

Databáze. datum jmeno prijmeni adresa_ulice adresa_mesto cislo_uctu platba zustatek

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Verzování a publikace dat na webu za pomoci PostgreSQL

Stav podnikové bezpečnosti, Globální zpráva Jakub Jiříček, Symantec ČR a SR

8.2 Používání a tvorba databází

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Není cloud jako cloud, rozhodujte se podle bezpečnosti

Novell Identity Management. Jaromír Látal Datron, a.s.

Jan Váša TGB Sales Representative, Oracle Czech 10. června 2011 MRI Kladno

Úvod do databázových systémů

Důvěřujte JEN PROVĚŘENÝM Personal Identity Verification

Řízení privilegovaný účtů

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

DATABÁZE MS ACCESS 2010

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Zabezpečení proti SQL injection

Transkript:

<Insert Picture Here> Bratislava Bezpečnosť v databáze Oracle Aleš Novák Technology Sales Consultant

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.

Agenda Oracle a bezpečnost SQL Injection Audit

Komplexní bezpečnost Identity Management User Provisioning & správa rolí Identity and Access Governance Správa přístupů Adresářové služby Databázová bezpečnost Šifrování a maskování Kontrola privilegovaných uživatelů Více faktorová autentizace Audit, monitorování aktivit Zabezpečení konfigurací Bezpečná infrastruktura CPU, ASICs Operační systémy Virtualizace a hypervisory Ukládání dat, sítě

Oracle Database hloubková obrana Šifrování a maskování Advanced Security Secure Backup Data Masking Správa přístupů Database Vault Label Security Šifrování a maskování Správa přístupů Monitorování Správa uživatelů a rolí Monitorování Database Firewall Configuration Management Audit Vault Total Recall 5

Bezpečnost databázových aplikací Zabránit neautorizovanému přístup Znát identitu koncového uživatele Zajistit prokazatelnost operací...v prostředí vícevrstvých aplikací Střední vrstva Oracle DB

SQL Injection Útok na aplikaci kdy uživatelem vložená data jsou databází interpretována jako SQL příkaz či jeho část. Útočník může spuštěním neočekávaného dotazu získat neoprávněný přístup k datům nebo je pozměnit. Konkrétní techniky se různí, základní problém zůstává: Externí vstup (od uživatelů) je bez korektní validace zapojen do textu SQL příkazu a databází proveden Dynamické dotazy (SQL jako text) Libovolné vývojové prostředí i databáze

SQL Injection základní příklad User interface A' AND 2=1 UNION select... Aplikace sql="select email FROM employees WHERE last_name='" + vstup + "'"; stmt.execute(sql); Dotaz v databázi SELECT first_name,last_name,salary email FROM employees! WHERE last_name= XXXX last_name='a' last_name= Krch AND or and 2=1=1 dept=7 UNION - select and dept=7 to_char(salary) as email from

Obrana před SQL Injection Nespojovat vstup uživatelů do textu SQL Používat vázané proměnné Používat statické SQL v PL/SQL Kontrola a filtrování vstupů (je-li nutné sestavovat SQL dynamicky) Preventivní omezení dopadu případného útoku Minimalizovat přidělená práva pro spojení Mechanismy detailního řízení přístupu v databázi

Vázané proměnné Místo: sql = "select * from dba_users " + "where user_name='" + jmeno + "'"; stmt.execute(sql); Raději použijte: sql = "select * from dba_users " + "where user_name=?"; safestmt=conn.preparestatement(sql); safestmt.setstring(1,jmeno); safestmt.execute(); Výhody: Bezpečnost nehrozí SQL Injection Výkon nemění se text SQL použije se nacachovaný exekuční plán 10

Použití vázaných proměnných Příklad QBE - uživatel hledá záznamy podle hodnot, které zadal do 1-3 políček v aplikaci: FIRST_NAME nevyplnil LAST_NAME Krch CITY Praha Řešení 1 Dynamicky sestavit a spustit celý dotaz: SELECT * FROM employees WHERE last_name = 'Krch' and city = 'Praha' Řešení 2 Dynamicky sestavit dotaz s vázanými proměnnými: SELECT * FROM employees WHERE last_name = :1 and city = :2 Spustím dotaz a nastavím hodnoty vázaných proměnných: :1 = Krch :2 = Praha Nehrozí SQL Injection

Když nelze použít vázané proměnné... Kontrola a ošetření vstupů Omezení vstupu na povolené hodnoty Existující objekt, validní SQL jméno Kontrola uvozovek/apostrofů Pozor na Oracle identifikátory: Objekt x Objekt delete from scott.emp; může být validní název tabulky V data dictionary uvozovky nejsou Podle způsobu použití a způsobu ověření je třeba rozhodnout Konvertovat písmena na velká? Doplnit/zrušit uvozovky? Zrušit úvodní/závěrečné mezery?

DBMS_ASSERT První pomoc při kontrole vstupních dat Vrací původní/upravený text nebo Exception ENQUOTE_LITERAL - Obsahuje parametr literál? Zkontroluje, že jsou zdvojené vnitřní apostrofy, ev. Doplní apostrof na začátek a konec. abc =>'abc' 'abc'=>'abc' ab''c=>'ab''c' ab'c => Exception ENQUOTE_NAME Obsahuje parametr validní uvozovky? Zkontroluje, že jsou zdvojené vnitřní uvozovky, ev. doplní uvozovky na začátek a konec. abc =>"abc" "abc"=>"abc" ab""c=> "ab""c" ab"c => Exception SCHEMA_NAME sql_stmt := Jde 'UPDATE o existující employees schéma? SET salary = salary + :1 WHERE ' DBMS_ASSERT.ENQUOTE_NAME(v_column,FALSE) ' = :2'; SIMPLE_SQL_NAME, QUALIFIED_SQL_NAME Splňuje syntaxi jména objektu? SQL_OBJECT_NAME Jde o existující objekt?

Oracle Database Firewall První linie obrany Povolit Zaznamenat Upozornit Applications Nahradit Zablokovat Upozornění Hotové výkazy Výkazy na míru Politiky Monitoruje aktivitu uživatelů Zabraňuje neautorizovanému přístupu, SQL injections, eskalaci práv či rolí Rychlá obrana před novými typy útoků Flexibilní úroveň vynucování pravidel v SQL na základě whitelistů a blacklistů Škálovatelná architektura zajišťuje výsoký výkon ve všech režimech nasazení Zabudované i vlastní výkazy pro SOX, PCI a další

Prevence Nevěřte databázovému klientu! Kontrolní body na všech vrstvách Minimalizujte práva aktivního spojení Použijte jiné schéma pro objekty a jiné pro přístup Nepřidělujte zbytečně silná práva a role Řiďte aktivaci rolí pro spojení Secure Application Role Řiďte detailně přístup k datům přímo v databázi Střední vrstva Oracle DB 15

Zná vaše databáze koncového uživatele? <Insert Picture Here>

17 Identifikace ve třívrstvých aplikacích Connection Pool Účet aplikace A Účet aplikace A Účet aplikace A 1. Uživatelé se přihlašují ke střední vrstvě 2. Střední vrstva se připojuje (anonymně) k účtu aplikace 3. Databáze nezná skutečného uživatele nemůže řídit přístup, auditovat,...

18 Udržení identity Client Identification, Proxy Authentication Podporované při připojení přes: OCI JDBC ODP.NET Connection Pool Modrý uživatel Červený uživatel Žlutý uživatel 1. Uživatelé se přihlašují ke střední vrstvě 2. Střední vrstva předává informace o uživateli 3. Databáze řídí přístup, provádí audit,...

Snadné použití... Client Identifier Connection conn=ds.getconnection(); String[] metrics = new String[ OracleConnection.END_TO_END_STATE_INDEX_MAX]; metrics[oracleconnection.end_to_end_clientid_index] = endusername; ((OracleConnection) conn).setendtoendmetrics(metrics,(short)0);... Běžná práce se spojením metrics[oracleconnection.end_to_end_clientid_index] = null; ((OracleConnection) conn).setendtoendmetrics(metrics,(short)0); conn.close();

Snadné použití... Proxy Authentication Connection conn=ds.getconnection(); java.util.properties prop = new java.util.properties(); prop.put(oracleconnection.proxy_user_name, endusername); (OracleConnection)conn).openProxySession( OracleConnection.PROXYTYPE_USER_NAME, prop);... Běžná práce se spojením ((OracleConnection)conn).close( OracleConnection.PROXY_SESSION); conn.close();

Přínosy Prokazatelnost auditní log obsahuje jméno koncového uživatele Řízení přístupu Virtual Private Database Proxy Authentication navíc i běžné role a práva Diagnostika v$session obsahuje jméno koncového uživatele Trasování dle client_identifier... DBMS_MONITOR

Rozdíly Proxy Authentication a Client Identifier Základní funkce Client Identifier Vlastnost spojení, kterou aplikace nastavuje Proxy Authentication Aplikace vytváří novou session v rámci stávajícího procesu Seznam uživatelů Řeší aplikace DB uživatelé (nebo Enterprise Users) Ověření koncového uživatele Architektura Musí řešit aplikace Bližší běžnému sdílenému účtu Stávající uživatel DB, ev. ověření heslem Bližší Client/Server USER Technický uživatel Koncový uživatel Základní práva a role na koncového uživatele VPD, DB Vault dle koncového uživatele Ne Ano Ano Ano DBA_AUDIT_TRAIL Ano (client_id) Ano V$SESSION Ano - client_identifier Ano - username

Databázový audit SQL> ALTER SYSTEM SET audit_trail=db,extended SCOPE=SPFILE;...restart... SQL> SHOW PARAMETER AUDIT NAME TYPE VALUE ------------------------------------ ----------- ----------------------- audit_file_dest string /usr/lib/oracle/xe/app/oracle/ admin/xe/adump audit_sys_operations boolean FALSE audit_syslog_level string audit_trail string DB, EXTENDED SQL> audit select on HR.EMPLOYEES by access;... SQL> select username, client_id, sql_text from dba_audit_trail; USERNAME CLIENT_ID SQL_TEXT ------------------------- ---------------------- -------------------- HR anovak select * from employees

Závěr Bezpečnost musí být integritní součástí návrhu a vývoje aplikace SQL Injection Vyhněte se mu pomocí statických dotazů a vázaných proměnných Vstup uživatelů vkládaný do textu SQL je třeba kontrolovat Útok nemusí být přímý Zná-li databáze vaše koncové uživatele, může Zajistit audit operací Řídit přístup