天天看点

Oracle 体系结构(25)—— Oracle 生产库的安全设置(用户及用户权限管理)Oracle 体系结构(25)—— Oracle 生产库的安全设置(用户及用户权限管理)

Oracle 体系结构(25)—— Oracle 生产库的安全设置(用户及用户权限管理)

一、账户管理

1、按照用户分配账号

create user user01 identified by password1;
create user user02 identified by password2;
....
create user usern identified by passwordn;

           

创建角色(role),并给角色授权,把 role 付给不同的账号。

2、删除无用账号

删除或锁定与数据库运行、维护等无关的账号。

alter user user_name account lock;
drop user user_name cascade;
           

3、限制 dba 用户远程登录

限制具备超级管理(sysdba)权限的用户远程登录。

(1)设置初始化参数 remote_login_passwordfile=none,禁止 sysdba 用户远程登录

--设置初始化参数 remote_login_passwordfile=none,禁止 sysdba 用户远程登录。
SQL> show parameter remote_login_passwordfile
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile	     string	 EXCLUSIVE

SQL> alter system set remote_login_passwordfile=none scope=spfile sid='*';
System altered.

--重启数据库
--查看初始化参数 remote_login_passwordfile 的取值
SQL> show parameter remote_login_passwordfile
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile	     string	 NONE
           

(2)在 sqlnet.ora 中设置 SQLNET.AUTHENTICATION_SERVICES=NONE 禁止 sysdba 角色的自动登录

[[email protected] ~]$ cd $ORACLE_HOME/network/admin
[[email protected] admin]$ ll
total 28
-rw-r--r-- 1 grid oinstall  181 Aug 27 01:06 endpoints_listener.ora
-rw-r--r-- 1 grid oinstall  181 Aug 27 00:55 endpoints_listener.ora.bak.rac2
-rw-r--r-- 1 grid oinstall  718 Aug 27 00:55 listener.ora
-rw-r--r-- 1 grid oinstall  718 Aug  5 03:56 listener.ora.bak.rac2
drwxr-xr-x 2 grid oinstall 4096 Apr 21 15:39 samples
-rw-r--r-- 1 grid oinstall  381 Apr 21 15:39 shrept.lst
-rw-r--r-- 1 grid oinstall  212 Apr 21 16:02 sqlnet.ora

[[email protected] admin]$ vi sqlnet.ora
# sqlnet.ora.rac2 Network Configuration File: /u01/app/11.2.0/grid/network/admin/sqlnet.ora.rac2
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /u01/app/grid
SQLNET.AUTHENTICATION_SERVICES=NONE
           

4、用户最小权限原则

根据业务需要,为用户配置所需的最小权限。

--为用户赋予最小权限
grant 权限 to user_name;

--收回用户的多余权限
revoke 权限 from user_name;
           

5、使用角色(role)管理用户权限

--创建角色
create role role_name....
grant role_name, role_name,... to user_name;
           

6、配置用户资源文件

通过用户的资源文件对用户的属性进行控制,比如密码策略、资源限制等。

--创建用户资源文件
create profile profile_name limit
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 90;

--为用户指定资源文件
alter user user_name profile rofile_name;
           

7、数据字典保护

启用数据字典保护,只有 sysdba 用户才能访问数据字典表。设置初始化参数 O7_DICTIONARY_ACCESSIBILITY 为 false。

SQL> show parameter o7

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
O7_DICTIONARY_ACCESSIBILITY	     boolean	 FALSE
           

二、密码管理

1、密码的复杂度

为用户创建 profile,调整 PASSWORD_VERIFY_FUNCTION 指定密码复杂度:VERIFY_FUNCTION。密码的长度至少 6 位,并包括数字、小写字母、大写字母和特殊符号四类中至少两类。

--查看 Oracle11g 数据库提供的默认密码复杂度函数脚本:Oracle安装目录下的 /rdbms/admin/utlpwdmg.sql 文件
[oracle@rac1 ~]$ ls $ORACLE_HOME/rdbms/admin/utlpwdmg.sql
/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/utlpwdmg.sql

--登录 Oracle 数据库并执行 Oracle11g 数据库提供的默认密码复杂度函数脚本
SQL> @?/rdbms/admin/utlpwdmg.sql
Function created.
Grant succeeded.
Profile altered.
Function created.
Grant succeeded.

--创建用户资源文件
SQL> create profile tom_profile limit
     PASSWORD_VERIFY_FUNCTION verify_function_11G; 
Profile created.

--创建用户 tom
--创建用户失败,指定的密码过于简单
SQL> create user tom identified by "tom"
     profile tom_profile;
create user tom identified by "tom"
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20001: Password length less than 8

--重新创建用户 tom
SQL> create user tom identified by "Tom123456"
     profile tom_profile;
User created.
           

2、指定密码的期限

在资源文件中配置参数 PASSWORD_GRACE_TIME 60。指定密码的期限为 60 天,则强制要求用户 60 天之后必须修改密码:

SQL> alter profile tom_profile limit
     PASSWORD_VERIFY_FUNCTION verify_function_11G
     PASSWORD_GRACE_TIME 60;
Profile altered.
           

3、设置密码历史

在资源文件中配置参数 PASSWORD_REUSE_MAX 5。设置用户不能重复使用最近 5 次(含 5 次)已经使用的密码。

SQL> alter profile tom_profile limit
     PASSWORD_VERIFY_FUNCTION verify_function_11G
     PASSWORD_GRACE_TIME 60
     PASSWORD_REUSE_MAX 5;
Profile altered.
           

4、设置用户登录失败 5 次后,锁定账号

在资源文件中配置参数 FAILED_LOGIN_ATTEMPTS 5。当用户连续认证失败次数超过 5 次(不含 5次 ),锁定账号。

SQL> alter profile tom_profile limit
     PASSWORD_VERIFY_FUNCTION verify_function_11G
     PASSWORD_GRACE_TIME 60
     PASSWORD_REUSE_MAX 5
     FAILED_LOGIN_ATTEMPTS 5;
Profile altered.