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_IDENTITY

TESTUSER@FREEPDB1> select * from T_MULTIROWS;

        ID INFONAME
---------- ------------------------------
         1 oracle23c
         2 oracle23ai
         3 mysql8.4

TESTUSER@FREEPDB1> select * from T_IDENTITY;

        ID NAMEINFO                       SYSGUID
---------- ------------------------------ ------------------------------------
         1 generated by                   18EFA5E23DDC0BA1E063E650A8C05A76
         2 DEFAULT                        18EFA5E23DDD0BA1E063E650A8C05A76
         3 AS identity                    18EFA5E23DDE0BA1E063E650A8C05A76
         4 values meger                   18EFA5E23DE10BA1E063E650A8C05A76
         5 䶮中国字                        18EFA5E23DE00BA1E063E650A8C05A76
         7 table                          18EFA5E23DE20BA1E063E650A8C05A76
         8 expressions                    18EFA5E23DE30BA1E063E650A8C05A76

7 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 SESSION

DEVUSER1@FREEPDB1> select * from session_roles;

no rows selected
-- 用户devuser1查看testuser.T_MULTIROWS
DEVUSER1@FREEPDB1> select * from testuser.T_MULTIROWS;

        ID INFONAME
---------- ------------------------------
         1 oracle23c
         2 oracle23ai
         3 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 grant
         2 select any table
         3 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 grant
         2 select any table
         3 on schema


-- devuser1用户查询testuser用户的新建的视图
TESTUSER@FREEPDB1> conn DEVUSER1/oracle@FREEPDB1
Connected.
DEVUSER1@FREEPDB1> select * from testuser.t_grant_s_a;

        ID NAMEINFO
---------- ------------------------------
         1 grant
         2 select any table
         3 on schema

DEVUSER1@FREEPDB1> select * from testuser.v_grant_s_a;

        ID NAMEINFO
---------- ------------------------------
         1 grant
         2 select any table
         3 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        NO

DEVUSER1@FREEPDB1> select * from SESSION_SCHEMA_PRIVS;

PRIVILEGE                      SCHEMA
------------------------------ ------------------------------
SELECT ANY TABLE               TESTUSER

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Easy-poi 和 EasyExcel 选型

目录 共同点地址如何选 共同点 easy-poi 和 easyexcel 都是基于 apache poi 进行二次开发的,底层都是依赖的 apache poi使用简单,都可以通过简单的注解实现excel文件的导入导出 地址 esay poi 是一个开源的 excel,word 处理框架。链接 easy excel 是…

Vue 3入门指南

title: Vue 3入门指南 date: 2024/5/23 19:37:34 updated: 2024/5/23 19:37:34 categories: 前端开发 tags: 框架对比环境搭建基础语法组件开发响应式系统状态管理路由配置 第1章:Vue 3简介 1.1 Vue.js的历史与发展 Vue.js由前谷歌工程师尤雨溪(Eva…

Java NIO 基础

Java NIO 基础 1. NIO 介绍2. NIO 三大组件2.1 Channel2.1.1 常见的 Channel2.1.2 常用方法 2.2 Buffer2.2.1 常见的 Buffer2.2.2 重要属性2.2.3 常用方法 2.3 Selector2.3.1 四种事件类型 1. NIO 介绍 NIO(non-blocking io):非阻塞IO&#…

无网环境禁止 WPS 提示登录,且基本功能按钮可用

目前 WPS 升级后,每次打开都会提示你登录 WPS,并且在未登录之前所有基本功能按钮是置灰状态,无法使用。 如此一来,在内网或无网环境,我们无法登陆 WPS ,就给我们的使用带来了极大的不便,那么有没…

go升级后 编译的exe在win7上无法正常运行

D:/Go/src/runtime/sys_windows_amd64.s:65 x75 fpx22fca sp-0x22fc8日 升级到go 1.21后报一堆错误,要死了啊 原来是go 1.21不支持win7了,必须把go退回到1.20版本 谷歌发布编程语言 Go 1.21 版本:取消支持微软 Win7/8 及苹果 macOS 10.13/10…

Vue3实战笔记(33)—组件传值props终章

文章目录 前言一、运行时声明、基于类型的声明二、一个小小的好奇心三、非 script setup场景下总结 前言 在 Vue 3 中,组件的声明方式主要有两种:运行时声明和基于类型的声明。这两种方式在 Vue 3 的 Composition API 中体现得尤为明显。 一、运行时声明…

如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

基于manifest文件批量将coding的仓库导入gitlab中

文章目录 写在前面的话背景编写manifest文件最终效果 写在前面的话 前面有讲过通过manifest清单导入项目到gitlab中,但是实际的操作是不同gitlab实例之间的操作,然而对于在不同gitlab实例的repo迁移而言,显然direct transfer会更合适。 背景…

Spring6笔记(五):国际化、数据校验、提前编译

九、国际化:i18n 9.1 i18n概述 9.2 Java国际化 9.3 Spring6国际化 十、数据校验:Validation 10.1 Spring Validation 概述 10.2 实验一:通过 validator 接口实现 10.3 实验三:Bean Validation 注解 10.4 实验四:实现…

深入了解 RabbitMQ:构建可靠消息传递系统的关键

前言 在现代分布式应用程序开发中,构建可靠的消息传递系统至关重要。RabbitMQ 作为一款强大的消息代理软件,为开发人员提供了丰富的工具和解决方案。本文将深入探讨 RabbitMQ 的核心概念、工作原理以及其在实际应用中的应用场景。 一、什么是 RabbitMQ…

[力扣]——231.2的幂

题目描述: 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 bool isPowerOfTwo(int n){ if(n0)retur…

Diffusion Policy:基于扩散模型的机器人动作生成策略

项目地址: Diffusion Policy (columbia.edu) 一、摘要 本文介绍了 "扩散策略",这是一种生成机器人行为的新方法,它将机器人的视觉运动策略(visuomotor policy)表示为条件去噪扩散过程(conditi…

15:00面试,15:08出来,面试问的有点变态。。。。

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天…

Manjaro /opt/google/chrome error

mingcai Manjaro in /opt/google/chrome [22:34:02] $ ./google-chrome [62841:62841:0516/223407.119870:ERROR:process_singleton_posix.cc(353)] 其他计算机 (mingcai-systemproductname) 的另一个 Google Chrome 进程 (2931) 好像正在使用此个人资料。Chrome 已锁定此个人…

PySide6 QStateMachine状态机的实现

PySide6的状态机模块提供了一种方便的方式来实现状态机模式,用于管理程序的状态和状态转换。通过使用PySide6的状态机模块,开发者可以更加清晰地组织程序逻辑,使程序更易于维护和扩展。 在PySide6中,状态机相关的类主要包括&…

探索k8s集群中kubectl的陈述式资源管理

一、k8s集群资源管理方式分类 1.1陈述式资源管理方式:增删查比较方便,但是改非常不方便 使用一条kubectl命令和参数选项来实现资源对象管理操作 即通过命令的方式来实 1.2声明式资源管理方式:yaml文件管理 使用yaml配置文件或者json配置文…

Monkey自动化测试(Android)吐血整理(超详细)

一、前言 随机的命令对APP进行自动化测试,可以快速发现APP的问题,若执行时设置的-S 100出现了一个错误,后面再执行时,只需设置相同的-S,就会按照第一次执行命令的顺序再次执行 自动化就是比较有针对性的对某一个功能…

Jenkins部署成功后自动发通知到钉钉群

钉钉上如何配置 选择钉钉群,找到群设置-机器人-添加机器人 选择自定义 选择【添加】 选择【加签】,复制值,后续在jenkins里配置时会用到 复制Webhook地址,后面在jenkins里配置的时候要用到 Jenkins上如何配置 系统管理-插件管…

数学建模~~多目标规划

1.认识多目标规划 (1)前面我们介绍的是单目标规划,现在我们要认识一下多目标规划: (2)使用上面的这个题目作为例子,简单的翻译一下题干,这个题目说的就是 有1,2这两种产…

LeetCode题练习与总结:二叉树的最大深度--104

一、题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root […