本文于 5 天前发布,最后更新于 5 天前
一、用户管理
用户是操作者的一个身份。DM 预定义用户:
- SYS:系统内置用户,不能直接登录。
- SYSDBA:数据库管理员,拥有 DBA 角色。
- SYSAUDITOR:数据库审计管理员。
- SYSSSO:数据库安全管理员,拥有强制访问控制等权限。
- SYSDBO:安全版本才有此用户,对象操作员。
PWD_POLICY 系统口令策略:
- 0 无限制。但总长度不得超过 48 个字节
- 1 禁止与用户名相同
- 2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
- 4 至少包含一个大写字母(A-Z)
- 8 至少包含一个数字( 0 – 9)
- 16 至少包含一个标点符号(英文输入法状态下,除”和空格外的所有符号)
口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口令策略为 2+4=6 即可。
案例
(1)指定系统口令策略:包含大写字母,包含数字,长度大于 9。
SELECT * FROM V$DM_INI WHERE PARA_NAME = 'PWD_MIN_LEN';
INI 参数 PWD_MIN_LEN 默认即 9。
所以只需要设置 PWD_POLICY=2+4+8=14 即可
SP_SET_PARA_VALUE(1, 'PWD_POLICY', 14);
--或者
ALTER SYSTEM SET 'PWD_POLICY'=14 BOTH;
(2)创建用户时指定密码策略。
CREATE USER "XXX" IDENTIFIED BY "XXXXXXXXX" PASSWORD_POLICY 2 DEFAULT TABLESPACE "TBS" DEFAULT INDEX TABLESPACE "TBS";
(3)创建/解除PROFILE管理用户资源限制
CREATE PROFILE "PROFILE-TEST" LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3, SESSION_PER_USER 10;
ALTER USER "TEST" PROFILE "PROFILE-TEST";
配置后TEST用户资源限制即PROFILEZ中的资源限制。
解除PROFILE资源限制,改为默认;并删除PROFILE文件。
ALTER USER "TEST" PROFILE DEFAULT;
DROP PROFILE "PROFILE-TEST";
(4)用户的锁定与解锁
ALTER USER "TEST" ACCOUNT LOCK;
ALTER USER "TEST" ACCOUNT UNLOCK;
(5)直接使用LIMIT子句限制用户资源
ALTER USER "TEST" LIMIT FAILED_LOGIN_ATTEMPS 4, PASSWORD_LOCK_TIME 2, SESSION_PER_USER 5;
(6)查询用户的资源限制
SELECT D.USERNAME "用户名" ,
D.ACCOUNT_STATUS "账号状态" ,
D.DEFAULT_TABLESPACE "表空间" ,
S.SESS_PER_USER "会话限制" ,
S.CONN_IDLE_TIME "用户会话的最大空闲时间",
S.FAILED_NUM "尝试登录次数" ,
S.LIFE_TIME "口令有效期" ,
S.LOCK_TIME "锁定时间" ,
S.PWD_POLICY "密码策略",
S.ALLOW_ADDR "允许的IP地址",
S.NOT_ALLOW_ADDR "不允许的IP地址"
FROM DBA_USERS D
JOIN SYSUSERS S
ON D.USER_ID=S.ID;
(7)删除用户
DROP USER IF EXISTS "TEST";
DROP USER IF EXISTS "TEST" CASCADE;--级联删除
二、权限管理
权限包含:系统权限和对象权限。
系统默认角色
- VTI:系统动态视图(V$开头)的查询权限
- SOI:系统表(SYS开头的表)的查询权限
- SVI:新版新增
案例
(1)赋予创建表、创建索引、创建视图的权限
GRANT CREATE TABLE, CREATE INDEX, CREATE VIEW TO "TEST";
(2)注意:在赋予更新或删除某个表数据权限时,如果该用户没有对应表的查询权限,那么在赋予权限后,执行UPDATE或者DELETE会报错。
GRANT UPDATE, DELETE ON DMHR.EMPLOYEE TO "TEST";
[dmdba@centos-dm bin]$ ./disql TEST/dameng123:5236
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 10.383(ms)
disql V8
SQL> DELETE FROM DMHR.EMPLOYEE WHERE EMPNO='3333';
DELETE FROM TEST.EMPLOYEES WHERE EMPNO='3333';
[-5504]:没有[EMPLOYEE]对象的查询权限.
已用时间: 1.292(毫秒). 执行号:0.
三、角色管理
- 角色是一组权限的集合。
- 角色使权限管理更加方便。
- 依赖于业务需要。
- 创建角色赋予用户才有意义。
创建角色
CREATE ROLE "XXX";
角色可以禁用,默认创建后是启用状态,一旦角色禁用,则其权限将不再生效。
案例
(1)创建角色并赋予TEST用户
CREATE ROLE "ROLEDM";
GRANT SELECT ON TEST.DEPARTMENTS TO "ROLEDM";
GRANT SELECT ON DMHR.DEPARTMENTS TO "ROLEDM";
GRANT "ROLEDM" TO "TEST";
(2)角色禁用
SELECT * FROM V$IFUN WHERE NAME LIKE '%ROLE%';
--查看角色相关的方法,可知禁用角色的方法为SP_SET_ROLE,0 为禁用,1 为启用。
--例如
SP_SET_ROLE('ROLEDM', 0);
(3)查看用户所拥有的角色
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = '用户名';
SELECT * FROM USER_ROLE_PRIVS; --查询当前用户角色
四、相关数据字典
- DBA_USERS
- DBA_PROFILES
- SYSUSERS
- DBA_ROLE_PRIVS
- USER_ROLE_PRIVS
- V$IFUN