拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. Oracle基础知识
  3. LLL的Oracle培训
  4. 正文

LLL的数据库培训-23-第二部分—Oracle基础知识培训—第15讲—角色管理

2022年1月11日 977点热度 1人点赞 0条评论

目录

  • 一、为什么要引入角色?
    • 1、为什么要引入角色
    • 2、什么是角色?  
    • 3、使用角色来管理权限的好处
      • (1)权限管理较容易
      • (2)可以提高系统的效率:
      • (3)可以通过操作系统授权:
  • 二、角色的使用
    • 1、预定义角色。
      • (1)connect自动建立,包含以下权限:
      • (2)resource自动建立,包含以下权限:
      • (3)dba (数据库管理员角色)
    • 2、显示角色信息的视图
      • (1)确定角色的权限【所有用户查】
      • (2)确定角色的权限【sys用户查】
      • (3)确定当前用户的权限【所有用户查】
      • (4)用户信息
      • (5)用户空间配额
      • (6)查看所有用户role
  • 三、角色的创建与管理
    • 1、角色的创建
    • 2、语法:
      • (1)角色名唯一
      • (2)不支持with grant option的情况
      • (3)支持with admin option的情况
      • (4)enterprise manager功能
      • (5)identified by password:
      • (6)identified by externally:
    • 3、给角色授系统权限和对象权限
      • (1)创建角色
      • (2)授系统权限
      • (3)授对象权限
      • (4)检查系统/对象权限
    • 4、角色授权给用户
    • 5、检查角色授权信息
    • 6、取消角色/删除角色
    • (1)取消角色
    • (2)删除角色
    • 7、授权用户给默认的角色
    • 8、授权角色排除法(或称为角色禁用)
    • 9、激活和禁止角色
      • (1)禁用角色
      • (2)激活角色
      • (3)关于connect和resource预定义角色:
    • 10、给角色加密码,并进行调用:
    • 11、常用角色

LLL的数据库培训—第二部分—Oracle基础知识培训—第15讲—角色管理

一、为什么要引入角色?

1、为什么要引入角色

假设现在正在管理一个有1000个用户的大型系统,而且这些用户是陆续建立的,每个用户需要20小系统权限。为了简化问题,进一步假设所有的用户都需要完全一样的系统权限。

如果将这20种系统权限分别授予这1000个用户,所有的系统权限使用数将达到20×1000=20000次。

另外,如果使用的系统权限需要修改,其修改量也是惊人的。

为了解决这一难题, Oracle引入了角色。

2、什么是角色?  

(1)角色是一组命名的相关权限,权限可以通过这个名字授予用户或其他的角色。

(2)但是一个角色不能授予自己,也不能循环授予。

(3)角色既可以包括系统权限,也可以包括对象权限。

(4)每一个角色在系统中必须是唯一的,即不能与任何有的用户名和角色名重名,而且角色不属于任何用户,也不存在于任何用户模式中。

(5)角色的描述存放在数据字典中。

3、使用角色来管理权限的好处

(1)权限管理较容易

通过使用角色会使授予和回收系统权限的维护工作简单许多。

如上面的例子现在就可以通过角色来对用户授权。可以先将20种系统权限都授予一个角色,之后再把这个角色赋予这1000个用户。

这样,所有的系统权限使用的次数就将变为20+1000=1020次动态的权限管理:通过使用角色,如果用户使用的系统权限需要增加或减少,其工作量也会明显下降。

(2)可以提高系统的效率:

无论是使用直接授权还是通过角色授权,最终有关用户权限的信息都要记录到数据字典中(磁盘上)。

直接授权:直接把对对象访问的权限赋予用户;

角色授权:把对方访问的权限统一赋予给角色,再把此角色赋予给用户

这里继续使用前面的例子,如果使用的是直接授权法,记录到数据字典中(磁盘上)的有关用户权限的信息为20000项。

而当使用的是通过角色授权的方法时,记录到数据字典中(磁盘上)的有关用户权限的信息就只有1020项。

磁盘上的数据少了,查询时的IO也就少了,因此 Oracle服务器查询数据字典的速度也就会加快很多。换句话说,就是提高了系统的效率。

(3)可以通过操作系统授权:

可以使用操作系统命令或应用程序将角色赋予数据库中的用户。

这一点对开发应用系统很有用可以有选择地使用权限:可以通过激活或禁止命令来临时地开启或关闭角色的功能。

二、角色的使用

1、预定义角色。

(1)connect自动建立,包含以下权限:

alter session
create cluster
create databaselink
create sequence
create session
create synonym
create table
create view

(2)resource自动建立,包含以下权限:

create cluster
create procedure
create sequence
create table
create triggr

(3)dba (数据库管理员角色)

dba role拥有所有的系统权限,包括无限制的空间限额和给其他用户授予各种权限的能力。system就拥有dba角色。

2、显示角色信息的视图

(1)确定角色的权限【所有用户查】

select * from role_tab_privs;              包含了授予角色的对象权限【即,授权表或其他对象出去的用户的信息。如将llltest4的表的select权限授权给角色lll_role4,并将111_role4授权给用户test4,那么此句可以查出llltest4的信息,而非test4的信息】
select * from role_role_privs;             包含了授予另一角色的角色【】
select * from role_sys_privs ;             包含了授予角色的系统权限【当前查询用户的拥有的系统权限】

(2)确定角色的权限【sys用户查】

select * from DBA_tab_privs;               直接授予用户帐户的对象权限【针对所有表、视图等的权限的授予,40000多条】
select * from DBA_role_privs;              授予用户帐户的角色【针对所有用户所有分配的角色明细,140多条】
select * from DBA_sys_privs;               授予用户帐户的系统权限【700多条】

(3)确定当前用户的权限【所有用户查】

select * from user_tab_privs; 
select * from user_role_privs;
select * from user_sys_privs;

(4)用户信息

select * from user_users; 
select * from dba_users;
select * from all_users;

(5)用户空间配额

select * from user_ts_quotas;
select * from dba_ts_quotas;

(6)查看所有用户role

select * from dba_roles;
select  * from session_roles;

三、角色的创建与管理

1、角色的创建

 除了前面讲到的三种系统角色----connect、 resource和dba,用户还可以在oracle创建自己的role。
 用户创建的role可以由表或系统权限或两者的组合构成。
 为了创建role,用户必须具有create role系统权限。

2、语法:

create role role_name [not identified(默认)|identified by password|externally|globally];

注:

(1)角色名唯一

同一个数据库中角色名称必须唯一,且不能使用已存在的用户名称;

(2)不支持with grant option的情况

给角色授予对象权限时,不支持with grant option 为角色授予对象权限;

(3)支持with admin option的情况

给角色授予系统权限时,支持with admin option 为角色授予系统权限或授予另一个角色;

  首先,对test4用户执行,grant create table to lll_role4 with admin option;同样可以使用grant lll_role4 to test4 with admin option;
  此时,test4拥有lll_role4且可以grant,
  此时,可以执行这个语句授权角色给llltest,SQL> grant lll_role4 to llltest;
  此时,llltest拥有lll_role4
  最后,如果revoke lll_role4 from test4,llltest中仍然有lll_role4的角色。

(4)enterprise manager功能

使用enterprise manager创建某个用户时,该用户被自动授予了connect角色,即同时具有了该角色的所有权限。

(5)identified by password:

给角色设置密码。

(6)identified by externally:

代表启用了一个角色,用户必须是某个操作系统组的一个成员,改操作系统组的名称应当与角色相对应。当希望通过操作系统对角色进行身份认证,则需要设置os_role参数为true。

3、给角色授系统权限和对象权限

(1)创建角色

sys/system
create role lll_role;
select role,password_required from dba_roles where role='LLL_ROLE';

(2)授系统权限

grant create table,create view ,create session to lll_role with admin option;

(3)授对象权限

grant select,insert,update on llltest.test to lll_role;

(4)检查系统/对象权限

select * from role_sys_privs where role='LLL_ROLE';  --查看角色拥有的系统权限
select * from role_tab_privs where role='LLL_ROLE';  --查看角色拥有的对象权限

4、角色授权给用户

grant lll_role to lll;
grant lll_role to lll with admin option;

5、检查角色授权信息

select * from dba_role_privs where granted_role='LLL_ROLE';
select * from user_role_privs;
select * from session_roles;

6、取消角色/删除角色

(1)取消角色

revoke lll_role from llltest;

(2)删除角色

drop role lll_role;

7、授权用户给默认的角色

grant resource,connect to llltest;
grant dba to llltest;

8、授权角色排除法(或称为角色禁用)

alter user llltest default role all except dba;--这个好像不太好用

通过上述操作,用户llltest对dba的default role值是NO状态,也就是未激活状态,无法使用。用户必须执行sql>set role dba,才可以启动此角色;

select * from dba_role_privs where grantee='LLLTEST';

9、激活和禁止角色

(1)禁用角色

set role none;

(2)激活角色

set role all;
set role connect;

(3)关于connect和resource预定义角色:

resource具有创建表,索引,视图和其他的oracle对象的能力,同时默认带有unlimited tablespace权限
connect授予所有的普通用户;
connect和resource授予开发人员;
oracle声称connect和resource角色是为了与它早期的版兼容而保留的,尽可能不要使用这两个角色,以避免产生安全漏洞。

10、给角色加密码,并进行调用:

create role lll_role2 identified by 123;                               ----创建角色
grant select,insert,update on llltest11.test to lll_role2;             ----给角色分配权限
create user test3 identified by test3;                                 -----创建新用户
grant lll_role2 to test3;                                              ---分配角色给新用户
conn test3/teset;                                                      ---新用户登录

set role lll_role2 identified by 123;                                  ----输入角色密码(每次登录,需要重新设置一次才可以。不设置则提示此视图或表不存在)
select * from llltest11.test;                                          ----查询表

11、常用角色

角色 被授予的权限
dba 几乎所有系统权限
select_catalog_role 数据字典上的对象权限,未被授予任何系统权限
execute_catalog_role 数据字典上的程序包、过程、函数的对象权限
delete_ctalog_role delete on sys.aud$    delete on sys.fga_log$
exp_full_database 从数据库中导出数据时查询任何表或序列、执行任何过程或类型以及修改数据字典对象的权限
imp_full_database 执行导入时,在数据库除了sys模式之外的热河模式中创建对象的权限
connect alter session
create cluster
create database link
create sequence
create session
create synonym
createa table
create view

 

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2022年8月26日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号