首先我们明确一下User(用户)和Schema(可以翻译成模式,但是交流中基本上都使用英文)的概念。
User(用户)可以理解为访问数据库的账号,用于标识一系列的权限(Privileges),角色(Roles )定义等,可以包括系统管理用户(administrative user accounts 如sys,system)和应用程序用户(application users 如用户自己创建的用户)。
Schema(模式)可以理解为数据库对象的集合,包含如:表、视图、存储过程、索引等各种对象。
在Oracle数据库中每个User(用户)都默认拥有一个缺省Schema,并且schema名等于用户名,所以Schema看上去和用户名一样。
下面是官方文档中的一个例子,HR用户拥有一个HR schema,在HR schema中包含了employees表,索引等对象。
▲Figure 2-1 HR Schema
http://dwz.date/ab7M
参考:(链接为缩短的网址)
Release 19 Database Concepts
[http://dwz.date/ab7F](http://dwz.date/ab7F)
>User Accounts
http://dwz.date/ab7M
>Introduction to Schema Objects
http://dwz.date/ab7N
>Schema Objects
为了更好的数据库安全角度考虑,18c 开始可以创建Schema Only的账户,这种账户可以仅保存数据对象,不允许客户端直接连接(但可以使用single session proxy方式连接)。
Schema Only的账户主要特性如下:
・可以根据需要,分配给这些帐户密码,使其变成普通账户
・该特性适用于管理员帐户,也适用于非管理员帐户。
・这些帐户只能在数据库实例上创建,而不能在ASM中创建
・可以授予系统特权(例如CREATE ANY TABLE)和管理员角色(例如DBA)
・可以根据授予它们的特权来创建表或过程之类的对象。
・可以使用single session proxy方式配置代理身份验证进行连接。
Schema Only的账户无法通过DB Linke连接,并且在18c版本中无法授予SYSDBA,SYSOPER,SYSBACKUP,SYSKM,SYSASM,SYSRAC,SYSDG管理员权限。
参考:
Release 18 Security Guide
http://dwz.date/ab7P
>Schema Only Accounts
--1. 创建Schema Only Account
--create user no authentication;
例:
SQL> create user test no authentication;
--确认用户信息
SQL> select username,account_status,authentication_type from dba_users where username='TEST';
USERNAME ACCOUNT_STATUS AUTHENTI
------------------------- -------------------- --------
TEST OPEN NONE★
--2.修改Schema Only Account为普通用户
--alter user identified by ;
例:
SQL> alter user test identified by test;
SQL> grant dba to test;
--确认用户信息
SQL> select username,account_status,authentication_type from dba_users where username='TEST';
USERNAME ACCOUNT_STATUS AUTHENTI
------------------------- -------------------- --------
TEST OPEN PASSWORD★
--测试连接
SQL> conn test/test
Connected.
--3. 修改普通用户为Schema Only Account
--alter user no authentication;
例:
SQL> conn / as sysdba
SQL> alter user test no authentication;
--确认用户信息
SQL> select username,account_status,authentication_type from dba_users where username='TEST';
USERNAME ACCOUNT_STATUS AUTHENTI
------------------------- -------------------- --------
TEST OPEN NONE
--测试Schema Only Account连接,会报错
SQL> conn test/test
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
--4. 18c 版本,将sysdba等管理用户赋予Schema Only Account 会报错
SQL> conn / as sysdba
SQL> grant sysdba to test;
grant sysdba to test
*
ERROR at line 1:
ORA-40366: Administrative privilege cannot be granted to this user.
配置single session proxy方式访问的方法如下:
conn / as sysdba
--设置通过代理用户访问
alter user <用户> grant connect through <代理用户>;
conn <代理用户>[<用户>]/<代理用户密码>
show user
测试例:(配置single session proxy)
--创建代理用户
SQL> create user proxy_user identified by proxy_pass;
SQL> grant create session to proxy_user;
--设置可以通过代理用户访问test
SQL> alter user test grant connect through proxy_user;
--连接测试
SQL> conn proxy_user[test]/proxy_pass
SQL> show user
USER is "TEST"
19c 对Schema Only Accounts特性进行了加强,新增加了如下内容:
取消了无法授予管理员权限的限制,将sysdba等管理用户赋予Schema Only Account。
为了更强的安全性,除sys,system的预定义用户都默认设置为Schema Only Accounts
--1. 19c 版本,可以将sysdba等管理用户赋予Schema Only Account
conn / as sysdba
SQL> grant sysdba to test;
Grant succeeded.
--2. 预定义用户的authentication_type变成NONE
SQL> select username,account_status,authentication_type,oracle_maintained from dba_users order by authentication_type;
USERNAME ACCOUNT_STATUS AUTHENTI O
----------------------- ----------------- -------- -
LBACSYS LOCKED NONE Y
GSMCATUSER LOCKED NONE Y
AUDSYS LOCKED NONE Y
OLAPSYS LOCKED NONE Y
GGSYS LOCKED NONE Y
DIP LOCKED NONE Y
SYSRAC LOCKED NONE Y
SYSBACKUP LOCKED NONE Y
ORDSYS LOCKED NONE Y
REMOTE_SCHEDULER_AGENT LOCKED NONE Y
DVF LOCKED NONE Y
DBSNMP LOCKED NONE Y
GSMADMIN_INTERNAL LOCKED NONE Y
MDSYS LOCKED NONE Y
XDB LOCKED NONE Y
WMSYS LOCKED NONE Y
OUTLN LOCKED NONE Y
DBSFWUSER LOCKED NONE Y
DVSYS LOCKED NONE Y
APPQOSSYS LOCKED NONE Y
GSMUSER LOCKED NONE Y
MDDATA LOCKED NONE Y
SI_INFORMTN_SCHEMA LOCKED NONE Y
ORDDATA LOCKED NONE Y
SYS$UMF LOCKED NONE Y
GSMROOTUSER LOCKED NONE Y
OJVMSYS LOCKED NONE Y
SYSDG LOCKED NONE Y
SYSKM LOCKED NONE Y
ORACLE_OCM LOCKED NONE Y
ORDPLUGINS LOCKED NONE Y
CTXSYS EXPIRED & LOCKED PASSWORD Y
ANONYMOUS EXPIRED & LOCKED PASSWORD Y
XS$NULL EXPIRED & LOCKED PASSWORD Y
SYS OPEN PASSWORD Y
SYSTEM OPEN PASSWORD Y
参考:
18c new feature: Schema Only Account (Doc ID 2543817.1)
Release 19 Security Guide
http://dwz.date/ab7Q
Schema Only Accounts
http://dwz.date/ab7S
>Default User Accounts Now Schema Only
http://dwz.date/ab7T
>Ability to Grant or Revoke Administrative Privileges to and from Schema-Only Accounts
http://dwz.date/ab7U
>Predefined Schema User Accounts Provided by Oracle Database
本文介绍了Oracle 19c 数据库安全新特性 Schema Only Accounts相关内容,希望对你有所帮助。