Oracle 数据库profile参数表限制用户资源和密码的管理
Oracle数据库profile参数表限制用户资源和密码的管理
此部分整理了oracle数据库中profile参数表的信息和相关配置过程,profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile。当建立用户没有指定profile选项时,那么oracle就会将default分配给用户。
profile概述
Profile是Oracle提供的一种针对用户资源使用和密码管理的策略配置。借助Profile,可以实现特定用户资源上的限制和密码管理规则的应用。在实际的应用中,Profile可以帮助我们实现很多应用层面比较困难实现的需求。
Profile是Oracle安全策略的一个组成部分。
默认情况下,用户连接数据库,形成会话,使用CPU资源和内存资源是没有限制的。在一些应用并发量很大,特别是多个应用部署在同一个数据库服务器上的时候,依据应用对企业重要程度的部分,CPU和内存资源的分配一定是有所侧重的。
此外,用户的密码管理,可以是一个比较复杂的工作。比如,用户锁定之后,多长时间被自动释放、密码生命周期、登录尝试次数等等。
这两个方面的问题,都可以借助Profile去解决。Profile相当于一个命名的安全策略集合,其中规定了资源使用的限制和密码使用的规则。Profile定义之后,是可以应用到每个用户上,对每个用户的安全活动进行限制。
profile的查看、创建、修改等
-
查看数据库profile资源限制参数
12C之前的版本查看的信息如下:
SQL> set line 200; SQL> col RESOURCE_NAME for a25 SQL> col PROFILE for a20 SQL> select * from dba_profiles where PROFILE='DEFAULT'; PROFILE RESOURCE_NAME RESOURCE LIMIT -------------------- ------------------------- -------- ---------------------------------------- DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED 指定一个会话的总的资源消耗,以service units单位表示 DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED 指定限制用户的并发会话的数目 DEFAULT CPU_PER_SESSION KERNEL UNLIMITED 指定会话的CPU时间限制,单位为百分之一秒 DEFAULT CPU_PER_CALL KERNEL UNLIMITED 指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒 DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED 指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块 DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED 指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目 DEFAULT IDLE_TIME KERNEL UNLIMITED 指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开 DEFAULT CONNECT_TIME KERNEL UNLIMITED 指定会话的总的连接时间,以分钟为单位 DEFAULT PRIVATE_SGA KERNEL UNLIMITED 指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位 DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 指定在帐户被锁定之前所允许错误密码尝试登陆的的最大次数 DEFAULT PASSWORD_LIFE_TIME PASSWORD 180 指定同一密码所允许使用的天数 PROFILE RESOURCE_NAME RESOURCE LIMIT -------------------- ------------------------- -------- ---------------------------------------- DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED 指可以重复使用多长时间之前的密码 DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED 指的是当前密码可以被重用之前,必须进行密码修改的次数 DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL 该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create DEFAULT PASSWORD_LOCK_TIME PASSWORD 1 指定登陆尝试失败次数到达后帐户的锁定时间,以天为单位 DEFAULT PASSWORD_GRACE_TIME PASSWORD 7 指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效 16 rows selected.
12C版本和之后版本的查看信息如下:
SQL> col LIMIT for a25 SQL> select * from dba_profiles; PROFILE RESOURCE_NAME RESOURCE LIMIT COM INH IMP -------------------- ------------------------- -------- ------------------------- --- --- --- DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED NO NO NO DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED NO NO NO DEFAULT CPU_PER_SESSION KERNEL UNLIMITED NO NO NO DEFAULT CPU_PER_CALL KERNEL UNLIMITED NO NO NO DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED NO NO NO DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED NO NO NO DEFAULT IDLE_TIME KERNEL UNLIMITED NO NO NO DEFAULT CONNECT_TIME KERNEL UNLIMITED NO NO NO DEFAULT PRIVATE_SGA KERNEL UNLIMITED NO NO NO DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 NO NO NO DEFAULT PASSWORD_LIFE_TIME PASSWORD 180 NO NO NO PROFILE RESOURCE_NAME RESOURCE LIMIT COM INH IMP -------------------- ------------------------- -------- ------------------------- --- --- --- DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED NO NO NO DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED NO NO NO DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL NO NO NO DEFAULT PASSWORD_LOCK_TIME PASSWORD 1 NO NO NO DEFAULT PASSWORD_GRACE_TIME PASSWORD 7 NO NO NO DEFAULT INACTIVE_ACCOUNT_TIME PASSWORD UNLIMITED NO NO NO ORA_STIG_PROFILE COMPOSITE_LIMIT KERNEL DEFAULT NO NO NO ORA_STIG_PROFILE SESSIONS_PER_USER KERNEL DEFAULT NO NO NO ORA_STIG_PROFILE CPU_PER_SESSION KERNEL DEFAULT NO NO NO ORA_STIG_PROFILE CPU_PER_CALL KERNEL DEFAULT NO NO NO ORA_STIG_PROFILE LOGICAL_READS_PER_SESSION KERNEL DEFAULT NO NO NO PROFILE RESOURCE_NAME RESOURCE LIMIT COM INH IMP -------------------- ------------------------- -------- ------------------------- --- --- --- ORA_STIG_PROFILE LOGICAL_READS_PER_CALL KERNEL DEFAULT NO NO NO ORA_STIG_PROFILE IDLE_TIME KERNEL 15 NO NO NO ORA_STIG_PROFILE CONNECT_TIME KERNEL DEFAULT NO NO NO ORA_STIG_PROFILE PRIVATE_SGA KERNEL DEFAULT NO NO NO ORA_STIG_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD 3 NO NO NO ORA_STIG_PROFILE PASSWORD_LIFE_TIME PASSWORD 60 NO NO NO ORA_STIG_PROFILE PASSWORD_REUSE_TIME PASSWORD 365 NO NO NO ORA_STIG_PROFILE PASSWORD_REUSE_MAX PASSWORD 10 NO NO NO ORA_STIG_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD ORA12C_STIG_VERIFY_FUNCTI NO NO NO ON PROFILE RESOURCE_NAME RESOURCE LIMIT COM INH IMP -------------------- ------------------------- -------- ------------------------- --- --- --- ORA_STIG_PROFILE PASSWORD_LOCK_TIME PASSWORD UNLIMITED NO NO NO ORA_STIG_PROFILE PASSWORD_GRACE_TIME PASSWORD 5 NO NO NO ORA_STIG_PROFILE INACTIVE_ACCOUNT_TIME PASSWORD 35 NO NO NO 34 rows selected.
新增了INACTIVE_ ACCOUNT_TIME参数,此参数是12C后加入的。从12.2开始Oracle会自动将不活跃(超过一定时间没有操作)的用户锁住,上表中的意思是超过35天没有登录便会锁住用户。
-
创建数据库profile
SQL> CREATE PROFILE PASSWORD_profile LIMIT COMPOSITE_LIMIT UNLIMITED SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL UNLIMITED LOGICAL_READS_PER_SESSION UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED IDLE_TIME UNLIMITED CONNECT_TIME UNLIMITED PRIVATE_SGA UNLIMITED FAILED_LOGIN_ATTEMPTS 10 PASSWORD_LIFE_TIME UNLIMITED PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION NULL PASSWORD_LOCK_TIME 1 PASSWORD_GRACE_TIME 30 ; SQL> select * from dba_profiles; //查看创建后的profile PROFILE RESOURCE_NAME RESOURCE LIMIT -------------------- ------------------------- -------- ---------------------------------------- PASSWORD_PROFILE COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED PASSWORD_PROFILE SESSIONS_PER_USER KERNEL UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED PASSWORD_PROFILE CPU_PER_SESSION KERNEL UNLIMITED DEFAULT CPU_PER_SESSION KERNEL UNLIMITED PASSWORD_PROFILE CPU_PER_CALL KERNEL UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITED PASSWORD_PROFILE LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED PASSWORD_PROFILE LOGICAL_READS_PER_CALL KERNEL UNLIMITED PROFILE RESOURCE_NAME RESOURCE LIMIT -------------------- ------------------------- -------- ---------------------------------------- DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED PASSWORD_PROFILE IDLE_TIME KERNEL UNLIMITED DEFAULT IDLE_TIME KERNEL UNLIMITED PASSWORD_PROFILE CONNECT_TIME KERNEL UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED PASSWORD_PROFILE PRIVATE_SGA KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED PASSWORD_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD 10 DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 PASSWORD_PROFILE PASSWORD_LIFE_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_LIFE_TIME PASSWORD 180 PROFILE RESOURCE_NAME RESOURCE LIMIT -------------------- ------------------------- -------- ---------------------------------------- PASSWORD_PROFILE PASSWORD_REUSE_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED PASSWORD_PROFILE PASSWORD_REUSE_MAX PASSWORD UNLIMITED DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED PASSWORD_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD NULL DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL PASSWORD_PROFILE PASSWORD_LOCK_TIME PASSWORD 1 DEFAULT PASSWORD_LOCK_TIME PASSWORD 1 PASSWORD_PROFILE PASSWORD_GRACE_TIME PASSWORD 30 DEFAULT PASSWORD_GRACE_TIME PASSWORD 7 32 rows selected.
-
修改数据库profile
SQL> alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED; //修改指定profile参数文件内容 Profile altered. SQL> alter user KFWWU profile PASSWORD_profile; //修改某个用户的profile User altered.
-
查看数据库用户使用的profile情况
SQL> select USERNAME,ACCOUNT_STATUS,LOCK_DATE,CREATED,PROFILE from dba_users; USERNAME ACCOUNT_STATUS LOCK_DATE CREATED PROFILE ------------------------------ -------------------------------- --------- --------- -------------------- MGMT_VIEW OPEN 26-OCT-17 DEFAULT SYS OPEN 26-OCT-17 DEFAULT WGORACLE OPEN 10-JAN-19 DEFAULT KFWWU OPEN 27-OCT-17 PASSWORD_PROFILE OUTLN EXPIRED 26-OCT-17 DEFAULT SYSTEM EXPIRED 26-OCT-17 DEFAULT DBSNMP EXPIRED 26-OCT-17 DEFAULT SYSMAN EXPIRED 26-OCT-17 DEFAULT APPQOSSYS EXPIRED & LOCKED 26-OCT-17 26-OCT-17 DEFAULT WMSYS EXPIRED & LOCKED 26-OCT-17 26-OCT-17 DEFAULT DIP EXPIRED & LOCKED 26-OCT-17 26-OCT-17 DEFAULT USERNAME ACCOUNT_STATUS LOCK_DATE CREATED PROFILE ------------------------------ -------------------------------- --------- --------- -------------------- ORACLE_OCM EXPIRED & LOCKED 26-OCT-17 26-OCT-17 DEFAULT 12 rows selected.
结尾
至此,oracle数据库profile相关总结完成。总的来说profile相关知识比较简单,只需要记住涉及到此内容的dba_ users表和dba_profiles表就行了。结合知道的相关参数内容做具体的修改和适用。