一、Profile文件概述:Profiles是Oracle安全策略的一个组成部分,当Oracle建立数据库时,会自动建立名称为Default的profile,当建立用户没有指定profile,那么oracle就将defalut分配给用户。
1、默认情况下,用户连接数据库,形成回话,使用CPU和内存资源是没有限制的。但是在一些高并发的应用,且多个应用部署到同一服务器上时,因为服务器的CPU和内存是有限的,所以,大多数企业会根据应用对于自身的重要性,来对各个库进行内存和CPU的分配。除此之外,还有用户的密码管理,用户的登录尝试次数,用户的密码锁定后多长时间释放,密码生命周期等参数都是通过Profile来设置的,当然这里只列举了一下部分!
2、Profile文件主要规定了资源使用的限制和密码(也就是口令)使用的规则,Profile定义之后,可以做用到每个用户之上,对每个用户的安全活动进行限制。
3、下面Oracle建立数据库时,生成的名为Default的profile
4、配置文件创建方法
create profile 配置文件名 limit
配置参数1 值1
配置参数2 值2
5、配置文件的使用方法
5.1、将配置文件中的规则指定给特定的用户,这里拿Failed_Login_Attempts(在账户被锁定前允许的登录次数)举例,其他的规则也是一样,如果要指定个特定的用户
左图创建了一个test规则的profile,允许用户在被锁定前,登录三次,如果失败被锁定2天,并将这个profile赋给了scott用户,也就是说这个规则只是用于scott用户
连续登录三次,失败后,账户被锁定,如何解锁用户请参考Oracle 系统常用命令
5.2、修改默认的profile,使其作用于所有的用户
左图修改了安装数据库默认产生的profile文件,并修改了其参数,使所有的用户必须在13天内修改密码,否则将无法登录,如果不理解口令,下面有介绍。
6、删除profile
二、Profile 口令管理
1、Composite_Limite
指定一个会话的总的资源消耗, 以service units单位表示。oracle数据库以有利的方式计算cpu_per_session, connect_time, logical_reads_per_session和private-sga总的service units
2、Session_Per_User
指定限制用户的并发会话的数目
3、Cpu_Per_Session
指定会话的cpu时间限制, 单位为百分之一秒
4、Cpu_Per_Call
指定一次调用(解析、执行和提取)的cpu时间限制, 单位为百分之一秒
5、Logical_Reads_Per_Session
指定一个会话允许读的数据块的数目, 包括从内存和磁盘读的所有数据块
6、Logical_Read_Per_Call
指定一次执行sql(解析、执行和提取)调用所允许读的数据块的最大数目
7、Idle_Time
指定会话允许连续不活动的总的时间, 以分钟为单位, 超过该时间, 会话将断开。但是长时间运行查询和其他操作的不受此限制
8、Connect_Time
指定会话的总的连接时间, 以分钟为单位
9、Private_Sga
指定一个会话可以在共享池(sga)中所允许分配的最大空间, 以字节为单位。(该限制只在使用共享服务器结构时才有效, 会话在sga中的私有空间包括私有的sql和pl/sql, 但不包括共享的sql和pl/sql)
10、Failed_Login_Attempts和Password_Lock_Time
Failed_Login_Attempts设置账户在被锁定之前允许登录的次数
Password_Lock_Time 指定帐户被锁定的天数. 1/24/60对应的是1分钟. 但是, 1分钟后只有密码正确了, 才可以自动解锁. 如果该参数最后的值是UNLIMITED, 或需要立即给帐户解锁, 就需要DBA用手动方式来给帐户解锁.
11、 Password_Life_Time与Password_Grace_Time
他的作用是:强迫除dba之外的用户在设置的天数内修改密码!!!
这两个口令是结合起来使用的,Password_Life_Time指定用户账户的有效期,到达这个天数的用户叫做到期用户,到期账户会在登陆时,被提醒将在多少天后过期,但仍然可以使用该口令,因为Password_Grace_Time可以设定一个宽限天数,如果在Password_Grace_Time规定的宽限天数内,仍然没有修改口令,则账户过期,将过期账户,即不能登录数据库。代码如下:
a、设置所有的用户的密码将在3天后到期,并且宽限时间为10天(也就是给他们10天时间去修改密码),也就是说超过了13天之后用户还没有修改登录口令(密码),用户将无法正常登陆数据库。
设置完之后可以正常登录,而且没有提醒,因为还没有过三天
现在将系统时间设置到3天之后,再次连接登录
出现提醒:提示当前用户,它的登录口令将在10天后过期,但是此时还是可以正常连接到数据库
现在将系统时间设置到10天后,在进行登录
出现提示:当前用户的密码已经过期,并且强制使用户修改密码,而且登录失败。
12、Password_Rescue_Time和Password_Rescue_Max
13、password_verify_function
使用系统口令校验函数verify_function, 改成校验函数后实现以下口令规则:
口令不能少于4个字符
口令不能与用户名相同
口令至少包含一个字符, 一个数字和一个特殊字符($, _, #, !等)