快速搞懂19c 数据库安全新特性 (一)Schema Only Accounts
- 2020 年 4 月 8 日
- 筆記
关键字(Keyword):19c 数据库安全 新特性 Schema Only Accounts
本文目录:
- User(用户) VS Schema(模式)
- Schema Only Accounts (18c)
- Schema Only Accounts测试例 (18c)
- 配置single session proxy方式访问
- Schema Only Accounts (19c)
- Schema Only Accounts测试例(19c)
01
—
User(用户) VS Schema(模式)
首先,我们明确一下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 >User Accounts http://dwz.date/ab7M >Introduction to Schema Objects http://dwz.date/ab7N >Schema Objects
02
—
Schema Only Accounts (18c)
为了更好的数据库安全角度考虑,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
Schema Only Accounts测试例 (18c)
以下为Schema Only Accounts测试例 (18c):``` --1. 创建Schema Only Account --create user <username> 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 <username> identified by <password>; 例: 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 <username> 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方式访问
配置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"
02
—
Schema Only Accounts (19c)
19c 对Schema Only Accounts特性进行了加强,新增加了如下内容:
1. 取消了无法授予管理员权限的限制,将sysdba等管理用户赋予Schema Only Account。 2. 为了更强的安全性,除sys,system的预定义用户都默认设置为Schema Only Accounts
Schema Only Accounts测试例(19c)
Schema Only Accounts测试例(19c)如下:
--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相关内容,希望对你有所帮助。