快速搞懂19c 数据库安全新特性 (一)Schema Only Accounts

关键字(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相关内容,希望对你有所帮助。