Oracle 18c新特性:Schema-Only 帐号提升应用管理安全性

在 Oracle 18c 中,一个特殊类型的帐号被引入到数据库当中,这特特性被称为 Schema-Only 帐号,这个帐号通过 NO AUTHENTICATION 语句建立,没有密码,也就不允许直接登录,所以这种帐号类型是 纯模式类型

帐号不能直接登录也就具备了天然的安全受益:

可以强制通过应用(Application)来访问数据; 保护对象安全,例如阻止可能的误删除(DROP)操作;

Schema-Only账户具有一些限制:

不能被授予系统管理权限,如(SYSDBA、SYSASM)等; 不能通过DB Link访问; 只支持DB实例,不支持ASM实例;

针对这个特性,DBA_USERS 视图增加了一个新的字段 AUTHENTICATION_TYPE 用于标识帐号属性,当创建Schema-Only 帐号时显示为 NONE否则会显示 PASSWORD。

下面让我们通过简单的测试来看看这个新特性,首先在一个 PDB 上创建 NO AUTHENTICATION 的帐号,用户名是 enmotech:

SQL> connect / as sysdba Connected. SQL> select name from v$pdbs; NAME --------------------------------------- PDB$SEED ORCLPDB1 SQL> alter pluggable database ORCLPDB1 open; Pluggable database altered. SQL> alter session set container=ORCLPDB1; Session altered. SQL> create user enmotech NO AUTHENTICATION; User created. SQL> grant create session,create any table,create any view to enmotech; Grant succeeded. SQL> exec print_table('select username,password,password_versions,account_status,authentication_type from dba_users where username=''ENMOTECH'''); USERNAME : ENMOTECH PASSWORD : PASSWORD_VERSIONS : ACCOUNT_STATUS : OPEN AUTHENTICATION_TYPE : NONE -----------------

这个帐号没有口令,自然就无法直接登录,我们可以通过用户代理来访问这个用户,代理是很早的一个数据库功能,现在有了新的作用。

我们在 ORCLPDB1 创建一个新的用户 yhem,这个用户仅有 create session 权限;

SQL> create user yhem identified by enmotech; User created. SQL> grant create session to yhem; Grant succeeded.

授予用户 yhem 代理权限,通过该用户可以连接到 enmotech 这个受限用户,以下示范中 bethune 是我建立的一个 TNS 连接串名:

SQL> alter user enmotech grant connect through yhem; User altered. SQL> connect yhem[enmotech]/enmotech@bethune Connected. SQL> show user USER is "ENMOTECH" SQL> create table acoug (id number,name varchar2(200)); Table created. SQL> drop table acoug; Table dropped.

基本上,这就是新特性的基本展示,最核心的功能,是可以将 Schema-Only 用户的对象增删数据权限授予应用用户,就防范了模式用户直接访问可能带来的种种风险。

验证一下,纯模式用户不能被授予 SYSDBA 权限,其角色切换也很简单,授予密码就解除了 NO AUTHENTICATION 状态,回收SYSDBA权限才可以重新NO AUTHENTICATION 。

SQL> grant sysdba to enmotech; grant sysdba to enmotech * ERROR at line 1: ORA-40366: Administrative privilege cannot be granted to this user. SQL> alter user enmotech identified by eygle; User altered. SQL> grant sysdba to enmotech; Grant succeeded. SQL> alter user enmotech no authentication; alter user enmotech no authentication * ERROR at line 1: ORA-40367: An Administrative user cannot be altered to have no authentication type. SQL> revoke sysdba from enmotech; Revoke succeeded. SQL> alter user enmotech no authentication; User altered.

当然也可以在 CDB 中创建 COMMON 用户,指定其为 NO AUTHENTICATION :

SQL> connect / as sysdba Connected. SQL> create user c##enmo no authentication; User created. SQL> set serveroutput on SQL> exec print_table('select con_id,username,authentication_type from cdb_users where username=''C##ENMO'''); CON_ID : 1 USERNAME : C##ENMO AUTHENTICATION_TYPE : NONE ----------------- CON_ID : 3 USERNAME : C##ENMO AUTHENTICATION_TYPE : NONE -----------------

至于这个小特性在实践中是否能发挥作用,大家可以留言表达一下各自的观点。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2018-11-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

使用shell生成orabbix自动化配置脚本(r6笔记第53天)

在使用Orabbix监控Oracle的时候,本身和zaabix agent最大的不同便是使用Orabbix不需要对每个数据库实例都安装单独的agent,而是一个...

32680
来自专栏Aloys的开发之路

数据库相关总结

通用: http://db-engines.com/en/ranking MySQL MySQL: http://www.mysql.com/ MySQL参考:...

19580
来自专栏杨建荣的学习笔记

Oracle 12c DBCA浅析(r12笔记第48天)

我们知道在11g的环境中我们可以通过一些分析来得到DBCA的一些后台处理工作,有一点需要说明的是,如果一个12c的单实例数据库需要转换为12c的容器数据库...

41170
来自专栏乐沙弥的世界

Oracle 基于用户管理恢复的处理

Oracle支持多种方式来管理数据文件的备份与恢复来保证数据库的可靠与完整。除了使用RMAN工具以及第三方备份与恢复工具之外,基于

6420
来自专栏Hadoop实操

如何使用StreamSets实现Oracle中变化数据实时写入Kudu

1K50
来自专栏数据和云

Oracle数据库的初始化与跟踪学习方法

编辑说明:《Oracle性能优化与诊断案例精选》出版以来,收到很多读者的来信和评论,我们会通过连载的形式将书中内容公布出来,希望书中内容能够帮助到更多的读者朋友...

39890
来自专栏逸鹏说道

SQL Server 数据库清除日志的方法

SQLSERVER的数据库日志占用很大的空间,下面提供三种方法用于清除无用的数据库日志文件 方法一: 1、打开查询分析器,输入命令 BACKUP LOG d...

44050
来自专栏杨建荣的学习笔记

关于查看dba_data_files的一个小问题(r7笔记第72天)

今天帮一个朋友看一个pl/sql的问题,他已经钻到一个死胡同里列,可能明眼人一看就知道哪里有问题,但是当局者迷,所以我抽空看了一下这个pl/sql块。 pl/s...

38950
来自专栏数据和云

案发现场:被注入的软件及 ORA-600 16703 灾难的恢复

最近帮助一个客户恢复数据库,遇到了如下这个问题。让我们再一次惊醒于数据安全,如果不做好防范,问题总是会来得猝不及防。

27240
来自专栏乐沙弥的世界

启用用户进程跟踪

仅仅需要标识该会话并为该会话启用跟踪(专用模式为一对一模式,即一个用户进程对应一个服务器进程)

9620

扫码关注云+社区

领取腾讯云代金券