ORACLE_OCP之管理用户安全
一、数据库用户
- 每个数据库用户帐户都有:
- 唯一的用户名
- 认证方式
- 默认表空间
- 临时表空间
- 用户密码的相关参数
- 一组默认的资源配置
- 帐户状态
- 模式(SCHEMA):
- 是数据库用户拥有的数据库对象的集合
- 与用户的名称相同
二、特权帐户
- SYS:
- 管理所有的数据字典和AWR报告
- 用于启停数据库实例。
- SYSTEM:拥有和管理其他管理表和视图
- SYSBACKUP: 操作 Oracle Recovery Manager (RMAN) 备份与恢复操作
- SYSDG: 对Oracle Data Guard (DG)操作
- SYSKM: 管理透明数据加密钱包操作
用户管理特权
权限 | 描述 |
---|---|
SYSDBA | 标准数据库操作,例如启动和关闭数据库实例,创建服务器参数文件(SPFILE)以及更改ARCHIVELOG模式允许被授权者查看用户数据 |
SYSOPER | 标准数据库操作,例如启动和关闭数据库实例,创建服务器参数文件(SPFILE)以及更改ARCHIVELOG模式 |
SYSBACKUP | 使用RMAN或SQL * Plus的Oracle Recovery Manager(RMAN)备份和恢复操作 |
SYSDG | 使用Data Guard Broker或DGMGRL命令行界面进行Data Guard操作 |
SYSKM | 管理透明数据加密操作 |
- 保护特权帐户
- 特权帐户可以通过:
- 增加密码复杂度
- 对管理员角色启用更强身份验证
- 特权帐户可以通过:
三、用户验证
- 密码:用户定义一个密码,当用户尝试登录数据库时必须提供该密码
- 外部:通过数据库外部的方法(操作系统,Kerberos或Radius)进行身份验证
- 全局:通过使用基于LDAP的目录服务来标识用户
四、管理员认证
- 操作系统安全:
- DBA必须具有OS特权才能创建和删除文件。
- 非DBA的数据库用户不应具有操作系统特权来创建或删除数据库文件.
- 管理员安全:
- 当SYSDBA and SYSOPER连接时:
- 已按名称审核DBA用户的密码文件和强身份验证方法。
- 已对OS帐户名进行审计以进行OS身份验证。
- 对于特权用户,操作系统身份验证优先于密码文件身份验证。
- 密码文件使用区分大小写的密码.
- 当SYSDBA and SYSOPER连接时:
五、权限
- 数据库中包含两种用户权限:
- 系统权限:使用户能够执行数据库中的特定操作
- 对象权限:使用户能够访问和操作特定对象
六、使用角色管理权限
- 角色:
- 把一组特定权限赋予角色
- 可以通过角色向用户授予多个权限
- 角色的优点:
- 更简单的权限管理
- 更动态的权限管理
- 更好的权限选择性
七、预定义角色
Role | Privileges Included |
---|---|
CONNECT | CREATE SESSION |
DBA | Most system privileges; several other roles. Do not grant to non-administrators. |
RESOURCE | CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER, CREATE TYPE |
SCHEDULER_ADMIN | CREATE ANY JOB, CREATE EXTERNAL JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM, MANAGE SCHEDULER |
SELECT_CATALOG_ROLE | SELECT privileges on data dictionary objects |
八、角色的安全
-
默认角色,可以在需要时启用
SET ROLE vacationdba;
-
可以通过身份验证保护角色。
-
角色也可以通过编写存储过程等方式进行保护.
CREATE ROLE secure_application_role
IDENTIFIED USING <security_procedure_name>;
九、权限分析
- 分析现有权限以撤消不必要的权限。
- 使用DBMS_PRIVILEGE_CAPTURE包.
- 权限分析流程
十、USER的PROFILE文件(概要文件)
- 一个用户只能分配一个概要文件:
- 控制资源消耗
- 管理帐户状态和密码有效期
Note:必须先将RESOURCE_LIMIT设置为TRUE,概要文件才能施加资源限制。
十一、ORACLE解除密码180天限制(dbca建库成功以后就进行相关操作)
-
1、进入sqlplus模式
sqlplus / as sysdba;
-
2、查看用户密码的有效期设置(一般默认的配置文件是DEFAULT)
SELECT * FROM dba_profiles WHERE profile=‘DEFAULT’ AND resource_name=‘PASSWORD_LIFE_TIME’;
-
3、将密码有效期由默认的180天修改成“无限制”,修改之后不需要重启动数据库,会立即生效
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;
-
4、如果在账户进不去,或者账户锁定。帐户再改一次密码
alter user 用户名 identified by 原密码;
-
5、使用修改后的用户登录,如果报“ORA-28000:用户已被锁”,解锁
alter user db_user account unlock;
commit;
十二、实施密码安全功能
Note:请勿使用会导致SYS,SYSMAN和DBSNMP密码过期且帐户被锁定的配置文件。
-
提供的密码验证功能
- 以下功能是由$ORACLE_HOME/rdbms/admin/utlpwdmg.sql 脚本提供:
- VERIFY_FUNCTION_11G
- ORA12C_VERIFY_FUNCTION
- ORA12C_STRONG_VERIFY_FUNCTION
- 该功能提供以下用处:
- 最少字符数
- 不能是用户名,带数字的用户名或反向的用户名
- 不是数据库名称或带数字的数据库名称
- 至少包含一个字母和一个数字字符
- 与上一个密码至少相差三个字母
- 以下功能是由$ORACLE_HOME/rdbms/admin/utlpwdmg.sql 脚本提供:
-
对默认概要文件的修改
- utlpwdmg.sql脚本还修改了DEFAULT配置文件,如下所示:
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 180
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1
PASSWORD_VERIFY_FUNCTION ora12c_verify_function;
- utlpwdmg.sql脚本还修改了DEFAULT配置文件,如下所示:
-
为用户分配配额
- 不具有UNLIMITED TABLESPACE系统权限的用户必须获得配额,然后才能在表空间中创建对象.
- 配额可以是:
- 特定值,以兆字节或K字节为单位 M K G T P E
- 无限 UNLIMITED
- 延迟段:
- 当延迟段打开的时候,当某个具有建表权限的用户建表时,实际上并不是真正的建立了段,而是建立了一个延迟段,然后插入数据时这个延迟段,才会变成一个真正的段。
当延迟段关闭的时候,当某个具有建表权限的用户建表时,就会马上建立一个真正的段。
注:以上操作必须具有已分配或者不限制使用某个表空间的磁盘配额。
- 当延迟段打开的时候,当某个具有建表权限的用户建表时,实际上并不是真正的建立了段,而是建立了一个延迟段,然后插入数据时这个延迟段,才会变成一个真正的段。
十三、应用最小特权原则
-
保护数据字典:
O7_DICTIONARY_ACCESSIBILITY=FALSE
-
从PUBLIC撤消不必要的特权。
-
使用访问控制列表(ACL)来控制网络访问。
-
限制用户可访问的目录。
-
使用管理特权限制用户。
-
限制远程数据库身份验证:
REMOTE_OS_AUTHENT=FALSE