当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle数据库安全措施(二)
发布时间:2010/10/24 9:53:38 来源:www.xue.net 编辑:城市总裁吧

    指定profile可以使用create user 或者alter user,举例如下:

    CREATE USER test

    IDENTIFIED BY aZ7bC2

    DEFAULT TABLESPACE data_ts

    QUOTA 100M ON test_ts

    QUOTA 500K ON data_ts

    TEMPORARY TABLESPACE temp_ts

    PROFILE profile_name;

    ALTER USER test

    IDENTIFIED BY A12BDD

    DEFAULT TABLESPACE data_ts

    TEMPORARY TABLESPACE temp_ts

    QUOTA 100M ON data_ts

    QUOTA 0 ON test_ts

    PROFILE profile_name;

    5. 权限管理

    根据实际情况,细分权限,建立角色,对于系统权限慎重给予。采用最小授权原则,给用户尽量少的权限。

    用户组PUBLIC,顾名思义,表示数据库中的每一位用户,因此,对PUBLIC 用户组授予权限其实也就是对数据库中的每一位用户都授予了相应的权限。这是在授予或撤销权限时非常有用的一条捷径。但也可能带来巨大的安全隐患,尤其是在试图确保以最少权限的方式运行数据库时,更是如此。

    撤销Public 组的一些不必要权限,严格限制以下程序包的权限:

    UTL_FILE:该程序包允许oralce 用户读取服务器上的文件,如果设置错误的话,可能可以得到任何文件。

    UTL_HTTP:该程序包允许oracle 用户通过HTTP 访问外部资源包括恶意的web 代码和文件。

    UTL_TCP: 该程序包允许oracle 通过TCP 建立连接,从而从网络上得到可执行文件。

    UTL_SMTP: 该程序包允许oracle 通过SMTP 方式进行通信,从而转发关键文件。

    撤销以上包的执行权限:

    Sql:

    revoke EXECUTE on UTL_FILE from public;

    revoke EXECUTE on UTL_TCP from public;

    revoke EXECUTE on UTL_SMTP from public;

    revoke EXECUTE on UTL_HTTP from public; 6.修改认证方式

    Oracle默认使用操作系统认证,只要能进入系统可直接以sys进入oracle,存在较大安全隐患,可修改为数据库认证方式。

    在$ORACLE_HOME/network/admin中,打开sqlnet.ora,将SQLNET.AUTHENTICATION_SERVICES= (NTS)注释掉,在前面加#即可。 7.限制IP连接

    由于Oracle 的TNS 监听器有许多安全漏洞,其中的一些漏洞甚至能让入侵者得到操作系统的超级用户权限或者修改数据库中的数据,因此在打好补丁的同时,对连接IP 的限制也能做到防患于未然。

    在$ORACLE_HOME\network\admin 目录下修改SQLNET.ORA文件,

    增加如下内容:

    tcp.validnode_checking = YES

    tcp.invited_nodes = (IP地址, hostname)

    IP地址和hostname是允许连接的主机的名字和IP地址。 8.关掉Extproc 功能

    由于extproc 存在安全问题允许用户不进行身份认证就可以调用系统函数,因此如果不需要该功能必须关闭。

    修改TNSNAMES.ORA 和LISTENER.ORA 文件,删除含有EXTPROC的条目,使两个文件中只含有使用的有效连接信息。 9.启动审计功能

    Oracle的审计机制是用来监视用户对ORACLE数据库所做的各种操作。在缺省情况下,系统的审计功能是关闭的。可以在INIT.ORA参数文件中设置参数AUDIT_TRAIL来激活。它的值有:NONE 禁止审计;DB 启用审计,写入SYS.AUD$;OS 启用审计,写入操作系统。

    当AUDIT_TRAIL=OS,可设置AUDIT_FILE_DEST指定审计文件的位置,默认情况在$ORACLE_HOME/rdbms/audit下面。

    AUDIT_SYS_OPERATIONS, AUDIT_TRAIL, AUDIT_FILE_DEST都是静态参数,需修改参数文件重启后生效。

    设置审计水平:

    Statement:指定对影响数据库对象的一个特定类型的特定SQL语句进行审计。比如对表的audit table有以下语句:CREATE TABLE, TRUNCATE TABLE, COMMENT ON TABLE, and DELETE [FROM] TABLE等;

    Privilege:对由指定系统权限授权的SQL语句进行审计,比如AUDIT CREATE ANY TRIGGER是对由CREATE ANY TRIGGER系统权限授权的语句进行审计;

    Object:对特定对象上的特定操作进行审计,比如ALTER TABLE on the emp。

    设置审计条件:

    BY SESSION/BY ACCESS:BY SESSION使oracle在同一session中的同一类型的SQL语句只写一条记录;BY ACCESS使oracle对每次访问写一条记录。

    WHENEVER SUCCESSFUL/WHENEVER NOT SUCCESSFUL:WHENEVER SUCCESSFU只审计那些成功执行的SQL语句;WHENEVER NOT SUCCESSFUL只审计那些失败或结果错误的SQL语句。

    审计操作举例:

    审计连接:

    AUDIT SESSION; AUDIT SESSION BY scott, lori;

    审计指定权限:

    AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;

    AUDIT DELETE ANY TABLE;

    AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL;

    审计指定对象:

    AUDIT DELETE ON scott.emp;

    AUDIT SELECT, INSERT, DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;

    AUDIT SELECT ON DEFAULT WHENEVER NOT SUCCESSFUL;

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved