oracle---角色和权限,补充

来源:互联网 发布:严歌苓 知乎 编辑:程序博客网 时间:2024/05/01 01:55
管理权限和角色,oracle数据库的权限很多,可以细致到表的某一列的操作权限,如果每个权限取管理是很繁杂的。所以角色是权限的集合,会有一些权限经常会被调用,可以把使用这些权限的角色提取出来。角色分为预定义角色和自定义角色。
授予系统权限
grant create session,create table to ken with admin option;授予了ken同学2个系统权限,并且允许他向下分发(with admin option)
grant create view to ken;
回收系统权限
一般回收是由dba完成。
其他用户回收系统权限,要求该用户必须具有相应系统权限及转授系统权限的选项。
使用revoke,系统权限不是级联回收的。如果a授权给b,b又授权给c。如果a收回了b的权限,则c的权限不受影响
revoke create session from ken;


对象权限,指用户访问其他方案对象的权利,用户可以直接访问自己方案的对象。
常用的有
alter修改表结构 delete删除 select查询     insert添加
update修改内容  index索引  references引用 execute执行
显示对象权限
数据字典视图dba_tab_privs
conn system/Hy820930;
select grantor ,owner ,table_name,privilege from dba_tab_privs where granteee='BLAKE';
授予对象权限
由对象的所有者完成,oracle9以后dba用户可以授予
对象权限可以授予用户、角色、public。with grant option 则可以分发。但是角色不能被授予分发权限
grant select on emp to scott;
grant select on emp(sal) to scott; 意思是只能查询emp表的sal字段
grant all on emp to monkey;把emp上的所有权限都赋予
使用revoke,对象权限是级联回收的。如果a授权给b,b又授权给c。如果a收回了b的权限,则c的权限无法使用。
这点和系统权限不同,需要注意。


角色
是权限的集合
分为自定义角色和预定义角色
常用的预定义角色 connect ,resource ,dba


dba角色
具有所有的系统权限,及with admin option权限,默认的dba用户为sys和system,但要注意的是dba角色不具备sysdba和sysoper的特权(启动和关闭数据库)


自定义角色
一般是dba创建,如果是普通用户创建,需要create_role的系统权限。
建立角色时可以指定验证方式(不验证,数据库验证等)
1.不验证建立角色,如果是公用的角色可以不验证
create role 角色名称 not identified;
2.数据库验证建立角色,需要为其提供密码口令,激活时需要口令
create role 角色名称 identified by 密码口令;
角色授权
conn system/Hy820930;
grant create session to 角色名 with admin option;
conn scott/Hy820930;
grant select on emp to 角色名;
grant insert on emp to 角色名;
grant update on emp to 角色名;
grant delete on emp to 角色名;


删除角色,一般dba执行
其他人执行需要 drop_any_role系统权限;
drop role 角色名;


显示角色信息
1.显示所有角色
select * from dba_roles;
2.显示角色拥有的系统权限
select privilege ,admin_option from role_sys_privs where role='角色名';
3.显示角色具有的对象权限
通过数据字典视图 dba_tab_privs可以查看
4.显示用户具有的角色,及默认角色
通过查询数据字典视图dba_role_privs可以显示某个用户具有的所有角色及当前默认的角色
select granted_role ,default_role from dba_role_privs where grantee='用户名';


精细访问控制
可以根据访问用户的不同,返回不同的信息,把用户的sql语句,系统加上where子句
0 0