Oracle Database :玩转Oracle学习笔记之(7):orcle角色(1)
来源:互联网 发布:httpclient json 编辑:程序博客网 时间:2024/06/05 18:47
角色:
1、角色介绍:角色就是相关权限的命令集合,是用角色的主要目的就是为了简化权限的管理,假定有用户a,b,c,为了然他们都拥有有链接数据库的权限和在scott.emp表上进行select,insert和update权限的话,采用直接授权的方式,则需要进行12次授权;
2、预定义角色:值Oracle所提供的角色,每种角色都用于执行一些特定的管理任务,下面介绍几种常见的预定义角色:connect , resource ,dba;
1)、connect:角色:
connect角色一般具有应用开发人员所需的大部分权限,比如:alter session;create cluster ; create database link ; create session; create table ; create view ; creata sequence;
2)、resource:具有应用开发所需的其他权限,比如建立存储过程、触发器等;这里注意的是resource角色隐含了unlimited tablespace系统权限;
3)、dba角色:具有所有的系统权限以及with admin oprion选项,默认的dba用户是sys和system,他们可以将然和系统权限授予其他用户,但是要足以的是dba角色不具备sysdba和sysoper的特权(启动和关闭数据库);
3、自定义角色:根据自己的需要来定义角色,一般是dba来建立,如果是别的用户建立,则要求用户具有create role的系统权限,在建立角色是可以指定验证方式(不验证、数据库验证等);
1)、建立角色(不验证);
如果角色是公共角色,可以采用不验证的方式建立角色;
create role roleName not identified;
2)、建立角色(数据库验证);
采用这样的方式,角色名,口令存放在数据库中,当激活该角色是,必须提供口令,在建立这种角色是需要为其提供口令;
4、角色授权:当建立角色时候,角色灭有任何权限,为了使得角色完成特定任务,必须为其授予相应的系统权限和对象权限;
1)、给角色授权:给角色授予权限和给用户授予权限没有多大区别,但是要注意,系统权限的unlimited tablespace和对象权限的with grant option是不能被授予的;
2)、分配角色给某个用户:
一般分配时候dba来完成的,如果是其他用户身份分配角色,则要求该用户具有grant any role的系统权限;
5、删除角色:
使用drop role 命令,一般是由dba来执行的,如果其他用户,则要求该用户具有drop any role的系统权限;
这里就要考虑一个问题了:
一旦myrole1给删除了的话,那么myuser还具有myrole所具有的权限呢?
通过实验,说明,当删除myrole1的时候,myuser所具有的权限也被删除了;
6、显示角色信息:
1)、显示所有信息:
2)、显示角色所具有的系统权限;
3)、显示角色所具有的对象权限;
通过查询数据字典dba_tab_privs可以查看角色具有的对象权限或者是列权限;
4)、显示用户具有的角色以及默认角色;
当以用户的身份连接到数据库时候,oracle会自动激活默认的角色,通过查询数据字典dba_role_privs可以显示某个用户所具有的角色以及当前默认的角色;
7、精细访问控制:
是指用户可以使用函数。策略实现更加细微的安全访问控制,如果使用精细访问控制,则当在客户端发出sql语句(select , insert , update,delete)时候,oracle会自动在sql语句后追加谓词(where子句),并执行新的sql语句,通过这样的控制,可以使得不同的数据库用户访问相同的表示,返回不同的数据库信息;
比如:三个用户:scott , blake , jones
策略:emp_access;
数据库表:emp;
通过策略emp_access,用户scott , blake , jones在执行相同的sql语句时候,可以返回不同的结果,例如,执行select ename from emp时候,根据实际情况可以返回不同的结果;
1、角色介绍:角色就是相关权限的命令集合,是用角色的主要目的就是为了简化权限的管理,假定有用户a,b,c,为了然他们都拥有有链接数据库的权限和在scott.emp表上进行select,insert和update权限的话,采用直接授权的方式,则需要进行12次授权;
2、预定义角色:值Oracle所提供的角色,每种角色都用于执行一些特定的管理任务,下面介绍几种常见的预定义角色:connect , resource ,dba;
1)、connect:角色:
connect角色一般具有应用开发人员所需的大部分权限,比如:alter session;create cluster ; create database link ; create session; create table ; create view ; creata sequence;
2)、resource:具有应用开发所需的其他权限,比如建立存储过程、触发器等;这里注意的是resource角色隐含了unlimited tablespace系统权限;
create cluster;create indextype;create table;create sequece;create type;create procedure;create trigger;
3)、dba角色:具有所有的系统权限以及with admin oprion选项,默认的dba用户是sys和system,他们可以将然和系统权限授予其他用户,但是要足以的是dba角色不具备sysdba和sysoper的特权(启动和关闭数据库);
3、自定义角色:根据自己的需要来定义角色,一般是dba来建立,如果是别的用户建立,则要求用户具有create role的系统权限,在建立角色是可以指定验证方式(不验证、数据库验证等);
1)、建立角色(不验证);
如果角色是公共角色,可以采用不验证的方式建立角色;
create role roleName not identified;
SQL> create role myrole1 not identified;Role created.
2)、建立角色(数据库验证);
采用这样的方式,角色名,口令存放在数据库中,当激活该角色是,必须提供口令,在建立这种角色是需要为其提供口令;
create role roleName identified by S123;
4、角色授权:当建立角色时候,角色灭有任何权限,为了使得角色完成特定任务,必须为其授予相应的系统权限和对象权限;
1)、给角色授权:给角色授予权限和给用户授予权限没有多大区别,但是要注意,系统权限的unlimited tablespace和对象权限的with grant option是不能被授予的;
SQL> grant create session to myrole1 with admin option;Grant succeeded.SQL> conn scott/Spongcer123;Connected.SQL> show user;USER is "SCOTT"SQL> grant select on emp to myrole1;Grant succeeded.SQL> grant update , delete on emp to myrole1;Grant succeeded.
2)、分配角色给某个用户:
一般分配时候dba来完成的,如果是其他用户身份分配角色,则要求该用户具有grant any role的系统权限;
SQL> conn system/Spongcer123;Connected.SQL> create user myuser identified by Spongcer123;User created.SQL> grant myrole1 to myuser 【with admin option】;(如果有with admin option的话,说明myuser可以将system分配各他的角色myrole1在分配各别的用户;)Grant succeeded.SQL> conn myuser/Spongcer123;Connected.SQL> select * from scott.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 1014 rows selected.
5、删除角色:
使用drop role 命令,一般是由dba来执行的,如果其他用户,则要求该用户具有drop any role的系统权限;
这里就要考虑一个问题了:
一旦myrole1给删除了的话,那么myuser还具有myrole所具有的权限呢?
SQL> drop role myrole1;Role dropped.SQL> conn myuser/Spongcer123;ERROR:ORA-01045: user MYUSER lacks CREATE SESSION privilege; logon deniedWarning: You are no longer connected to ORACLE.
通过实验,说明,当删除myrole1的时候,myuser所具有的权限也被删除了;
6、显示角色信息:
1)、显示所有信息:
SQL> conn system/Spongcer123;Connected.SQL> select * from dba_roles;
2)、显示角色所具有的系统权限;
SQL> select privilege , admin_option from role_sys_privs where role='DBA';
3)、显示角色所具有的对象权限;
通过查询数据字典dba_tab_privs可以查看角色具有的对象权限或者是列权限;
4)、显示用户具有的角色以及默认角色;
当以用户的身份连接到数据库时候,oracle会自动激活默认的角色,通过查询数据字典dba_role_privs可以显示某个用户所具有的角色以及当前默认的角色;
SQL> desc dba_role_privs; Name Null? Type ----------------------- -------- ---------------- GRANTEE VARCHAR2(30) GRANTED_ROLE NOT NULL VARCHAR2(30) ADMIN_OPTION VARCHAR2(3) DEFAULT_ROLE VARCHAR2(3)SQL> select granted_role , default_role from dba_role_privs where grantee='SCOTT';GRANTED_ROLE DEF------------------------------ ---RESOURCE YESCONNECT YES
7、精细访问控制:
是指用户可以使用函数。策略实现更加细微的安全访问控制,如果使用精细访问控制,则当在客户端发出sql语句(select , insert , update,delete)时候,oracle会自动在sql语句后追加谓词(where子句),并执行新的sql语句,通过这样的控制,可以使得不同的数据库用户访问相同的表示,返回不同的数据库信息;
比如:三个用户:scott , blake , jones
策略:emp_access;
数据库表:emp;
通过策略emp_access,用户scott , blake , jones在执行相同的sql语句时候,可以返回不同的结果,例如,执行select ename from emp时候,根据实际情况可以返回不同的结果;
- Oracle Database :玩转Oracle学习笔记之(7):orcle角色(1)
- Oracle Database :玩转Oracle学习笔记之(19):orcle角色(2)
- Oracle Database :玩转Oracle学习笔记之(18):Orcle权限
- Oracle Database :玩转Oracle学习笔记之(2):在Oracle中操纵数据
- Oracle Database :玩转Oracle学习笔记之(20):Oracle远程连接以及连接命令
- Oracle Database :玩转Oracle学习笔记之(21):Oracle用户和用户管理
- Oracle Database :玩转Oracle学习笔记之(22):Oracle选择
- Oracle Database :玩转Oracle学习笔记之(23):Oracle数据库管理--导入及导出
- Oracle Database :玩转Oracle学习笔记之(24):Oracle视图
- Oracle Database :玩转Oracle学习笔记之(25):Oracle事务
- Oracle Database :玩转Oracle学习笔记之(26):Oracle命令
- Oracle Database :玩转Oracle学习笔记之(27):Oracle函数
- Oracle Database :玩转Oracle学习笔记之(28):Oracle表空间和数据文件
- Oracle Database :玩转Oracle学习笔记之(29):Oracle表管理
- Oracle Database :玩转Oracle学习笔记之(3):维护数据的完整性
- Oracle Database :玩转Oracle学习笔记之(4):索引
- Oracle Database :玩转Oracle学习笔记之(5):数据对象
- Oracle Database :玩转Oracle学习笔记之(6):权限
- Oracle Database :玩转Oracle学习笔记之(6):权限
- hdu 3496 Watch The Movie
- 3 ways to install git on linux ubuntu
- .net Framework与C#概念
- java中this的用法
- Oracle Database :玩转Oracle学习笔记之(7):orcle角色(1)
- 魔术师发牌问题和拉丁方阵
- 支配值数目
- nginx虚拟主机解决企业内外网访问
- 第13周项目一-理解基类中成员的访问限定符和派生类的继承方式
- xml解析相关
- 优化C#访问网络时的效率问题
- 整天玩手机的人一定要看,不看一定后悔!
- hdoj_2019 数列有序!