Download presentation
Presentation is loading. Please wait.
Published byAlfredo Galley Modified over 9 years ago
1
A First look at Database Vault David Bergmeier
2
Overview Installation Limitations Securing Data Backups A trigger problem Agenda
3
Senior Oracle DBA Worked for MGA nearly 2 years Background as an Analyst/Programmer 12 years in financial services industry Started using Oracle in 1996 About me
4
Why Oracle Database Vault? Don’t trust the DBA Regulatory Compliance (e.g. Sarbanes Oxley) Separation of duties Overview
5
connect / as sysdba create user david... grant dba to david; select * from scott.emp;
6
Separation of duties connect / as sysdba create user david... grant dba to david; select * from scott.emp;
7
Separation of duties
10
Overview Installation Limitations Securing Data Backups A trigger problem Agenda
11
Oracle 10.2.0.3 1024 MB of Physical RAM Swap space (1.5 times RAM) 400 MB in /tmp 270 MB for database vault binaries 10 MB additional for database files Prerequisites
12
Installation Assumes one instance per Oracle home But can support more Prerequisites
13
Installation
14
Installation User to receive DV_OWNER role
15
Installation Passwords must have alpha, numeric & special
16
Installation User to receive DV_ACCTMGR role
17
Installation
18
Installation
19
Installation
20
Installation
21
Installation
22
Installation
23
Installation
24
Overview Installation Limitations Securing Data Backups A trigger problem Agenda
25
Let’s start the database The First Problem
28
I cannot login as SYDBA So how do I start/stop Oracle? The First Problem
29
connect / as SYSOPER The First Problem
31
Overview Installation Limitations Securing Data Backups A trigger problem Agenda
32
$ lsnrctl start $ emctl start dbconsole Securing Some Data
33
$ sqlplus system/manager SQL> select * from scott.emp;... 14 rows selected. SQL> Securing Some Data
38
A realm is a functional grouping of schemas and roles that are secured. What is a Realm?
39
RealmSecured ObjectsAuthorizations One Many
40
Securing Some Data
47
SQL> select * from scott.emp; select * from scott.emp * ERROR at line 1: ORA-01031: Insufficient Privileges SQL> Securing Some Data
48
SQL> select * from scott.dept; DEPTNO DNAME LOC ---------- -------------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> Securing Some Data
49
That’s the end of the tutorial. So now let’s consider a real world application. Securing Some Data
50
Real world Example EMP application userSCOTT Application server connects to database as single user
51
Real world Example EMP application usersupport usersSCOTT Support users connect with individual accounts with read-only access
52
Real world Example EMP grant select insert update delete scott_app_userscott_ro_rolescott_ro grant select grant role SCOTT
53
SQL> connect system/manager SQL> create user scott_app_user 2> identified by tiger 3> default tablespace USERS; identified by tiger * ERROR at line 2: ORA-01031: Insufficient Privileges Create User
54
SQL> connect dbu/manager SQL> create user scott_app_user 2> identified by tiger 3> default tablespace USERS; User created. SQL> grant connect to scott_app_user; Create User
55
SQL> connect dbu/manager SQL> create user scott_ro 2> identified by tiger 3> default tablespace USERS; User created. SQL> grant connect to scott_ro; Create User
56
SQL> connect system/manager SQL> create role scott_ro_role; Role created. SQL> grant scott_ro_role to scott_ro; Grant succeeded. SQL> Create Role
57
SQL> connect scott/tiger SQL> grant select,insert,update, delete on emp to scott_app_user; Grant succeeded. SQL> grant select on emp to scott_ro_role; Grant succeeded. SQL> Grants
58
Now to test it... Real world Example
59
SQL> connect scott_ro/tiger SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; delete from scott.emp * ERROR at line 1: ORA-01031: Insufficient Privileges Testing scott_ro
60
SQL> connect scott_ro/tiger SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; delete from scott.emp * ERROR at line 1: ORA-01031: Insufficient Privileges Testing scott_ro
61
SQL> connect scott_app_user/tiger SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; 14 rows deleted. SQL> rollback; Testing scott_app_user
62
SQL> connect scott_app_user/tiger SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; 14 rows deleted. SQL> rollback; Testing scott_app_user
63
SQL> connect system/manager SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; delete from scott.emp * ERROR at line 1: ORA-01031: Insufficient Privileges Testing system
64
SQL> connect system/manager SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; delete from scott.emp * ERROR at line 1: ORA-01031: Insufficient Privileges Testing system
65
SQL> connect system/manager SQL> select * from session_roles; ROLE --------------------------- DV_PUBLIC DBA... SCOTT_RO_ROLE 14 rows selected. SQL> What went wrong?
66
How did SYSTEM get SCOTT_RO_ROLE? What went wrong?
67
SQL> connect system/manager SQL> create role foo; Role created. SQL> set role all; Role set. SQL> select * from session_roles; ROLE --------------------------- DV_PUBLIC... FOO What went wrong?
68
So now we have a problem! What went wrong? If we only revoke the role, SYSTEM can grant it again. How do we prevent this?
69
SQL> connect system/manager SQL> drop role scott_ro_role; Role dropped. SQL> select * from session_roles; ROLE --------------------------- DV_PUBLIC... MGMT_USER 13 rows selected. SQL> Remove the Role
70
DV_ACCTMGR has create/drop user alter user account lock/unlock alter user password expire grant/revoke CONNECT role Problem with DV_ACCTMGR
71
DV_ACCTMGR needs create role alter any role drop any role SELECT_CATALOG_ROLE To get these, we need to login as SYSDBA Problem with DV_ACCTMGR
72
$ cd $ORACLE_HOME/dbs $ orapwd file=orapwmozart password=mozart entries=20 force=y nosysdba=n $ sqlplus sys/mozart as sysdba SQL> startup SQL> alter user sys identified by mozart; Allow SYSDBA
73
SQL> connect sys/mozart as sysdba SQL> grant create role to DV_ACCTMGR; SQL> grant alter any role to DV_ACCTMGR; SQL> grant drop any role to DV_ACCTMGR; Grants to DV_ACCTMGR
74
SELECT_CATALOG_ROLE
75
SELECT_CATALOG_ROLE
76
Fixing DV_ACCTMGR
79
SQL> connect dbu/manager SQL> create role scott_ro_role; Role created. SQL> Create Role as DV_ACCTMGR At this stage we delay granting scott_ro_role
80
Securing SCOTT_RO_ROLE
82
SQL> connect dbu/manager SQL> grant scott_ro_role to scott_ro; grant scott_ro_role to scott_ro * ERROR at line 1: ORA-47401: Realm violation for grant role privilege on SCOTT_RO_ROLE Granting SCOTT_RO_ROLE
83
So who can/should do the grant of SCOTT_RO_ROLE ? Granting SCOTT_RO_ROLE
84
So who can/should do the grant of SCOTT_RO_ROLE ? Answer: SCOTT Granting SCOTT_RO_ROLE
85
Answer: SCOTT Provided SCOTT can only grant SCOTT_RO_ROLE and not other roles like DBA. Granting SCOTT_RO_ROLE
86
One more grant as SYSDBA Granting SCOTT_RO_ROLE SQL> connect sys/mozart as sysdba SQL> grant grant any role to scott; Grant succeeded. SQL>
87
SQL> connect scott/tiger SQL> grant scott_ro_role to scott_ro; Grant succeeded. SQL> revoke scott_ro_role from dbu; Revoke succeeded. SQL> Granting SCOTT_RO_ROLE
88
SQL> connect scott/tiger SQL> grant DBA to scott; grant DBA to scott * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-47401: Realm violation for grant role privilege on UNLIMITED TABLESPACE. Granting SCOTT_RO_ROLE
89
WHY? Granting SCOTT_RO_ROLE
90
The DBA role is protected by the “Oracle Data Dictionary” Realm. Granting SCOTT_RO_ROLE
91
Now to test it... Again Granting SCOTT_RO_ROLE
92
SQL> connect scott_ro/tiger SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; delete from scott.emp * ERROR at line 1: ORA-01031: Insufficient Privileges Testing scott_ro again
93
SQL> connect scott_ro/tiger SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; delete from scott.emp * ERROR at line 1: ORA-01031: Insufficient Privileges Testing scott_ro again
94
SQL> connect scott_app_user/tiger SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; 14 rows deleted. SQL> rollback; Testing scott_app_user
95
SQL> connect scott_app_user/tiger SQL> select * from scott.emp; 14 rows selected. SQL> delete from scott.emp; 14 rows deleted. SQL> rollback; Testing scott_app_user
96
SQL> connect system/manager SQL> select * from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges SQL> delete from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges Testing system again
97
SQL> connect system/manager SQL> select * from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges SQL> delete from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges Testing system again
98
SQL> connect sys/mozart as sysdba SQL> select * from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges SQL> delete from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges Testing SYSDBA
99
SQL> connect sys/mozart as sysdba SQL> select * from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges SQL> delete from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges Testing SYSDBA
100
SQL> connect dbu/manager SQL> select * from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges SQL> delete from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges Testing DV_ACCTMGR
101
SQL> connect dbu/manager SQL> select * from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges SQL> delete from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges Testing DV_ACCTMGR
102
SQL> connect dbv/manager SQL> select * from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges SQL> delete from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges Testing DV_ADMIN
103
SQL> connect dbv/manager SQL> select * from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges SQL> delete from scott.emp; ERROR at line 1: ORA-01031: Insufficient Privileges Testing DV_ADMIN
104
Let’s review the actions performed by each of the different users/roles Separation of Duties
105
SYS as SYSDBA Grant role privileges to DV_ACCTMGR (one time) Grant “grant any role” to SCOTT (once per application) Separation of Duties
106
DV_ADMIN (user = dbv) Realm authorizations (once per application) Command Rules (one time) Separation of Duties
107
DV_ACCTMGR (user = dbu) Create user (ongoing) Grant connect (ongoing) Create role (once per app) Separation of Duties
108
Schema owner (SCOTT) Grant object privileges (once per application) Grant SCOTT_RO_ROLE (ongoing) Separation of Duties
109
DBA (user = system) Nothing Separation of Duties
110
Overview Installation Limitations Securing Data Backups A trigger problem Agenda
111
Impact of Backups Export Data Pump RMAN Backups
112
Export Lots of ORA-01031 Will be unable to Import Not viable Backups
113
Data Pump Not tested Backups
114
RMAN Requires SYSDBA access May need to hardcode SYS password or use wallet Works successfully Backups
115
Overview Installation Limitations Securing Data Backups A trigger problem Agenda
116
Error creating trigger Minor changes to whitespace in trigger source caused compile success/failure Known Bug: 5630439 ORA-47999: internal Database Vault error: create trigger Trigger Problem
117
Workaround available Login as dv_owner account alter trigger dvsys.DV_BEFORE_DDL_TRG disable Login as SCOTT and create trigger Login as dv_owner account alter trigger dvsys.DV_BEFORE_DDL_TRG enable Trigger Problem
118
You probably don’t need Database Vault It’s a trade off between more security with more bureaucracy It seems to work okay but there are some bugs Typical work arounds involve deactivating Database Vault Conclusion
119
The End Thank you for your attendance dbergmeier@mga-it.com http://www.mga.com.au
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.