权限管理是Oracle实现安全管理的一部分。通过授予不同用户的系统权限与对象权限,可以控制用户对 系统功能的数据库对象的操作 oracle权限可分为三种:系统权限,对象权限,角色权限
(1)、系统权限: 是指在系统级控制数据库的存取和使用的机制,即执行某种SQL语句的能力。例如启动/停止数据库,修 改数据库参数,连接数据库等权限。-----系统权限是针对于用户设置的,用户必须被授予相应的系统权 限,才能连接到数据库中进行想要的操作。
ps: 系统权限很多,此处说一下常见的权限,其余的自行百度
CREATE SESSION------连接数据库
CREATE TABLESPACE -----创建表空间
ALTER TABLESPACE ----修改表空间
DROP TABLESPACE -----删除表空间
CREATE USER ----- 创建用户
DROP USER ----- 修改用户
CREATE TABLE ----- 创建表
语句: grant 系统权限1,系统权限2 ... to 用户 --- 赋予
revoke 系统权限1,系统全选2 ... from 用户 --- 收回
(2)、对象权限: 是指用户对数据库对象的操作权限。数据库对象包括表,视图,序列和存储过程等。Oracle的对象权限 包括ALTER【更改】,DELETE【删除】,EXECUTE【执行】,INDEX【索引】,INSERT【添加】, SELECT【查询】和UPDATE【刷新】。这些对象权限适用于不同的对象。
--- 表权限【用于赋予对其他用户【不同表空间下的】表操作的权限】
grant 权限1,权限2 on 用户B.表名 to 用户A;--- 赋予用户A户用于对于用户Bxxx表的xxx权限 revoke 权限1,权限2 on 用户B.表名 from 用户A; --- 收回用户A用于对于用户Bxxx表的xxx权限
--- 针对所有表 :针对所有用户,所有表的
grant 权限1,权限2 any table to 用户名; 赋予 xxx 用户对于任意表xxx权限 revoke 权限1,权限2 any table from 用户; -- 收回 xxx 用户对于任意表xxx权限
--- 表空间权限: 新建的用户针对自己所属表空间的对象默认是无权操作的,想要操作就要使用下列指令赋 予其对于自己所属表空间对象的操作权限
grant unlimited tablespace to 用户名; --- 给用户授予全部的表空间的权限 revoke unlimited tablespace from 用户名; --- 收回户授予全部的表空间的权限
(3)、角色权限: 角色是可以授予用户的相关权限的组,该方法使权限的授予,撤回更加容易管理
常用角色【内置角色】:
connect ----- 登陆权限 resource ----- 开发人员权限 dba ----- 管理员权限[全部权限] 语法: grant 角色名称1,角色名称2 to 用户;
(4)、权限传递 ps:这个用于给其他账户赋权的,只有允许的传递的权限才可以赋予其他账户,只有系统权限和对象权 限可以设置权限传递
权限传递有两种方式with admin option 和 with grant option,这两种方式的特点是 with admin option: 用户A可以将拥有权限赋予用户B,如果用户A的该权限被收回了,用户B是不会受到 影响,该方式用于系统权限 with grant option:用户A可以将拥有权限赋予用户B,如果用户A的该权限被收回了,用户B也会被收回, 该方式用于对象权限
with admin option:
ps:用户A可以将拥有权限赋予用户B,如果用户A的该权限被收回了,用户B是不会受到影响,该方式 用于系统权限
1、新建两个用户 create user tim1 identified by "tim1" default tablespace test_ts; create user tim2 identified by "tim2" default tablespace test_ts; 2、system用户赋予权限create session 给tim1用户 grant create session to tim1 with admin option; 3、切换用户至tim1,然后tim1用户赋予权限create session 给tim2用户; grant create session to tim2 ; 4、此时tim1和tim2都可以登录,然后system用户回收tim1的create session权限,tim1肯定不能登 录,但是tim2还是可以登录的。 revoke create session from tim1;
with grant option:
ps:用户A可以将拥有权限赋予用户B,如果用户A的该权限被收回了,用户B也会被收回,该方式用于 对象权限
1、scott用户赋予select权限给tim1 grant select on scott.emp to tim1 with grant option; 2、切换用户至tim1,然后tim1用户赋予权限给tim2用户; grant select on scott.emp to tim2; 3、scott用户回收tim1用户的select权限,tim1没有对scott.emp查询的权限,tim2用户也会消失掉对 scott.emp表的查询权限 revoke select on scott.emp from tim1;
(5)、角色定义 角色在oracle中是一组权限的结合体,角色中可以包含很多权限。当把角色赋予用户时,用户就可以具 有角色内的所有权限。Oracle中角色分为两类
系统预定义角色
connect ----- 登陆权限 resource ----- 开发人员权限 dba ----- 管理员权限
管理员自建角色
1、创建角色语法:create role 角色名; 2、给角色授权:grant 权限 to 角色名; ps:角色与角色之间也可以互相授权。例如:grant resource,dba to r1 3、把权限从角色中移除:revoke 权限 from 角色名; 4、删除角色:drop role 角色名;
(6)、profile口令文件
ps:对账户进行高级管理【有效期,密码重复次数...】
账户锁定
create profile 口令名称 limit 参数
下面这些limit的可选参数: password_life_time (天/unlimited[无限]) ---- 有效天数 password_grace_time (天) --- 宽限天数 failed_login_attempts 次数 --- 输入错误多少次 password_lock_time (天); --- 锁定几天
赋予用户口令
alter user 用户名 profile 口令;
用户解锁
alter user 用户名 account unlock;
用户锁定
alter user 用户名 account lock;
删除口令
drop profile 口令名称 cascade;
修改口令
alter profile 口令名 limit 口令限制代码;