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.