oracle数据库版本安全,ORACLE数据库安全基础知识

一、数据字典保护

启用数据字典保护,只有SYSDBA用户才能访问数据字典基础表

使用show parameters命令来检查参数O7_DICTIONARY_ACCESSIBILITY是否为FALSE。

二、账号安全管理

1、根据用户的业务需要,配置最小权限

使用以下查询具有DBA权限的用户

selectgranteeasusernfromdba_role_privswheregranted_role='DBA'intersectselectusernamefromdba_users;

使用以下查询具有DBA权限的角色

selectgranteeasusernfromdba_role_privswheregranted_role='DBA'minus(selectgranteeasusernfromdba_role_privswheregranted_role='DBA'intersectselectusernamefromdba_users);

2、使用数据库角色(ROLE)来管理对象的权限

使用select * from dba_role_privs或dba_tab_privs; select* from user_role_privs;查看帐号角色;确定帐号权限划分是否明确。

3、对用户的属性进行控制,包括密码策略、资源限制等。

为不同的业务用户建立不同的profile,设置数据库口令复杂度,有效期及锁定配置等,Profile参数解释如下:

A.对数据库资源做限制

SESSIONS_PER_USER每个用户名所允许的并行会话数

cpu_PER_SESSION一个会话一共可以使用的时间,单位是百分之一秒

cpu_PER_CALL一次(解析、执行和获取)允许使用的时间

CONNECT_TIME限制会话连接时间,单位是分钟

IDLE_TIME允许空闲会话的时间,单位是分钟

LOGICAL_READS_PER_SESSION限制会话对数据块的读取,单位是块

LOGICAL_READS_PER_CALL限制调用对数据块的读取,单位是块

COMPOSITE_LIMIT指定一个会话的总的资源消耗,以serviceunits单位表示

PRIVATE_SGA限制会话在SGA中Shared Pool中私有空间的分配

B.对密码做限制

Failed_LOGIN_ATTEMPTS帐户被锁定之前可以错误尝试的次数

PASSWORD_LIFE_TIME密码可以被使用的天数,单位是天,默认值180天

PASSWORD_REUSE_TIME密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)

PASSWORD_REUSE_MAX密码的最大改变次数(结合PASSWORD_REUSE_TIME)

PASSWORD_LOCK_TIME超过错误尝试次数后,用户被锁定的天数,默认1天

PASSWORD_GRACE_TIME当密码过期之后还有多少天可以使用原密码

PASSWORD_VERIFY_FUNCTION密码复杂度设置,至少8个字符大写字母+小写字母+数字+特殊符号

具体用法举例:

alterprofileprofile_namelimitPASSWORD_VERIFY_FUNCTIONverify_function_11g;--设置数据库口令复杂度

alterprofileprofile_namelimitFailed_LOGIN_ATTEMPTS5--设置数据库口令输错5次被锁

4、根据业务限制具备数据库超级管理员(SYSDBA)权限的用户远程登录

使用show parameters命令来检查参数REMOTE_LOGIN_PASSWORDFILE是否为NONE。(搭建DG,RMAN备份等都需要管理员权限,根据业务设置)

5、限制在DBA组中的操作系统用户数量

限制除oracle,grid之外的其它操作系统用户在dba组中,以防止其用户串改或删除oracle

三、可信IP地址访问控制

通过数据库所在操作系统或防火墙限制,只有信任的IP地址才能通过监听器访问数据库,可通过设置$ORACLE_HOME/network/admin/sqlnet.ora文件中参数tcp.validnode_checking和tcp.invited_nodes实现限制,需重启监听。

四、默认端口及实例名修改对于默认的1521端口,应该修改掉默认的监听端口;对于 Oracle TNS Listener SID 可以被猜测,不应该使用安装Oracle时默认的SID(ORCL),应该设置复杂度较高的SID。

五、记录操作事件

1、创建触发器对用户登录进行日志记录

建表LOGIN_CHECK_LOG

createtablelogin_check_log(session_idnumber(8,0)notnull,login_on_timedate,user_in_dbvarchar(50),ip_addressvarchar(20));

建触发器LOGIN_CHECK

createtriggerlogin_check

afterlogonondatabase

begin

insertintologin_check_log(session_id,login_on_time,user_in_db,ip_address)selectaudsid,sysdate,sys.login_user,sys_context('userenv','ip_address')fromv$sessionwhereaudsid=userenv('sessionid');

end;

/

还可以通过创建数据库连接使用相关的触发器,比如:限制只能IP为xxx的客户端使用PL/sql

2、数据库应配置日志功能,记录用户对数据库的操作

通过记录操作日志,记录需要包含用户帐号,操作时间,操作内容以及操作结果等。比如开启监听器日志。

LSNRCTL>setlog_directory$ORACLE_HOME/diag/tnslsnr//listener/alert/

LSNRCTL>setlog_filelog.xml

LSNRCTL>setlog_statuson

LSNRCTL>save_config

3、根据业务要求制定数据库审计策略

使用show parameter命令来检查参数audit_trail是否设置,具有参数如下:

none:是默认值,禁用数据库审计。

os:启用审计,并将数据库审计记录定向到OS审计记录。

db:启用审计,并将数据库审计记录定向到数据库的SYS.AUD$表11g此参数默认为db。

db_extended:启用审计,并将数据库所有审计记录定向的到数据库的SYS.AUD$表中,包含SYS.AUD$表的sqlBIND列和sqlTEXTCLOB列。这样审计的结果里面除了连接信息还包含了当时执行的具体语句。

xml:启用数据库审计,并将所有的记录写到XML格式的OS系统文件中。

xml_extended:启用数据库审计,输出审计记录的所有列,包括sqltext和sqlbind。

有兴趣的童鞋还可以了解一下ORACLE的安全审计产品:Oracle Audit Vault and Database Firewall(AVDF)

六、数据库漏洞管理

使用主流漏洞扫描工具进行扫描,对于中高危漏洞,应及时修复,检查系统的详细版本号,及时更新ORACLE发布的中高危补丁;对于暂无修复手段的漏洞,应通过其他技术手段进行风险规避。具体请参考:国内外权威的CVE漏洞库。

CVE - Common Vulnerabilities and Exposures(CVE):http://cve.mitre.org/

总结

以上是编程之家为你收集整理的ORACLE数据库安全基础知识全部内容,希望文章能够帮你解决ORACLE数据库安全基础知识所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值