Oracle中权限体系及RBAC模型介绍

上图

在这里插入图片描述
Normal(普通用户),SYSDBA(系统管理员),SYSOPER(系统操作员),三种角色。

1、三种角色有什么不一样。

2、sys用户和system用户有什么区别。

3、dba角色和sysdba角色有什么区别。

4、如何查看一个用户有哪些权限。

5、Oracle的权限体系是怎样的。

Oracle内置用户

我们知道Oracle内置了几个用户:

scott

四张表,演示了一个很简单的公司人力资源管理的数据结构。

hr

七张表,演示一个面试hr的库结构。

system
本地管理员,一般我们使用该用户进行Oracle的管理。

sys
系统管理员,拥有最高级别的权限,没有任何人的权限可以高于他。

在这四个用户中,我们需要注意一点:

system与sys用户的区别。

system只有dba权限,没有sysdba和sysoper,只能使用normal登录。

sys用户有dba,sysdba,sysoper权限,登录的时候可以使用sysdba,sysoper进行登录,不可以使用normal登录,干啥啥都行,权限第一名。

登录页面三种角色区别

nomal
普通人,每个人基本上都是这个。

sysdba
数据库管理者。

sysoper

数据库操作人员,主要用来启动、关闭数据库。

sysdba与sysoper的区别

两种区别不算大,这两个都是sys用户才能登陆的。

功能上边的区别,我复制一下官方的,不是太清楚哈,不过没关系,这个不重要,把这个图略过,往下看吧。

在这里插入图片描述

SYSDBA和SYSOPER系统权限允许我们在数据库打开之前以这两种身份去访问实例。在使用Oracle的过程中,这两种系统权限不可以随便授予,原因如下:

注意:show user命令不要在PLSQL里执行,这个是sql*plus的命令。

我给jack赋予两种权限。

SQL> conn jack/jack as sysoper;
已连接。
SQL> show user
USER"PUBLIC"
SQL> conn jack/jack as sysdba
已连接。
SQL> show user
USER"SYS"

我们可以看到,明明用户是jack,为什么使用使用不同身份连接show user命令出来的结果却是"SYS"和"PUBLIC",正常来说应该是"JACK"。

当你给普通用户这两种系统权限后,这个普通用户已经不是这个普通用户了,他已经不再是他了,oh,baby,Jack!变身奥特曼,可以打小怪兽了。

在这里插入图片描述

dba角色与sysdba角色的区别。

往下看,可以看到几个常用命令,可以做一个小测试。

大家有没有碰到这种情况,并发出疑惑:

当我赋予system,给他sysdba权限的时候,使用命令进行查看system所拥有的角色,我们并不能看到sysdba这个角色,只能看到dba,可是我确确实实授予他sysdba权限了,为什么我查不到?

sysdba这个角色是一个抽象的概念,不存在与Oracle数据库中,它不是一个数据,仅仅作用于登录页面,用于管理Oracle实例,不需要数据库完全启动成功生效,只要Oracle实例是启动的,它就存在。dba角色依赖于数据库启动,在数据库启动后生效。

系统权限和对象权限

Oracle由两种权限组成了它的权限体系,就是RBAC,将权限分配给角色,再将角色分配给具体用户,这样多表联查,就可以给这个用户赋予多个权限。Oracle中的角色就是权限的集合体,
系统权限和对象权限,是比较容易记忆的,因为两种权限都具有较强的针对性。

系统权限是整体上说,对象权限比较细,非常细,比如查看一张表。

可以理解为系统权限包括大于对象权限。

该命令可以查看RESOURCE角色,有哪些权限。

select * from role_sys_privs t where t.ROLE='RESOURCE'

可以看到DBA角色有哪些权限,所谓的权限,其实就是增删改查。
在这里插入图片描述

系统权限(大)

针对用户使用数据库的权限,比如连接Oracle,创建实体。

connect(基本的连接),可以登录Oracle,不可以创建实体和数据库结构。

resource(程序开发),可以登录Oracle,可以创建实体,不可以创建数据库结构。

dba(数据库管理人员),可以登录Oracle,可以创建实体和数据库结构。

对象权限(小)

针对表和视图的操作权限,比如A用户对B用户下表和视图的权限。

权限设计原则

1、按照最小分配原则;
2、禁止grant dba to user;
3、数据库用户要分为管理、应用、维护、备份四类用户;
4、不允许使用sys和system建立数据库应用对象;

权限相关常用命令

查看用户有哪些角色

select * from dba_role_privs t where t.GRANTEE='USERNAME';

在这里插入图片描述

查看角色有哪些权限(严格区分大小写)

select * from role_sys_privs t where t.ROLE='RESOURCE';

在这里插入图片描述

给用户授权(系统权限)

GRANT DBA TO HR;

在这里插入图片描述
在这里插入图片描述

收回用户权限

Revoke DBA from HR;

在这里插入图片描述

在这里插入图片描述

查询有哪些角色具有sysdba和sysoper权限

select * from V$PWFILE_USERS

在这里插入图片描述

查看所有角色

select * from dba_roles;

在这里插入图片描述

···················································································
你学废了吗

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值