Zabezpečení dat v Oracle Database
Transkript
Zabezpečení dat v Oracle Database
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.