Oracle23ai新特性SCHEMA级授权

Oracle23ai新特性SCHEMA级授权

1、需求简介

Oracle23ai之前的版本,想要实现一个用户可以访问另一个用户下的所有表,需要把该用户下所有的表的访问权限依次授权给该用户。这一方式存在的问题是,每当源端用户新创建一个表时,还需要额外地给相关用户做授权。

Oracle 23ai的SCHEMA级授权特性较简单易用的解决了以上问题。通过把SELECT ANY TABLE ON SCHEMA给到另外一个用户,来将原始用户查询的任何权限给到新的用户。

2、用户TESTUSER的表及查询信息

TESTUSER@FREEPDB1> select tname from tab;TNAME
--------------------------------------------------------------------------------
PERSONNEL
T_MULTIROWS
T_IDENTITYTESTUSER@FREEPDB1> select * from T_MULTIROWS;ID INFONAME
---------- ------------------------------1 oracle23c2 oracle23ai3 mysql8.4TESTUSER@FREEPDB1> select * from T_IDENTITY;ID NAMEINFO                       SYSGUID
---------- ------------------------------ ------------------------------------1 generated by                   18EFA5E23DDC0BA1E063E650A8C05A762 DEFAULT                        18EFA5E23DDD0BA1E063E650A8C05A763 AS identity                    18EFA5E23DDE0BA1E063E650A8C05A764 values meger                   18EFA5E23DE10BA1E063E650A8C05A765 䶮中国字                        18EFA5E23DE00BA1E063E650A8C05A767 table                          18EFA5E23DE20BA1E063E650A8C05A768 expressions                    18EFA5E23DE30BA1E063E650A8C05A767 rows selected.

3、创建devuser1用户

SYS@FREEPDB1> select name from v$datafile;NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/FREE/FREEPDB1/system01.dbf
/opt/oracle/oradata/FREE/FREEPDB1/sysaux01.dbf
/opt/oracle/oradata/FREE/FREEPDB1/undotbs01.dbf
/opt/oracle/oradata/FREE/FREEPDB1/users01.dbf
/opt/oracle/oradata/FREE/FREEPDB1/testusertbs1.dbf
-- 创建表空间
SYS@FREEPDB1> create tablespace devuser1tbs datafile '/opt/oracle/oradata/FREE/FREEPDB1/devuser1tbs.dbf' size 8M autoextend off;Tablespace created.
-- 创建devuser1 用户
SYS@FREEPDB1> create user devuser1 identified by oracle default tablespace devuser1tbs ;User created.
-- 授权create session
SYS@FREEPDB1> grant create session to devuser1;Grant succeeded.
-- 通过把SELECT ANY TABLE ON SCHEMA给到新建的用户devuser1
SYS@FREEPDB1> grant select any table on schema testuser to devuser1;Grant succeeded.

4、登陆检查角色及权限

SYS@FREEPDB1> conn devuser1/oracle@FREEPDB1
Connected.
DEVUSER1@FREEPDB1> select * from session_privs;PRIVILEGE
------------------------------
CREATE SESSIONDEVUSER1@FREEPDB1> select * from session_roles;no rows selected
-- 用户devuser1查看testuser.T_MULTIROWS
DEVUSER1@FREEPDB1> select * from testuser.T_MULTIROWS;ID INFONAME
---------- ------------------------------1 oracle23c2 oracle23ai3 mysql8.4-- 发现可以正常访问

5、授权后新增表及视图确认能否正常访问

授权后,用户devuser1除了获得CREAT SESSION的系统权限外,没有被授予任何其他系统权限和系统角色。
SCHEMA级授权是通过对象级的继承权限获得。此时,被授权的用户可以看到原始授权用户下所有的表以及数据。

-- testuser用户创建一个视图v_grant_s_a和一个表t_grant_s_a-- 视图v_grant_s_a创建
TESTUSER@FREEPDB1> create view v_grant_s_a as  select * from (values(1,'grant'),(2,'select any table'),(3,'on schema')) T (id,nameinfo);View created.TESTUSER@FREEPDB1> select * from v_grant_s_a;ID NAMEINFO
---------- ------------------------------1 grant2 select any table3 on schema
-- 表t_grant_s_a创建
TESTUSER@FREEPDB1> create table t_grant_s_a as  select * from (values(1,'grant'),(2,'select any table'),(3,'on schema')) T (id,nameinfo);Table created.TESTUSER@FREEPDB1> select * from t_grant_s_a;ID NAMEINFO
---------- ------------------------------1 grant2 select any table3 on schema-- devuser1用户查询testuser用户的新建的视图
TESTUSER@FREEPDB1> conn DEVUSER1/oracle@FREEPDB1
Connected.
DEVUSER1@FREEPDB1> select * from testuser.t_grant_s_a;ID NAMEINFO
---------- ------------------------------1 grant2 select any table3 on schemaDEVUSER1@FREEPDB1> select * from testuser.v_grant_s_a;ID NAMEINFO
---------- ------------------------------1 grant2 select any table3 on schema

Oracle 23ai中,Oracle引入了架构级(SCHEMA级别)授权。这允许你以更简单、更直观的方式对整个Schema进行授权。简化之前版本授权这个权限的过程。

此外,Oracle 23ai还提供了其他与Schema级别授权相关的功能和视图,如 ROLE_SCHEMA_PRIVS、USER_SCHEMA_PRIVS 和 SESSION_SCHEMA_PRIVS,这些可以帮助你更好地管理和查看Schema级别的权限。

DEVUSER1@FREEPDB1> select * from USER_SCHEMA_PRIVS;USERNAME                       PRIVILEGE                      SCHEMA                         ADMIN_OPT COMMON    INHERITED
------------------------------ ------------------------------ ------------------------------ --------- --------- ---------
DEVUSER1                       SELECT ANY TABLE               TESTUSER                       NO        NO        NODEVUSER1@FREEPDB1> select * from SESSION_SCHEMA_PRIVS;PRIVILEGE                      SCHEMA
------------------------------ ------------------------------
SELECT ANY TABLE               TESTUSER

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[个人笔记] 记录CentOS7构建docker-ce的过程

容器技术 第一章 记录CentOS7构建docker-ce的过程 容器技术记录CentOS7构建docker-ce的过程CentOS 7.9基础配置centos配置网络连接, sshd, hostname, yum包更新sdb硬盘配置lvm部署docker之前, 优化centos的默认参数docker底层原理安装docker-ce社区版验证docker-ce是否正常运行…

压缩设备液压控制比例放大器

液压比例阀放大器是液压控制系统中的重要部件之一,用于控制输出油压方向流量和压力的精确控制。它由BEUEC比例放大器和比例电磁阀组成,通过调节比例放大器的增益和灵敏度参数,可以实现对液压系统输出油压方向流量和压力的精确控制。适用于各种…

动态IP与静态IP有什么区别?如何选择?

动态IP和静态IP都是指网络设备(如计算机、服务器、路由器等)在互联网上分配的IP地址的类型。 一、什么是动态IP,什么是静态IP? 1、什么是动态IP? 动态IP是指由Internet服务提供商(ISP)动态分配…

关于linux的防护,以及群集你要知道的有哪些8-使用Haproxy搭建web群集

1、Haproxy,LVS、Ningx三个调度器的区别: LVS性能最好,但是搭建相对复杂 Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy好 2、HTTP的请求方式 GET方式 POST方式 3、返回状态码 正…

【Android】探索Android网络请求:OkHttp、Retrofit和Volley

在 Android 中,有许多流行的网络库可以用来进行网络请求,每个库都有自己的优点和适用场景。以下是几个常用的库及其简要介绍和示例代码: 1. OkHttp OkHttp 是一个高效的 HTTP 客户端,广泛用于 Android 应用中。 添加依赖 depe…

整理好了!2024年最常见 20 道 Redis面试题(四)

上一篇地址:整理好了!2024年最常见 20 道 Redis面试题(三)-CSDN博客 七、Redis 单线程模型是如何工作的? Redis 是一个基于单线程模型的高性能键值存储数据库。尽管 Redis 操作大多数是单线程执行的,但它…

SpringBoot中使用AOP实现日志记录功能

目录 一、SpringBoot框架介绍 二、什么是 AOP 三、日志记录的必要性 四、SpringBoot中如何使用AOP实现日志记录功能 一、SpringBoot框架介绍 SpringBoot是一个开源的Java开发框架,旨在简化基于Spring框架的应用程序的开发。它提供了一套开箱即用的工具&#xf…

express.js--连接数据库,并且增删改查(四)

使用数据库需要在电脑安装mysql,然后使用navicat 我没有下载mysql,我使用的是小皮里面的数据库,需要破解版的navicat可以私信我 安装mysql npm i mysql 数据库的基本信息,我是直接写到配置文件里面的 config/index.js module.exports {…

【Android】联系人列表补充

真布局--叠起来垂直管 效果展示 部分代码&#xff08;在activity_main&#xff09;里面 <FrameLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"…

如何在Windows下使用Docker Desktop运行CentOS容器

引言&#xff1a; 在Windows操作系统中&#xff0c;我们可以使用Docker Desktop来轻松运行和管理各种Linux容器&#xff0c;包括CentOS。今天&#xff0c;我们就来详细讲解一下如何在Windows环境下使用Docker Desktop来运行CentOS容器。 一、安装Docker Desktop 首先&#x…

WPF中CommandParameter用法

1. 界面样式 2. XAML中代码部分 <ButtonGrid.Row"0"Grid.Column"1"Command"{Binding BtnClick_Number}"CommandParameter"7"Content"7"Style"{StaticResource BtnStyle_Num}" /> <ButtonGrid.Row"…

基于Redisson实现延时队列

1.在application.yaml中配置延时队列信息 #延时队列 redis-delay-queue:enabled: truename: delay_queue_demo 2.定义延时队列 /** * 延时队列 */ public class RedisDelayedQueue {private static Logger logger LoggerFactory.getLogger(RedisDelayedQueue.class);Resour…

STM32中SPI的使用

SPI&#xff08;Serial Peripheral Interface&#xff09;是一种高速、全双工、同步的通信协议&#xff0c;它广泛应用于微控制器与外设或其他微控制器之间的通信。SPI通过至少四条线路进行通信&#xff1a;一条串行时钟&#xff08;SCLK&#xff09;、一条主设备输出/从设备输…

【MySQL精通之路】MySQL的使用(2)-配置

目录 1.配置方式 2.配置优先级 3.配置教程 3.1.使用命令行上的配置 3.2.使用配置文件 3.2.1 配置文件处理顺序 3.2.1.1 Windows配置 3.2.1.2 Unix和类Unix系统配置 3.2.2 配置文件语法 3.2.3 指定配置文件 3.3.影响配置文件处理的命令行选项 3.4.配置选项修改器 3…

uniapp连接蓝牙获取设备心电图,并通过canvas进行绘画

话不多说直接上代码&#xff0c;我这里没有蓝牙协议&#xff0c;直接询问蓝牙硬件工程师的解码方式。并且也涉及到一个大小端的问题&#xff0c;我这里是项目需要。 <template><view><page-head :title"title"></page-head><!-- 心电图显…

【运维项目经历|011】:智能DNS解析优化项目

目录 项目名称 项目背景 项目目标 项目成果 我的角色与职责 我主要完成的工作内容 本次项目涉及的技术 本次项目遇到的问题与解决方法 本次项目中可能被面试官问到的技术性问题 问题1&#xff1a;DNS服务的端口是多少&#xff1f; 问题2&#xff1a;什么是顶级域&…

【个人商业画布】你有思考过把自己当成一家公司来经营吗?

商业模式画布(Business Model Canvas)&#xff0c;是亚历山大奥斯特瓦德在《商业模式新生代》中提出的一种用于描述商业模式、可视化商业模式、评估商业模式以及改变商业模式的通用语言。它由9个模块构成&#xff0c;帮助创业者理清为“细分客户提供独有价值”&#xff0c;从而…

浅谈OpenHarmony LiteOS-A内核之基础硬件——中断控制器GIC400

一、前言 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;采用多内核架构&#xff0c;支持Linux内核的标准系统、LiteOS-A的小型系统、LiteOS-M的轻量系统。 其中LiteOS-A要求设备具备一定的处理能力&#xff0c;对比LiteOS-M&#xff0c;LiteOS-A支持…

国赛部分复现

MISC 神秘文件 下载解压后是个pptm文件&#xff0c;内容丰富 使用010打开ppt查看 发现为PK开头&#xff0c;属于压缩包文件。复制粘贴ppt&#xff0c;修改副本后缀为.zip并解压 part1 查看属性&#xff0c;发现奇怪字符 QFCfpPQ6ZymuM3gq 根据提示Bifid chipher&#xff0c;…

cuda 是什么

CUDA 是什么&#xff1f; CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一设备架构&#xff09;是一种并行计算平台和编程模型&#xff0c;旨在利用GPU&#xff08;图形处理器&#xff09;进行高性能计算。它是由NVIDIA公司开发和推广的&#xff0c;主要…