database vault

来源:互联网 发布:艾宾浩斯提醒软件 编辑:程序博客网 时间:2024/05/21 06:11

原文:http://www.ixdba.com/html/ycategory/database-oracle/page/2/

http://yangtingkun.itpub.net/post/468/476185

 

database vault可通过下列方法解决一些最为常见的安全问题和内部威胁:

·限制特权DBA,如sysdab以及有select any table的授权用户访问应用程序数据。

·防止应用程序 DBA 操纵数据库和访问其他应用程序。

·更好的控制何人、何时、何地可以访问应用程序。

Oracle Database Vault体现出来的三权为:

管理dba:通常是sysdba,如果安装并激活了database vault,sysdba的权限将大大减少,操作系统认证也将失效,没有alter user等等特权,不能查看由Oracle Database Vault保护起来的业务数据。举一个例子,你有一个业务用户叫HR,已经被database vault给保护起来了,你就是有再大的查看权限,如select any table,你也查看不了HR用户下的数据。所以,管理dba的作用就是启动关闭数据库,管理数据文件,管理表空间等等。

应用或者是开发dba:因为不能通过OS认证登陆数据库,所以,他们在没有sys等特权用户的密码的情况下,是不能管理数据库的。但是,他们知道应用用户的密码,如能登陆HR用户,看到HR用户下的数据。但是,每个用户也是分割的,如HR用户可以看到HR下面的数据,但是不能看到finance用户下的数据。

审计用户/管理员:这个用户可以配置database vault策略,也拥有一些alter user之类的特权命令的执行权,他们还可以查看管理dba与开发dba的一些违规操作。但是,最主要的是,他们要指定好策略,实现上面所说的,更好的控制何人、何时、何地可以访问应用程序。如,可以规定,这个数据库的某个用户数据,只能在特定的IP地址的机器上能访问;也可以规定,比如财务数据,只能从早上8点到晚上18点能接受访问,其它时间任何人都不能访问到该数据。

Oracle Database Vault是甲骨文公司安全产品系列的一个组成部分,可与Oracle标记安全(OracleLabel Security)、Oracle透明数据加密(Oracle Transparent Data Encryption)、Oracle虚拟专有数据库(Oracle Virtual Private Database)、Oracle安全备份(Oracle Secure Backup)等其他Oracle数据库安全产品一起使用,以实现更高级别的信息保护。

现在database vault遭遇到的最大的困难可能还是可靠度方面以及性能方面的问题,到底有多少人用到了这个东西,是否有bug,性能影响到底有多大等等。在性能方面,因为它会改变select语句的行为(权限),我怀疑一个策略的改变将引发众多语句的重新编译,这个情况在高可用的OLTP环境中则是比较恐怖的。

实例:

ORACLE DATABASE VAULT组件就具备这样的功能:

SQL> CONN SYS@YTK111 AS SYSDBA输入口令: ****已连接。
SQL> SHOW USER
USER
"SYS"
SQL> SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';

PARAMETER VALUE
---------------------------------------- -------------------------
Oracle Database Vault TRUE

SQL> CREATE USER TEST IDENTIFIED BY TEST;
CREATE USER TEST IDENTIFIED BY TEST
*
1行出现错误:
ORA-01031:
权限不足


SQL> GRANT CONNECT, RESOURCE TO YANGTK;
GRANT CONNECT, RESOURCE TO YANGTK
*
1行出现错误:
ORA-00604:
递归 SQL 级别 1 出现错误

ORA-47401: grant role privilege (
CONNECT.) 的领域违规
ORA-06512:
"DVSYS.AUTHORIZE_EVENT", line 55
ORA-06512:
line 31

 

可以看到,在ORACLE DATABASE VAULT的默认情况下,SYS用户甚至连创建用户和授权的权限都没有了。

当前SYS还是可以做一些数据库级或实例级的维护和管理操作的:

SQL> SHOW PARAMETER OPEN_CURSORS

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 300
SQL> ALTER SYSTEM SET OPEN_CURSORS = 500;

系统已更改。

SQL> ALTER SYSTEM SWITCH LOGFILE;

系统已更改。

SQL> CREATE TABLESPACE TEST DATAFILE 'E:ORACLEORADATAYTK111TEST01.DBF' SIZE 100M;

表空间已创建。

 

只是和用户创建、授权等相关的权限从SYSSYSTEMDBA用户中被移除。在VAULT中,有了一个新增的用户DVSYS专门负责这部分权限的管理:

SQL> CONNDVSYS@YTK111输入口令: ****已连接。
SQL> CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE TEST;

用户已创建。

SQL> GRANT CONNECT TO TEST;

授权成功。

SQL> CONN SYS@YTK111 AS SYSDBA输入口令: ****已连接。
SQL> GRANT RESOURCE TO TEST;

授权成功。

SYSDVSYS二者各司其职,SYS没有创建用户、赋予CONNECT角色的权限,而DVSYS则没有权限授予UNLIMITED TABLESPACECREATE TABLE等系统权限。

 

SQL> CONNTEST@YTK111输入口令: ****已连接。
SQL> CREATE TABLE T (ID NUMBER);

表已创建。

SQL> INSERT INTO T VALUES (1);

已创建 1行。

SQL> COMMIT;

提交完成。

SQL> CONNSYS@YTK111 AS SYSDBA输入口令: ****已连接。
SQL> SELECT * FROM TEST.T;

ID
----------
1

默认情况下SYS是可以访问其他用户下对象的。下面通过建立REALM,使得用户数据得到保护

SQL> CONNDVSYS@YTK111输入口令: ****已连接。
SQL> EXEC DBMS_MACADM.CREATE_REALM('TEST_REALM', 'REAML FOR TEST', 'Y', 0)

PL/SQL 过程已成功完成。

 

SQL> EXEC DBMS_MACADM.ADD_OBJECT_TO_REALM('TEST_REALM', 'TEST', '%', '%')

PL/SQL 过程已成功完成。

 

创建了一个名TEST_REALMREALM,然后将TEST用户的所有对象放到这个REALM中,下面再次尝试利用SYS访问TEST用户下的对象:

SQL> CONN SYS@YTK111 AS SYSDBA输入口令: ****已连接。
SQL> SELECT * FROM TEST.T;
SELECT * FROM TEST.T
*
1 行出现错误:
ORA-01031:
权限不足

 

可以看到,这时SYS已经没有权限去访问TEST用户下的对象了。这说明通过VAULTREALM的保护,DBA已经没有权限看到业务用户下的敏感数据了

这里展示的只是VAULT包含敏感数据的一个小例子,VAULT在安全性方面的功能远不止这些,比如VAULT可以限制访问为本地访问、可以限制访问的时间区域,可以限制访问的IP范围等等。

 

 

原创粉丝点击