9. listopadu, 2011 Hotel Marriott Praha
Zabezpečení dat v Oracle Database Aleš Novák Technology Sales Consultant 1
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
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.
2
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Agenda • • • • •
3
Zabezpečení databáze Základní principy Audit SQL Injection Závěr
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Komplexní bezpečnost
4
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
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
5
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
5
Zabezpečení OS • Solaris nebo SE Linux • Hardened systems, omezení root přístupů
6
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Základní mechanismy • • • • •
7
Lidé Ztráta, dostupnost dat – backup / recovery, HA Krádež dat – SQL Injection, disky, pásky Správa konfigurací, záplat Audit
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
DBA, SYSDBA • Princip „Least Privilege“ • Omezte počet správců • Prevence – IdM, Analytics • Detekce – Audit (DB a OS)
8
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Oracle Database hloubková obrana Šifrování a maskování • Advanced Security • Secure Backup • Data Masking
Správa přístupů • Database Vault • Label Security
Monitorování Šifrování a maskování Správa přístupů Monitorování Správa uživatelů a rolí 9
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
• Database Firewall • Configuration Management • Audit Vault • Total Recall
Audit
10
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
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ě 11
2. Střední vrstva se připojuje (anonymně) k účtu aplikace
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
3. Databáze nezná skutečného uživatele – nemůže řídit přístup, auditovat,...
11
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ě 12
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
2. Střední vrstva předává informace o uživateli
3. Databáze řídí přístup, provádí audit, ...
12
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(); 13
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
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(); 14
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
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
15
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
SQL Inject a Audit
16
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
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) 17
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
SQL Injection – základní příklad • User interface
• Aplikace
A' AND 2=1 UNION select ...
sql="SELECT email FROM employees WHERE last_name='" + vstup + "'"; stmt.execute(sql);
SELECT email FROM employees • Dotaz v databázi WHERE last_name='A' AND 2=1 UNION select to_char(salary) as email from …
18
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
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 19
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
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); • Výhody: • Bezpečnost, výkon – nemění se text SQL – použije se nacachovaný exekuční plán 20
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Oracle Database Firewall První linie obrany Povolit Zaznamenat Upozornit Nahradit Zablokovat
Applications
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í 21
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Pozitivní Security Model SELECT * from stock where catalog-no='PHE8131'
White List Allow
Applications
Block
SELECT * from stock where catalog-no=‘ ' union select cardNo,0,0 from Orders --’
• „Povoleno“ lze definovat pro uživatele či aplikaci • Multifaktorové politiky (IP adresa / síť, aplikace, čas) • „Out-of-policy“ databázová komunikace je okamžitě blokována
22
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Rozumí SQL • SQL je jazyk s cca 400 klíčovými slovy a danou strukturou UPDATE tbl_users SET comments = ‘The user has asked for another account_no, and wishes to be billed for services between 1/2/2009 and 2/2/2009, and wants to know where the invoice should be sent to. She will select the new service level agreement to run from 3/7/2009 next month’ WHERE id = ‘A15431029’;
KEY WORDS
SCHEMA
DATA
• Gramatický kontext je nezbytný pro správnou kategorizaci
23
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
OPERATORS
Pokud někdo nerozumí SQL • union je špatný pokud je blízko s e l e c t u(?:nion\b.{1,100}?\bselect "(?:\b(?:(?:s(?:elect\b(?:.{1,100}?\b(?:(?:length|count|top)\b.{1,100}?\bfrom|from\b.{1,100}?\bwhere) |.*?\b(?:d(?:ump\b.*\bfrom|ata_type)|(?:to_(?:numbe|cha)|inst)r))|p_(?:(?:addextendedpro|sqlexe)c|(?: oacreat|prepar)e|execute(?:sql)?|makewebtask)|ql_(?:longvarchar|variant))|xp_(?:reg(?:re(?:movemultis tring|ad)|delete(?:value|key)|enum(?:value|key)s|addmultistring|write)|e(?:xecresultset|numdsn)|(?:te rminat|dirtre)e|availablemedia|loginconfig|cmdshell|filelist|makecab|ntsec)|u(?:nion\b.{1,100}?\bsele ct|tl_(?:file|http))|group\b.*\bby\b.{1,100}?\bhaving|d(?:elete\b\W*?\bfrom|bms_java)|load\b\W*?\bdat a\b.*\binfile|(?:n?varcha|tbcreato)r)\b|i(?:n(?:to\b\W*?\b(?:dump|out)file|sert\b\W*?\binto|ner\b\W*? \bjoin)\b|(?:f(?:\b\W*?\(\W*?\bbenchmark|null\b)|snull\b)\W*?\()|a(?:nd\b ?(?:\d{1,10}|[\'\"][^=]{1,10}[\'\"]) ?[=<>]+|utonomous_transaction\b)|o(?:r\b ?(?:\d{1,10}|[\'\"][^=]{1,10}[\'\"]) ?[=<>]+|pen(?:rowset|query)\b)|having\b ?(?:\d{1,10}|[\'\"][^=]{1,10}[\'\"]) ?[=<>]+|print\b\W*?\@\@|cast\b\W*?\()|(?:;\W*?\b(?:shutdown|drop)|\@\@version)\b|'(?:s(?:qloledb|a)|m sdasql|dbo)')“ [Source: ModSecurity, Web Application Firewall]
• Je to bezpečné? Dá se to pochopit? 24
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Vynucení politik Log Allow Alert Applications
Substitute Block
• Perfektní výkon a škálovatelnost • Vysoce přesný bez problematických false positives • Flexibilní vynucení na úrovni SQL: blokuj, nahraď, alert, pouze loguj
25
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
5 kroků k nasazení Best practices 1. Trénink na živých datech (Log All/Log Unique) 2. Revize, vyčištění politik 3. Nasazení do produkce s výstrahami / alerty při aktivitách nevyhovujícím pravidlům 4. Doladění pravidel při detekci incidentu 5. Vynucení blokování
26
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Příklad od zákazníka: porušení pravidel • Database Firewall nastaven na „log all“ SQL • ‘Alert’ při out-of-policy komunikaci / statements • Kontrola odhalila: SELECT * FROM customers (nový člen support týmu)
27
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Roadmapa • MySQL 5.0, 5.1, 5.5 • MS SQL Server 2008 R2 • Podpora pro Oracle Advanced Security
• Integrace s Oracle Enterprise Manager Database Control • Reporty založené na Oracle BI Publisher
28
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Kde začít? • Programy pro zákazníky a partnery • Insight, Discovery Workshop – Roadmap to Security
29
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Závěr • Oracle dokáže pomoci se zabezpečením systémů – Metodika, postupy, produkty – Operační systémy, databáze, middleware, aplikace
• Špičkové zabezpečení pro databáze – Zamezení SQL Injection – Audit s minimálním (µs) dopadem na výkon
30
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Q&A
31
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.