999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MySQL的可定制強制訪問控制的研究與實現

2007-12-31 00:00:00吳飛林王曉艷
計算機應用研究 2007年11期

摘要:結合MySQL數據庫系統,通過在其源代碼中增加安全策略函數、修改原有數據字典、擴展SQL 語句以及建立安全策略統一管理平臺的方法,實現了可定制強制訪問控制機制。所實現的安全數據庫原型系統使數據庫安全管理員可以根據應用領域不同的安全需求靈活定義標簽結構和訪問規則,為增強安全數據庫產品可用性、靈活性提供了一種新思路。

關鍵詞:數據庫安全;多級安全模型;強制訪問控制

中圖分類號:TP309文獻標志碼:A

文章編號:1001-3695(2007)11-0117-04

數據庫安全的相關研究工作至今已走過三十多年的歷程,取得了豐碩的成果。國外有Trusted Oracle、Informix OnLine/ Secure、Sybase Secure SQL Server 等幾種商業多級安全關系數據庫管理系統(MLS RDBMS);國內的安全數據庫產品及原型系統包括COBASE DBMS、Openbase DBMS、DM 系列等[1]。

然而,MLS RDBMS 的適用范圍有一定的局限性,因為現有的安全數據庫產品一般嚴格實現某種模型,又或根據特定需求將模型改進后予以實現。這種實現方式雖然能夠為所設計的安全數據庫或原型系統提供標簽式安全保護,但系統的標簽結構和安全訪問規則只能是一種既定的形式,如BLP[2]模型中〈密級,范疇〉式的標簽結構以及上讀、下寫規則。這種單一、固定的標簽安全策略無法滿足應用領域中多樣化的需求。為解決上述問題,使系統不僅能夠提供標簽安全性,而且可以根據具體的應用需求進行安全訪問規則與標簽結構的自定義。本文以MySQL 5.0.22 為基礎,實現可定制強制訪問控制。系統通過一個統一的策略管理平臺為不同的應用定制相應的安全策略。

1MySQL 數據庫管理系統

MySQL數據庫管理系統是一個多用戶、多線程SQL 數據庫服務器,采用客戶端/服務器結構;其現有的安全機制是基于用戶的自主訪問控制機制。任何一個用戶只要通過了MySQL 存取控制的兩個階段(連接檢查以及對每個請求的權限檢查) 就可以操作數據庫中的數據。

數據字典用于存儲用戶定義的所有對象的相關信息、數據庫結構信息以及內部表的有關信息。它永遠駐留在系統表空間里。用戶或數據庫管理人員可利用數據字典中存儲的內容來查看數據庫信息。MySQL 系統表空間位于data 目錄下的MySQL目錄。表1 說明了數據庫中與訪問控制有關的系統表名稱及功能。

這些系統表是MySQL 數據庫系統的權限表。所有的權限表均由兩大類別的數據列構成,即用來表明權限作用范圍的數據列和用來給出權限的數據列。這些數據列中的權限又可以進一步劃分為管理性操作權限和數據庫/數據表操作權限[3]。

2安全體系結構的設計

強制訪問控制是根據安全標簽來控制用戶對數據的訪問,因此需要在系統中保存用戶和數據的安全標簽信息。本文中將用戶和數據的安全標簽以及相關的安全策略信息放在單獨的數據庫表中,統稱為安全信息表。本文同時提供一套圖形化的標簽安全策略管理系統,通過該系統安全管理員可以定義安全策略、管理安全標簽、對用戶進行授權以及進行策略應用管理等。在數據庫底層增加強制訪問控制模塊進行強制訪問控制檢查。需要指出的是,即使增加了強制訪問控制模塊,數據庫本身的自主訪問控制也是必需的,兩者必須結合使用。只有通過了自主訪問控制的訪問請求才能到達強制訪問控制模塊。數據庫訪問控制安全體系結構如圖1所示。

2.1標簽管理

安全標簽決定用戶讀寫數據的能力。在可定制強制訪問控制原型系統中,安全標簽的結構不再是單一〈密級,范疇〉式,在不同應用環境中,它們的組成方式可能不同。

本文先以BLP 模型為例介紹文中用到的幾個名詞。在BLP 模型中,主體和客體均被賦予一個安全標簽,由密級和范疇組成。密級又分為絕密、機密、保密、普通四級。安全標簽可以表示為L=(C,S)。其中:C是密級;S是范疇。密級所包含的絕密、機密、保密、普通四個等級,稱它們為元素;密級或范疇在文中稱為標簽組件,由一個或者多個有序或無序的元素組成;一個或多個標簽組件的組合則構成標簽類型,如(C,S)。

標簽管理模塊提供定義、修改和刪除標簽組件,以及根據已定義的合法標簽組件定義、修改、刪除標簽類型的功能。在創建的標簽類型表中會有兩列,分別記錄每一個標簽組件上運用的讀、寫規則。創建標簽組件與標簽類型是實現強制訪問控制的第一步。

2.2策略管理

策略管理模塊負責定義、修改和刪除強制訪問控制策略,以及啟用和關閉等操作。在應用強制訪問控制安全策略之前必須先定義,包括為策略選擇一個標簽類型。強制訪問控制的其他組件只有在具體的安全策略下才有意義。定義好策略后,可以將策略應用到某個表或schema上。只有應用了強制訪問控制策略的表才會受強制訪問控制的保護。出于靈活考慮,可以打開或關閉schema或者某個具體表上的策略。關閉狀態的策略不會產生強制訪問控制的效果。

2.3用戶授權管理

只有獲得授權的用戶才可能訪問安全策略保護下的數據。定義安全標簽之后,就可以對用戶進行授權。實際應用中,用戶的讀、寫操作在某個具體標簽組件上的授權往往不是一樣的,如讀、寫范疇,用戶可以讀其他部門的數據,并不意味著也可以寫這些數據。因此本文把用戶在每一個標簽組件上的讀、寫授權分開。用戶授權管理可以指定用戶在某個標簽組件上的最大讀、寫授權和最小讀、寫授權,以及用戶進行插入操作時數據的默認安全級。為滿足數據備份和恢復的需求,還可以指定用戶特權,擁有特權的用戶可以越過強制訪問控制檢查,直接訪問數據。

2.4強制訪問控制檢查

強制訪問控制檢查是強制訪問控制的核心。它首先根據用戶身份查詢安全信息表,獲取用戶當前授權信息,然后結合數據的安全標簽信息以及用戶訪問數據的模式,依據強制訪問控制安全檢查規則正確處理訪問請求。

3系統實現的關鍵技術

3.1數據字典的改造

為了實現可定制強制訪問控制,系統需要對MySQL 原有的數據字典進行改造,增加七個系統表,即安全規則表、標簽組件表、標簽類型表、標簽表、策略信息表、策略應用信息表、用戶授權信息表。其中原型系統有別于傳統安全數據庫產品,創建了安全規則表、標簽組件表、標簽類型表;用戶的授權信息在用戶授權信息表中也可能不再僅由一行數據表示,而是根據用戶獲得授權的標簽類型的數量以及每個標簽類型中標簽組件的數量決定其占據的數據行數。

3.1.1安全規則表mac_rule

原型系統允許數據庫安全管理員自定義標簽訪問的規則,DBMS再根據它決定一個數據庫用戶是否允許訪問被標記的數據行。訪問規則可以分為兩類,即讀訪問規則和寫訪問規則。當一個用戶企圖讀被標記的一行記錄時使用讀訪問規則;當一個用戶企圖插入、更新、刪除一行被標記的記錄時,使用寫訪問規則。在這兩種情況下,訪問規則如下:

Access Label component-name

〈operator〉

Row Label component-name

操作符的類型是根據標簽組件來的。如果標簽組件是有序集,則操作符是{=,<=,<,>,>=,!=}中任意一種;若標簽組件是無序集,則操作符是{INCLUDE,IN,INTERSE ̄CT}。無序集可以是多值的,在其上只能進行集合操作[4]。

安全規則表保存了訪問規則中操作符的字符表示形式,其結構可表示為mac_rule(rule_id, rule_name);從0~9 分別記錄了{NULL,=,<=,<,>,>=,!=,INCLUDE,IN,INTERSECT }十種比較方式。其中NULL 代表不作任何比較,直接返回“真”。

3.1.2標簽組件表mac_label_component

在可定制強制訪問控制機制下,安全數據庫的標簽組件并不是固定的,一個標簽類型可能包含一個或多個標簽組件。所以與傳統安全數據庫產品中增加安全等級表和安全范疇表兩個系統表不同,原型系統增加標簽組件表,用于記錄不同的標簽組件以及各標簽組件的不同元素。其表結構是mac_label_component(label_comp, label_ele_id, label_ele_str)。Label_comp 字段是標簽組件名;label_ele_id 字段是標簽組件中元素的數字形式;label_ele_str 字段是標簽組件中元素的字符表示。

3.1.3標簽類型表mac_label_type

標簽類型表保存了系統中所包含的標簽類型、各類型中標簽組件的構成形式以及各標簽組件上的讀寫規則。假設數據庫安全管理員創建了名為MLS 的標簽類型,此類型包括兩個標簽組件,即level和category,讀寫規則為下讀、上寫。此時標簽類型表的結構與存儲的數據如表2 所示。

原型系統假設用戶在每個標簽組件上的授權是在一個范圍內取值,且讀寫權限分開。所以用戶具有在某個標簽組件上最大讀、最小讀、最大寫、最小寫四類授權。如果用戶授權不是一個范圍,用最大讀、最大寫字段存儲;如果用戶讀寫權限不分開,用最大讀字段存儲用戶授權。

對表2筆者作如下解釋:標簽類型、組件名字段分別記錄了標簽類型以及該類型下的標簽組件;組件id 既是標簽組件的數字形式,又確定了標簽組件在標簽字符串表示中出現的先后順序,如MLS 類型的一條標簽可以表示為(level: category);最大讀、最小讀、最大寫、最小寫四個字段保存的數字對應安全規則表中操作符的數字表示形式,如“5”代表“>=”,表示用戶最大讀安全等級須大于或者等于數據行安全等級的訪問規則;多值字段說明組件是否允許包含多個值。

表2 的意義是:當用戶的安全等級大于或等于數據行的安全等級,并且用戶的安全范疇包含數據行的安全范疇,用戶可以對數據進行讀操作;當用戶的安全等級小于或等于數據行的安全等級,并且用戶的安全范疇包含于數據行的安全范疇,用戶可以對數據進行寫操作,即BLP模型的下讀、上寫規則。

此外,標簽表記錄系統中標簽所屬的類型和字符串形式,如果有一條標簽其類型是〈等級,范疇〉,則可表示為 level:category1[,…]。其中:“:”用來分隔不同的標簽組件;“,”則把不同的元素分隔開。策略信息表記錄系統所定義策略的相關信息,包括該策略采用的標簽類型、策略狀態等,一個策略只能指定一個標簽類型;策略應用信息表則記錄各策略在數據表上的應用情況,系統規定一個表只能應用一種策略,enabled 字段表示策略在單獨表上的啟用狀態;用戶授權信息表保存用戶在各標簽組件上的特權、寫數據時數據行的默認安全值以及最大讀、最小讀、最大寫、最小寫四類授權。

3.2SQL 語句的擴展

原型系統提供一個安全策略管理平臺,使強制訪問控制管理更為簡易,同時也減少了SQL 語句擴展的需求。但是安全策略的應用涉及到同時對系統表和相關數據表的操作,因此本文對安全策略應用管理部分進行了SQL 語句擴展;對受安全策略保護的數據表進行操作需要對DML 語句進行安全增強。

3.2.1安全策略應用管理SQL語句擴展

本文使用類似BNF 范式的語法來說明語句的擴展結構,大寫代表關鍵字。

1)應用安全策略

〈apply_policy_stmt〉::=APPLY SECURITY POLICY

policy_name ON 〈table_name〉 [〈with_option〉]

策略應用在某個表上后,系統會在該表上增加一列,表示標簽。該列是系統列,不能被用戶通過修改表定義的語句修改或刪除。當語句不含〈with_option〉時,表示應用的策略取定義時指定的選項作為默認選項,而 WITH OPTION NO則表示不使用任何選項。

2)取消應用安全策略

〈unapply_policy_stmt〉::=

UNAPPLY SECURITY POLICY policy_name ON 〈table_name〉

取消策略應用后系統會把表中表示標簽的列刪除。

3.2.2DML語句擴展

應用了安全策略的表將被增加一系統列sys_col_label用于記錄行標簽,因此會對DML語句造成一定的影響。為了盡可能減小對用戶的影響,引入兩個函數:

a)LableID (′lable_sting′)。它在標簽表中找出字符串label_string 表示的標簽所對應的數字形式。

b)LableNewID (′label_string′)。完成與LableID() 同樣的功能,但在找不到的情況下創建一個新的安全標記[5]。

可以在DML語句中使用這兩個函數。例如:

SELECT * FROM table1 

WHERE sys_col_label = LableID (′…′)

上面的語句根據安全標記(必須存在)進行查詢:

INSERT INTO table1 (col1 ,col2 , sys_col_label) 

VALUES (col1_val, col2_val,LableID (′…′))

上面的語句插入一行,使用指定的安全標記(必須已存在并在授權范圍內):

UPDATE table1 SET 

sys_col_label = LableNewID (′…′)

WHERE col1 = some_val

上面的語句更新行的安全標記(可能創建新的安全標記,并且必須在授權范圍內)。

3.3MAC 檢查函數設計

用戶的訪問請求通過自主訪問控制檢查后,轉入強制訪問控制檢查模塊。筆者將對模塊中核心函數的功能和算法予以介紹。

3.3.1判斷標簽表函數 

check_table_is_labeled(table_name)函數檢查所要訪問的數據表是否受到強制訪問控制檢查模塊的保護。具體算法如下:

a)查詢策略應用信息表mac_policy_applied,判斷該表是否應用了安全策略。如果是則轉b);否則轉e)。

b)策略在該表上是否已經打開。如果是則轉c);否則轉e)。

c)查詢策略信息表mac_policy_info,判斷安全策略本身是否處于打開狀態。如果是則轉d);否則轉e)。

d)返回該表是標簽表,即該表受到強制訪問控制檢查保護。

e)返回該表是普通表。

3.3.2強制訪問控制執行函數

Check_row_access(row_label, user_name) 函數根據行標簽的數字表示形式row_label 以及用戶名user_name,從系統表中提取行標簽的內部值、用戶訪問標簽的內部值、標簽訪問規則,執行強制訪問控制檢查。具體的算法如下(這里假設創建的標簽類型為MLS,此類型由(level,category)組成):

a)根據標簽數字形式row_label,從標簽表mac_label中提取標簽類型label_type(MLS 類型)、標簽字符串形式label_string,并根據label_type與label_string的值,確定行標簽各個組件的值( (level, category) 的值);b)根據用戶名user_name 和標簽類型(MLS類型),查詢用戶授權信息表mac_user_auth,提取用戶在該標簽類型各個標簽組件上的最大讀、最小讀、最大寫、最小寫、默認行安全標記、特權等信息;

c)查詢標簽類型表,獲取每個組件的讀寫規則;

d)對每個標簽組件逐一進行規則檢查,如果條件均成立則返回true,允許用戶進行讀寫操作;否則拒絕請求。

4原型系統應用

下面筆者以原型系統實現BLP 模型為例,驗證可定制強制訪問控制的可行性:

a)利用原型系統實現任何形式的強制訪問控制,均是從定義標簽組件開始。數據庫安全管理員通過安全策略統一管理系統在標簽組件表中添加如下數據:

((“level”, 1, “unclassified”), (“level”, 2, “confidential”), (“level”, 3, “secret”), (“level”, 4, “top secret”));

((“category”, 1, “math”), (“category”, 2, “chemic”),(“category”, 1, “history”) )

系統添加了level、category兩個標簽組件,它們分別擁有四個、三個元素。

b)如3.1.3 節所示,在標簽類型表中添加相應數據定義標簽類型和標簽訪問規則。

c)根據上述表的內容,在標簽表中插入相應的標簽信息;在策略信息表中增加一條策略信息,該策略應用了MLS 標簽類型。

d)將策略應用到想要增加標簽安全性的數據表上,并向用戶授權。

e)執行一次flush privileges命令,讓數據庫服務器重新裝載安全信息表。

定義好標簽訪問策略并應用到數據表上后,當用戶對一個數據表進行SQL 操作時,強制訪問控制模塊先調用check_table_is_labeled 函數,判斷用戶要訪問的數據表是否為標簽表。如果是,調用check_row_access 函數執行強制訪問控制檢查;如果不是,按普通SQL 操作執行。

5結束語

本文介紹了MySQL 數據庫管理系統中可定制強制訪問控制的實現。這種實現方式使數據庫安全管理員能夠以標簽訪問策略為基礎,根據應用領域提出的不同需求,自定義多級安全數據庫中的標簽類型、標簽訪問規則,增強了安全數據庫產品實現的靈活性,大大拓展了其適用范圍。

參考文獻:

[1]張敏, 徐震, 馮登國. 數據庫安全 [M]. 北京: 科學出版社, 2005:196-232.

[2]BELL E,LAPADULA L J.Secure computer system: unified exposition and multics interpretation, Technical Report MTR-2997 [R].Bedford: MITRE Corporation,1976.

[3]MySQL reference manual v5.1[EB/OL].[2006-07].http://dev.mysql.com/doc/.

[4]RJAIBI W, BIRD P. A multi-purpose implementation of mandatory access control in relational database management systems[C]//Proc of the 30th VLDB Conference. Toronto: [s.n.], 2004:1010-1020.

[5]徐志垚. 國產安全數據庫Secure_OSCAR的安全體系結構及實現分析[D]. 杭州: 浙江大學, 2005:19-36.

“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 日韩午夜片| 亚洲日韩第九十九页| 色妞永久免费视频| 亚洲日本中文字幕乱码中文| 天天色天天操综合网| 中文字幕人成人乱码亚洲电影| 91精品网站| 全午夜免费一级毛片| 在线观看欧美国产| 亚洲色精品国产一区二区三区| 亚洲欧美人成电影在线观看| 99久久国产综合精品2023| 午夜福利在线观看成人| 亚洲天堂网在线视频| 色香蕉影院| 夜夜爽免费视频| 日韩AV无码一区| 国产女人爽到高潮的免费视频 | 91成人免费观看| 91视频精品| 欧美五月婷婷| 欧美一级在线看| 永久天堂网Av| AⅤ色综合久久天堂AV色综合| 亚洲男人天堂2020| 熟妇无码人妻| 在线国产综合一区二区三区| 91久久天天躁狠狠躁夜夜| 99人体免费视频| 久久青草免费91观看| 成人亚洲视频| 亚洲精品日产AⅤ| 一本色道久久88| 国产精品林美惠子在线观看| 欧美日韩免费在线视频| 国产成人综合亚洲网址| 久久综合色播五月男人的天堂| 久久国语对白| 亚洲欧美自拍中文| 一本视频精品中文字幕| 欧美日一级片| 四虎影视8848永久精品| 欧美中文字幕一区| 香蕉伊思人视频| 欧美伦理一区| 国产中文一区二区苍井空| 国产精品一区二区久久精品无码| 在线观看精品国产入口| 九色在线视频导航91| 久久91精品牛牛| 二级毛片免费观看全程| 人妻出轨无码中文一区二区| 国产91高跟丝袜| a欧美在线| 亚洲中久无码永久在线观看软件| 麻豆AV网站免费进入| 不卡午夜视频| 国产黄在线观看| 狠狠色丁香婷婷| 色爽网免费视频| 日本欧美中文字幕精品亚洲| 直接黄91麻豆网站| 69综合网| 国产福利免费观看| 日韩黄色精品| 午夜激情婷婷| 干中文字幕| 欧美一区二区丝袜高跟鞋| 东京热一区二区三区无码视频| 亚洲第一黄片大全| 久久99这里精品8国产| 亚洲人成电影在线播放| 久久国产精品77777| 一本色道久久88综合日韩精品| 日韩精品一区二区三区视频免费看| 亚洲国产成人精品青青草原| 99久久精品久久久久久婷婷| 91年精品国产福利线观看久久 | 国产丝袜啪啪| 国产精品流白浆在线观看| 色欲色欲久久综合网| 真实国产乱子伦视频|