詳說Oracle Vault——原理、安裝與配置

dbhelper發表於2017-11-11

 

對於資訊系統而言,安全性是至關重要的考量方面。從近年來全球爆發的資訊資料洩露引起的廣泛關注來看,沒有資料的安全,就沒有客戶持續的信任,也就沒有企業的生存空間。

安全威脅是一個綜合性的範圍。究其要點,是由很多因素構成的,比如廣受關注的外界駭客網路攻擊。但是,經過統計,我們企業面對的絕大多數情況都是針對資料內部的威脅。很多機密、隱私資料並不是透過“無所不在”的駭客們盜取的,而是就在運維部門、開發部門和業務部門的“內鬼”引起的。

內部安全問題,其實是一個非常矛盾的“非技術”問題。如果不對內部人員放開資料,很多工作是無法完成的。如果對內部人員開放資料,特別是第三方服務商人員,你的資料其實是沒有保障的。

當然,很多機構和組織也嘗試了一些方法,來應對這樣的問題。比如法律上的保密協定、多層審批機制,但是這也只能從一定程度上緩解問題。一種普遍認為比較有用的方法就是職責分開,單人單值。也就是說,一個人一個崗位只讓承擔一個單一職責,只是接觸資料全過程的一個環節。單一工作人員洩密風險是高的,但是整個工作流上所有點,甚至整個團隊都洩密的風險是大大降低的。

Oracle資料庫作為目前最成熟的商業資料庫,在穩定其核心功能的同時也針對數量眾多的使用者群提出了很多安全運維工具解決方案。在資料層面,Oracle有三個代表新的技術:Virtual Private DatabaseVPD)、Label SecurityOracle VaultVPD主要是針對解決應用層面的資料訪問需求新增資料訪問許可權,Label SecurityVPD某種程度的擴充升級。而Vault主要是對Oracle資料庫的安全職責進行分離,將資料安全責任從使用者甚至sys身上剝離出去,進行細粒度的安全責任分配。

 

1Oracle Vault簡述

 

Oracle Vault是官方推薦的security策略之一,它主要用於運維機構中對資料的保護。傳統意義的Oracle安全是一種“sys上帝”的主宰模型。我們雖然有各種系統、角色和物件許可權,雖然各種安全手冊要我們使用非sys使用者進行維護工作,但是很多資料庫管理員還是在使用sys進行所有工作。一些資料防護技術,比如VPD雖然可以實現資料層面的控制,但是對sys也是無效的。

更重要的是一些any類的系統許可權,如select any table,一旦賦予,使用者其實就控制了所有資料表的資料訪問。這個是非常武斷的做法,潛藏著很大問題。

在“sys上帝”的前提控制下,這樣的局面是控制不住的。因為一些運維操作,如資料備份、匯入匯出是避免不了高階訪問許可權的。“要麼不做、要麼別管”就是我們目前很多運維機構的現狀。

Oracle Vault提供了sys使用者削權的一種選擇。作為Oracle資料庫的一個可選元件,Vault是需要額外的檔案連結、註冊和安裝的。安裝vault之後,Oracle會去建立一個全新的使用者dbvowner,原有的sys對一些資料的操作和訪問許可權,也都有進行控制的可能。

Vault中的三個核心要素:Realm(領域)、Factor(因素)和規則(Rule)。從資料物件、操作命令等多個方面來限制或者保護特定的物件。

本系列中,會介紹Oracle Vault的安裝、配置和使用方法。首先,我們介紹如何進行vault安裝。

 

2Oracle Vault前提

 

預設企業版中,Vault是不會安裝的。我們需要手工的進行編譯、安裝,才能使用。

我們採用Oracle 11gR2進行測試,版本號為11.2.0.4

 

SQL> select * from v$version;

 

BANNER

-----------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production

PL/SQL Release 11.2.0.4.0 - Production

CORE 11.2.0.4.0 Production

 

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 - Production

 

判斷當前vault是否安裝,檢視v$option檢視。

 

SQL> select * from v$option where parameter like '%Vault%';

 

PARAMETER                 VALUE

------------------------- ----------

Oracle Database Vault     FALSE

 

安裝配置之前,要將資料庫、監聽程式、DB Console關閉。

 

--監聽程式

[oracle@SimpleLinux ~]$ lsnrctl stop

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 07-APR-2014 12:41:34

 

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SimpleLinux)(PORT=1521)))

The command completed successfully

 

--Console

[oracle@SimpleLinux ~]$ emctl stop dbconsole

Oracle Enterprise Manager 11g Database Control Release 11.2.0.4.0

Copyright (c) 1996, 2013 Oracle Corporation.  All rights reserved.

Stopping Oracle Enterprise Manager 11g Database Control ...

 ...  Stopped.

 

--Database Server

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

3、元件編譯

 

Oracle Vault是依賴Label Security,需要在作業系統層面上啟動配置。在Linux/Unix環境下,使用make進行配置連結。

 

[oracle@SimpleLinux lib]$ cd $ORACLE_HOME/rdbms/lib

[oracle@SimpleLinux lib]$ make -f ins_rdbms.mk dv_on lbac_on ioracle

/usr/bin/ar d /u01/app/oracle/rdbms/lib/libknlopt.a kzvndv.o

/usr/bin/ar cr /u01/app/oracle/rdbms/lib/libknlopt.a /u01/app/oracle/rdbms/lib/kzvidv.o

/usr/bin/ar d /u01/app/oracle/rdbms/lib/libknlopt.a kzlnlbac.o

/usr/bin/ar cr /u01/app/oracle/rdbms/lib/libknlopt.a /u01/app/oracle/rdbms/lib/kzlilbac.o

chmod 755 /u01/app/oracle/bin

 

 - Linking Oracle

rm -f /u01/app/oracle/rdbms/lib/oracle

gcc  -o /u01/app/oracle/rdbms/lib/oracle -m32 -z noexecstack -L/u01/app/oracle/rdbms/lib/ -L/u01/app/oracle/lib/ -L/u01/app/oracle/lib/stubs/ -L/u01/app/oracle/lib/ -lirc -lipgo    -Wl,-E /u01/app/oracle/rdbms/lib/opimai.o

(篇幅原因,有省略……

-L/u01/app/oracle/lib

test ! -f /u01/app/oracle/bin/oracle ||\

           mv -f /u01/app/oracle/bin/oracle /u01/app/oracle/bin/oracleO

mv /u01/app/oracle/rdbms/lib/oracle /u01/app/oracle/bin/oracle

chmod 6751 /u01/app/oracle/bin/oracle

 

注意:如果在Exadata中需要使用IPC協議訪問儲存,則需要加入ipc_rds協議模組。另外如果Windows平臺,則是將$ORACLE_HOME/bin目錄中oradv11.dll.dbl改名為oradv11.dll命令。

之後,重新啟動監聽器和伺服器。

 

[oracle@SimpleLinux lib]$ lsnrctl start

 

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

 

Total System Global Area  372449280 bytes

Fixed Size                  1364732 bytes

Variable Size             281021700 bytes

 

4、呼叫dbca啟動

 

在支援GUI的介面方式下,呼叫dbca啟動編譯。

 

詳說Oracle Vault——原理、安裝與配置

 

點選下一步Next,選擇Configure Database Options專案。之後選擇目標資料庫。

 

詳說Oracle Vault——原理、安裝與配置

 

從選項中,選擇上Label SecurityVault選項。

 

詳說Oracle Vault——原理、安裝與配置

 

配置專案中,包括了Oracle Vault使用者owner的名稱和管理員密碼。注意:這個配置密碼環節是很嚴格的,要求長度是8-30位、不出現重複字元和包括至少一個標點符號。

 

詳說Oracle Vault——原理、安裝與配置

 

選擇連線方法,包括獨佔方式和共享連線方式。最後安裝選項。

 

詳說Oracle Vault——原理、安裝與配置

 

最後安裝成功,結束GUI介面。

 

5、啟動DBV配置介面

 

和很多Oracle元件一樣,Oracle Vault是可以透過一系列的API介面呼叫來進行配置管理的。但是,由於複雜性,Oracle並不推薦直接使用API介面命令進行管理,而是透過提供的dbv應用進行配置。使用dbv的方法和em很像,而且避免了出現錯誤的機率。

呼叫dbv的方法,首先是啟動emctl。之後呼叫。埠號和em是一樣的。

 

詳說Oracle Vault——原理、安裝與配置

 

點選登入,就可以看到配置專案。

 

詳說Oracle Vault——原理、安裝與配置

 

Vault預設是提供很多預設配置內容的。在完成安裝之後,我們最直接觀察就是sys本身功能被限制。

 

SQL> conn sys/oracle@ora11g as sysdba

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.4.0

Connected as SYS

 

SQL> create user xxx identified by xxx;

create user xxx identified by xxx

 

ORA-01031: 許可權不足

 

SQL> alter user scott identified by tiger;

alter user scott identified by tiger

 

ORA-01031: 許可權不足

 

6、結論

 

Oracle Vault是目前Oracle官方推薦的運維安全策略。在實際應用中,主要便於進行sys等管理員帳號許可權限制,保護核心業務資料。

本篇對安裝進行了簡單介紹,具體概念和相關內容我們在後面繼續討論。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-2147139/,如需轉載,請註明出處,否則將追究法律責任。

相關文章