Oracle強制訪問與控制功能的解析
Oracle強制訪問控制就是B1級安全產(chǎn)品所必須實現(xiàn)的一個相關(guān)的基本安全的特性,我們都知道達夢的相關(guān)數(shù)據(jù)庫安全版的強制訪問以及控制功能,它在實現(xiàn)過程中研究并吸取了現(xiàn)有主流數(shù)據(jù)庫產(chǎn)品的部分安全實現(xiàn)機制,包括DB2的LBAC(Label Based Access Control)和Oracle的LABEL SECRURITY。
下面將從標記安全的六個方面對DB2、Oracle和DM的模型進行描述,這個六個方面分別是:安全元素、策略應(yīng)用、訪問規(guī)則、訪問特權(quán)、系統(tǒng)沖突、系統(tǒng)權(quán)限。
1 DB2 LBAC
1.1安全元素
(1)安全標記組件
支持三種類型的組件:數(shù)組、集合和樹型。
a)創(chuàng)建數(shù)組組件
- CREATE SECURITY LABEL COMPONENT level ARRAY
[ ’Top Secret’, ’Secret’, ’Employee’, ’Public’ ]
b)創(chuàng)建集合組件
- CREATE SECURITY LABEL COMPONENT project
Set ={’A’, ’B’, ’C’, ’D’}
c)創(chuàng)建樹型組件
- CREATE SECURITY LABEL COMPONENT department
Tree={’G1’ ROOT, ’G2’ UNDER ’G1’, ’G2’ UNDER ’G1’}
其中每個元素的名稱不能超過32個字節(jié),且同一組件內(nèi)名稱不能重復(fù);數(shù)組最多可以包含65535個元素,集合和樹型最多能包含64個元素。
(2)安全策略
創(chuàng)建一個安全策略:
- CREATE SECURITY POLICY DataAccess COMPONENTS level,department WITH DB2LABCRULES
定義一個策略要指定標記組件和訪問規(guī)則。每個策略最多只能包含16個標記組件。系統(tǒng)現(xiàn)在只支持一中Oracle強制訪問規(guī)則DB2LABCRULES,這個在訪問規(guī)則小節(jié)中詳細講述。
(3)安全標記
創(chuàng)建一個安全標記:
以下是引用片段:
- CREATE SECURITY LABEL DataAccess.ManagerLabel COMPONENT level ’secret’
- project ’A’, ’B’, ’C’
- department ’G1’;
安全標記可以應(yīng)用到用戶、行和列上。在插入數(shù)據(jù)時,也可以指定直接指定安全標記串,規(guī)則為按策略中組件的順序,依次指定組件值,同一個組件的不同值用逗號隔開,不同組件之間用冒號隔開。
1.2策略應(yīng)用
(1)用戶安全標記
授予安全標記給用戶時,同時可以指定訪問權(quán)限。
- GRANT SECURITY LABEL DataAccess.ManagerLabel TO USER JOE FOR READ ACCESS;
有三類訪問權(quán)限:READ ACCESS、WRITE ACCESS和ALL ACCESS。如果讀寫安全標記同時存在,必須滿足如下條件:數(shù)組類型組件的值,兩個安全標記中必須相同;集合類型組件的值,寫訪問權(quán)限安全標記必須包含于讀訪問權(quán)限安全標記中;樹類型組件的值,寫訪問權(quán)限安全標記必須和讀訪問權(quán)限安全標記相同或者其子孫節(jié)點。
其中一個用戶能被授予多個安全標記,但對于一個安全策略中的標記最多只能授予一個讀Oracle強制訪問權(quán)限安全標記和一個寫訪問權(quán)限安全標記。
(2)行級安全標記
使用安全標記在行級保護表。
以下是引用片段:
- CREATE TABLE T1 (
- A DB2SECURITYLABEL,
- B INTEGER,
- C CHAR(5))
- SECURITY POLICY DataAccess
DB2SECURITYLABEL是標記列的類型,實際內(nèi)部處理為VARBINARY(128)。標記列隱含是NOT NULL WITH DEFAULT,默認值是用戶的寫安全標記。
(3)列級安全標記
使用安全標記在列級保護表。
以下是引用片段:
- CREATE TABLE T1 (
- A CHAR(8) SECURED WITH ManagerLabel,
- B INTEGER,
- C CHAR(5))
- SECURITY POLICY DataAccess
(4)表級安全標記
標記安全標記實際是利用列級安全標記實現(xiàn)。
以下是引用片段:
- CREATE TABLE T1 (
- A CHAR(8) SECURED WITH ManagerLabel,
- B INTEGER SECURED WITH ManagerLabel,
- C CHAR(5) SECURED WITH ManagerLabel)
- SECURITY POLICY DataAccess
在所有Oracle強制訪問的列上設(shè)置同一個安全標記,把一個表作為一個整體和一個安全標記關(guān)聯(lián),這樣節(jié)約了行級安全標記比較的時間開銷和存儲的空間開銷。
注意:一個表上只能有一個安全策略,一個列上也只能使用表中安全策略的一個標記,一個表上也只能有一個行級標記列。