前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速搞懂19c 数据库安全新特性 (一)Schema Only Accounts

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

作者头像
SQLplusDB
发布2020-04-08 16:32:51
1.2K0
发布2020-04-08 16:32:51
举报

关键字(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

参考:(链接为缩短的网址)

代码语言:javascript
复制
    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的账户主要特性如下:

代码语言:javascript
复制
・可以根据需要,分配给这些帐户密码,使其变成普通账户
・该特性适用于管理员帐户,也适用于非管理员帐户。
・这些帐户只能在数据库实例上创建,而不能在ASM中创建
・可以授予系统特权(例如CREATE ANY TABLE)和管理员角色(例如DBA)
・可以根据授予它们的特权来创建表或过程之类的对象。
・可以使用single session proxy方式配置代理身份验证进行连接。

Schema Only的账户无法通过DB Linke连接,并且在18c版本中无法授予SYSDBA,SYSOPER,SYSBACKUP,SYSKM,SYSASM,SYSRAC,SYSDG管理员权限。 参考:

代码语言:javascript
复制
    Release 18 Security Guide
    http://dwz.date/ab7P
    >Schema Only Accounts

Schema Only Accounts测试例 (18c)

代码语言:javascript
复制
以下为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方式访问的方法如下:

代码语言:javascript
复制
conn / as sysdba
--设置通过代理用户访问
alter user  <用户>  grant connect through <代理用户>;
conn <代理用户>[<用户>]/<代理用户密码>
show user

测试例:(配置single session proxy)

代码语言:javascript
复制
--创建代理用户
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特性进行了加强,新增加了如下内容:

代码语言:javascript
复制
1. 取消了无法授予管理员权限的限制,将sysdba等管理用户赋予Schema Only Account。
2. 为了更强的安全性,除sys,system的预定义用户都默认设置为Schema Only Accounts

Schema Only Accounts测试例(19c)

Schema Only Accounts测试例(19c)如下:

代码语言:javascript
复制
--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

参考:

代码语言:javascript
复制
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相关内容,希望对你有所帮助。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Oracle数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档