快速搞懂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相關內容,希望對你有所幫助。