位置: 文档库 > 数据库 > 文档下载预览

《Oracle学习笔记:用户管理.doc》

1. 下载的文档为doc格式,下载后可用word或者wps进行编辑;

2. 将本文以doc文档格式下载到电脑,方便收藏和打印;

3. 下载后的文档,内容与下面显示的完全一致,下载之前请确认下面内容是否您想要的,是否完整.

点击下载文档

Oracle学习笔记:用户管理.doc

《Oracle学习笔记:用户管理》

Oracle数据库作为企业级关系型数据库的代表,其用户管理功能是保障系统安全、权限控制和数据隔离的核心模块。本文将从用户创建、权限分配、角色管理、密码策略、资源限制等维度,系统梳理Oracle用户管理的关键技术点,并结合实际案例说明其应用场景。

一、用户管理基础概念

Oracle数据库中的用户(User)是访问数据库资源的主体,每个用户拥有独立的用户名、密码和权限集合。用户与模式(Schema)存在对应关系,用户创建后会自动生成同名的模式,用于存储该用户拥有的数据库对象(如表、视图、存储过程等)。

用户管理的核心目标包括:

  • 实现最小权限原则,避免过度授权
  • 保障密码安全性,防止暴力破解
  • 控制资源使用,防止单个用户占用过多系统资源
  • 满足审计要求,记录用户操作行为

二、用户创建与删除

1. 创建用户

使用CREATE USER语句创建用户时,需指定用户名、密码、默认表空间、临时表空间等属性:

CREATE USER hr_admin 
IDENTIFIED BY SecurePass123
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 100M ON users
PASSWORD EXPIRE;

关键参数说明:

  • IDENTIFIED BY:设置密码,可配合PASSWORD EXPIRE强制用户首次登录时修改密码
  • DEFAULT TABLESPACE:指定用户默认表空间,存储其创建的对象
  • QUOTA:限制用户在表空间中的使用配额

2. 删除用户

删除用户时需考虑是否级联删除其拥有的对象:

-- 仅删除用户(若用户拥有对象会报错)
DROP USER hr_admin;

-- 级联删除用户及其所有对象
DROP USER hr_admin CASCADE;

三、权限管理

Oracle权限分为系统权限(System Privileges)和对象权限(Object Privileges)两大类。

1. 系统权限

系统权限控制用户对数据库资源的全局操作,常用系统权限包括:

  • CREATE SESSION:允许用户连接数据库
  • CREATE TABLE:允许用户创建表
  • UNLIMITED TABLESPACE:解除表空间配额限制

授予系统权限示例:

GRANT CREATE SESSION, CREATE TABLE TO hr_admin;

2. 对象权限

对象权限控制用户对特定数据库对象的操作,如SELECT、INSERT、UPDATE等。授予对象权限需指定对象所有者:

-- 允许hr_admin查询scott用户的emp表
GRANT SELECT ON scott.emp TO hr_admin;

-- 允许hr_admin对自身表执行所有操作
GRANT ALL ON hr_admin.dept TO hr_admin;

3. 权限回收

使用REVOKE语句回收权限:

REVOKE CREATE TABLE FROM hr_admin;

四、角色管理

角色是权限的集合,通过将权限赋予角色,再将角色授予用户,可简化权限管理。

1. 预定义角色

Oracle提供多个预定义角色,常用角色包括:

  • CONNECT:包含CREATE SESSION等基本连接权限
  • RESOURCE:包含CREATE TABLE等资源创建权限
  • DBA:拥有全部系统权限(需谨慎授予)

授予预定义角色示例:

GRANT CONNECT, RESOURCE TO hr_admin;

2. 自定义角色

创建自定义角色并赋予权限:

-- 创建角色
CREATE ROLE hr_manager;

-- 向角色授予权限
GRANT SELECT, INSERT, UPDATE ON scott.emp TO hr_manager;
GRANT SELECT ON scott.dept TO hr_manager;

-- 将角色授予用户
GRANT hr_manager TO hr_admin;

3. 角色权限继承

角色可嵌套授予,形成权限层级关系。使用SET ROLE语句可临时激活或禁用角色:

-- 激活角色
SET ROLE hr_manager;

-- 禁用所有角色
SET ROLE NONE;

五、密码策略与安全

1. 密码复杂度要求

通过配置PROFILE限制密码规则:

-- 创建密码策略配置文件
CREATE PROFILE secure_profile LIMIT
  PASSWORD_LIFE_TIME 90       -- 密码有效期90天
  PASSWORD_REUSE_TIME 180     -- 密码重复使用限制
  PASSWORD_REUSE_MAX 5        -- 密码重复使用次数
  FAILED_LOGIN_ATTEMPTS 3     -- 允许失败登录次数
  PASSWORD_LOCK_TIME 1        -- 锁定时间(天)
  PASSWORD_VERIFY_FUNCTION verify_function; -- 密码验证函数

-- 将配置文件赋予用户
ALTER USER hr_admin PROFILE secure_profile;

2. 密码验证函数

自定义密码验证函数可强制实施复杂度规则(如长度、大小写混合、特殊字符等):

CREATE OR REPLACE FUNCTION verify_function (
  username VARCHAR2,
  password VARCHAR2,
  old_password VARCHAR2
) RETURN BOOLEAN IS
  min_length NUMBER := 8;
  max_length NUMBER := 30;
  alphanumeric EXCEPTION;
  PRAGMA EXCEPTION_INIT(alphanumeric, -20001);
BEGIN
  -- 检查密码长度
  IF LENGTH(password)  0 THEN
    RAISE_APPLICATION_ERROR(-20002, '密码不得包含用户名');
  END IF;
  
  RETURN TRUE;
EXCEPTION
  WHEN alphanumeric THEN
    RETURN FALSE;
END verify_function;
/

六、资源限制管理

通过PROFILE可限制用户资源使用,常见限制项包括:

  • CPU_PER_SESSION:会话期间CPU使用时间(百分之一秒)
  • LOGICAL_READS_PER_SESSION:会话期间逻辑I/O次数
  • PRIVATE_SGA:共享池中私有内存使用量

创建资源限制配置文件示例:

CREATE PROFILE resource_profile LIMIT
  SESSIONS_PER_USER 5          -- 最大并发会话数
  CPU_PER_SESSION 10000        -- 最大CPU时间(百分之一秒)
  CONNECT_TIME 60              -- 最大连接时间(分钟)
  IDLE_TIME 30                 -- 最大空闲时间(分钟)
;

七、用户审计与监控

1. 标准审计

启用对特定用户的审计:

-- 审计hr_admin的所有DML操作
AUDIT INSERT, UPDATE, DELETE BY hr_admin BY ACCESS;

-- 查看审计记录
SELECT * FROM DBA_AUDIT_TRAIL 
WHERE USERNAME = 'HR_ADMIN' 
ORDER BY TIMESTAMP DESC;

2. 细粒度审计(FGA)

对特定表的敏感列进行审计:

BEGIN
  DBMS_FGA.ADD_POLICY(
    object_schema => 'SCOTT',
    object_name => 'EMP',
    policy_name => 'SALARY_AUDIT',
    audit_condition => 'SAL > 10000',
    audit_column => 'SAL',
    enable => TRUE
  );
END;
/

八、企业级应用案例

案例:某大型企业Oracle数据库用户管理方案

1. 用户分类设计

  • 应用账户:供应用程序连接数据库(如ERP_APP)
  • 业务账户:供终端用户使用(如HR_CLERK)
  • 管理账户:供DBA团队使用(如SYS_ADMIN)

2. 权限分配策略

-- 创建应用角色
CREATE ROLE app_read_only;
GRANT SELECT ON HR.EMPLOYEES TO app_read_only;
GRANT SELECT ON HR.DEPARTMENTS TO app_read_only;

-- 创建业务角色
CREATE ROLE hr_data_entry;
GRANT INSERT, UPDATE ON HR.EMPLOYEES TO hr_data_entry;
GRANT SELECT ON HR.DEPARTMENTS TO hr_data_entry;

-- 创建管理角色
CREATE ROLE dba_monitor;
GRANT SELECT_CATALOG_ROLE TO dba_monitor;
GRANT EXECUTE ON DBMS_STATS TO dba_monitor;

3. 密码策略实施

-- 创建企业级密码策略
CREATE PROFILE enterprise_profile LIMIT
  PASSWORD_LIFE_TIME 60
  PASSWORD_GRACE_TIME 7
  PASSWORD_REUSE_MAX 10
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LOCK_TIME 1/24; -- 锁定1小时

-- 应用到所有非系统用户
BEGIN
  FOR u IN (SELECT username FROM dba_users 
            WHERE username NOT IN ('SYS','SYSTEM')) LOOP
    EXECUTE IMMEDIATE 'ALTER USER ' || u.username || 
                      ' PROFILE enterprise_profile';
  END LOOP;
END;
/

九、常见问题与解决方案

1. 用户被锁定

问题现象:ORA-28000: the account is locked

解决方案:

-- 解锁用户
ALTER USER hr_admin ACCOUNT UNLOCK;

-- 重置密码
ALTER USER hr_admin IDENTIFIED BY NewPass123;

2. 权限不足错误

问题现象:ORA-01031: insufficient privileges

排查步骤:

  • 检查当前有效权限:SELECT * FROM SESSION_PRIVS;
  • 检查用户直接权限:SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='HR_ADMIN';
  • 检查角色权限:SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='HR_ADMIN';

3. 表空间配额不足

问题现象:ORA-01653: unable to extend table

解决方案:

-- 增加用户配额
ALTER USER hr_admin QUOTA 200M ON users;

-- 或授予无限配额(谨慎使用)
ALTER USER hr_admin QUOTA UNLIMITED ON users;

十、最佳实践总结

1. 最小权限原则:仅授予用户完成工作所需的最低权限

2. 角色分层管理:通过角色组合实现权限的灵活分配

3. 定期审计:每月检查异常登录和权限变更

4. 密码轮换:每90天强制修改密码,禁止重复使用最近5次密码

5. 资源隔离:为不同业务系统分配独立表空间,防止资源争用

关键词:Oracle用户管理、权限控制、角色管理、密码策略、资源限制、数据库安全、审计监控、PROFILE配置、系统权限、对象权限

简介:本文系统阐述Oracle数据库用户管理的核心技术,涵盖用户创建与删除、权限分配机制、角色管理策略、密码安全策略、资源限制配置、审计监控方法等内容,结合企业级应用案例提供实践指导,帮助DBA实现安全的用户权限管理体系。

《Oracle学习笔记:用户管理.doc》
将本文以doc文档格式下载到电脑,方便收藏和打印
推荐度:
点击下载文档