亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MongoDB的RBAC訪問控制技術(shù)研究

        2017-03-14 02:24:23李曄鋒
        關(guān)鍵詞:數(shù)據(jù)庫用戶模型

        ◆李曄鋒

        MongoDB的RBAC訪問控制技術(shù)研究

        ◆李曄鋒1,2

        (1.北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 北京 100124;2.寧波工程學(xué)院電信學(xué)院 浙江 315211)

        作為一種開源的NoSQL數(shù)據(jù)庫,MongoDB被廣泛應(yīng)用于大數(shù)據(jù)處理與分析中,因此它的安全性顯得至關(guān)重要。MongoDB使用基于角色的訪問控制(RBAC)方式來控制屬于不同角色的用戶對數(shù)據(jù)庫資源的訪問。本文針對MongoDB以文檔形式存儲數(shù)據(jù)和非SQL形式訪問數(shù)據(jù)的特點(diǎn),分析了該訪問控制模型中的各組成部分以及它們之間的關(guān)系,從而總結(jié)出這種訪問控制方式的優(yōu)缺點(diǎn)。

        NoSQL;MongoDB;RBAC

        0 前言

        MongoDB是開源的文檔型NoSQL數(shù)據(jù)庫,它擺脫了關(guān)系模型的限制,具有靈活的存儲結(jié)構(gòu),并且支持分布式部署,使得它的查詢性能遠(yuǎn)高于關(guān)系數(shù)據(jù)庫[1],因此被廣泛應(yīng)用于云計(jì)算和大數(shù)據(jù)環(huán)境[2]。但是NoSQL的安全性普遍相對薄弱,Zahid在他的學(xué)術(shù)論文[3]中對各種分片式的NoSQL數(shù)據(jù)庫進(jìn)行了比較,其中對MongoDB的評論如下:“數(shù)據(jù)庫的安全配置等級非常低,完全依賴于數(shù)據(jù)庫管理員”。因此,在學(xué)術(shù)界和企業(yè)界有不少提高M(jìn)ongoDB安全性的研究,例如Sathyadevan等人提出了一種提升MongoDB數(shù)據(jù)級別安全的解決方案[4],Hou等人對MongoDB的注入情況進(jìn)行了檢測和分析[5],師德清把MongoDB應(yīng)用到CRP系統(tǒng)中,并對它的安全認(rèn)證機(jī)制進(jìn)行分析[6],宋志毅等人實(shí)現(xiàn)了基于MongoDB的數(shù)據(jù)加密技術(shù)[7]。本文從訪問控制的角度分析MongoDB的安全性,首先在第一章介紹MongoDB的存儲和訪問特性,然后在第二章闡述現(xiàn)有的一些訪問控制技術(shù),接著在第三章重點(diǎn)分析MongoDB中RBAC模型的各組成部分以及它們之間的關(guān)系,最后在第四章總結(jié)全文。

        1 MongoDB概述

        1.1 MongoDB的數(shù)據(jù)存儲方式

        MongoDB只有三種存儲對象:數(shù)據(jù)庫(Database)、集合(Collection)和文檔(Document),它們被統(tǒng)稱為資源(Resource)。數(shù)據(jù)庫是最高級存儲對象,由多個(gè)集合組成;集合相當(dāng)于關(guān)系數(shù)據(jù)庫的表,每個(gè)集合包含多個(gè)文檔;文檔是MongoDB的最小存儲單元,它采用了BSON結(jié)構(gòu),每個(gè)文檔包含多個(gè)“字段”和“取值”對。

        BSON是一種類似json的二進(jìn)制存儲格式,它的優(yōu)點(diǎn)在于支持內(nèi)嵌的文檔對象和數(shù)據(jù)對象,與關(guān)系數(shù)據(jù)庫相比存儲結(jié)構(gòu)更加靈活,能夠更好地描述數(shù)據(jù)之間的聯(lián)系。例如,某個(gè)學(xué)生李明的語文和數(shù)學(xué)兩門課成績可以表示如下:

        如果使用關(guān)系數(shù)據(jù)庫存儲這些信息,則需要把學(xué)生信息和課程信息分別存儲在兩張表中,而MongoDB通過這種文檔內(nèi)嵌的方式,能夠有效減少集合的數(shù)目,規(guī)避了連接操作,從而提高了查詢性能。此外,MongoDB還會為每個(gè)文檔對象生成全局唯一的ObjectID作為主鍵,它不但能夠用于區(qū)分不同的文檔,而且能夠用于排序、引用和創(chuàng)建索引,以達(dá)到更快的查詢速度。

        1.2 MongoDB的數(shù)據(jù)訪問方式

        作為一種NoSQL的數(shù)據(jù)庫,MongoDB使用了一種交互式的命令對數(shù)據(jù)庫進(jìn)行操作訪問。絕大多數(shù)的數(shù)據(jù)庫命令使用函數(shù)的方式實(shí)現(xiàn),例如,假設(shè)需要在1.1節(jié)定義的student集合中需要查找學(xué)生“李明”的語文課成績,則可用如下的find命令實(shí)現(xiàn)

        db.student.find({“姓名”:”李明”},

        {“課程”:{$elemMatch:”語文”},”_id”:0,”課程.成績”:1})

        命令返回的查詢結(jié)果也是BSON格式的文檔類型,它能夠作為中間結(jié)果保存在某一個(gè)變量中,為下一個(gè)查詢命令所使用。這種數(shù)據(jù)訪問方式雖然更加靈活,但是對數(shù)據(jù)庫管理員有更高的技術(shù)要求。

        2 訪問控制技術(shù)

        在20世紀(jì)60年代末,科研工作者提出了訪問控制技術(shù),其主要目的是防止信息和資源被非常用戶訪問使用,或被合法用戶進(jìn)行非授權(quán)的使用。經(jīng)過40多年的發(fā)展,一些訪問控制模型已被廣泛應(yīng)用到各種應(yīng)用中,包括自主訪問控制(DAC)、強(qiáng)制訪問控制(MAC)和基于角色的訪問控制(RBAC)等。

        自主訪問控制使用關(guān)聯(lián)表實(shí)現(xiàn)主體對客體的訪問。關(guān)聯(lián)表可以基于主體或者基于客體,前者以主體為核心,為每個(gè)主體創(chuàng)建一個(gè)可被它訪問的客體以及訪問權(quán)限的明細(xì)表,后者以客體為核心,存儲可以對它訪問的主體以及訪問權(quán)限的明細(xì)表。這種訪問控制技術(shù)的優(yōu)點(diǎn)在于靈活性較好,實(shí)現(xiàn)簡單,缺點(diǎn)在于關(guān)聯(lián)表占用大量的存儲空間,并且對權(quán)限的傳遞以及客體的副本管理相當(dāng)困難。

        強(qiáng)制訪問控制為每個(gè)主體和客體分配安全標(biāo)簽,每種標(biāo)簽以不同的取值來表示安全等級,這樣主體對客體的訪問權(quán)限取決于安全標(biāo)簽的等級組合。這處訪問控制技術(shù)同樣實(shí)現(xiàn)簡單,并且數(shù)據(jù)只能根據(jù)標(biāo)簽等級從一級流向一級,具有較強(qiáng)的機(jī)密性,缺點(diǎn)在于靈活性不夠,而且犧牲了數(shù)據(jù)的完整性。

        基于角色的訪問控制模型由喬治梅森大學(xué)的Sandhu等人于1996年首次提出,經(jīng)過不斷的完善形成了RBAC96模型簇[8],它的核心思想是在用戶和權(quán)限之間引入了角色(Role)的概念,如圖1所示,通過用戶分配(UA)和權(quán)限分配(PA)為用戶(主體)和權(quán)限之間的關(guān)聯(lián)。相比DAC和MAC,它更具靈活性和安全性,但是缺乏操作順序的控制機(jī)制。

        圖1 RBAC模型核心結(jié)構(gòu)

        2004年,Sandhu等人又提出了一種使用控制模型(UCON)[9],被學(xué)術(shù)界命名為“下一代訪問控制模型”。該模型對傳統(tǒng)的存取控制進(jìn)行了一定的擴(kuò)展,定義了授權(quán)(Authorization)、義務(wù)(Obligation)和條件(Condition)三個(gè)新的因素,以及存取控制的連續(xù)性(Continuity)和可變性(Mutability)兩個(gè)新的屬性,具有更高的安全性、靈活性和有效性,但是模型的定義也更加抽象,不利于具體實(shí)現(xiàn),因此并沒有在信息安全領(lǐng)域得到廣泛應(yīng)用。

        3 MongoDB的RBAC模型分析

        MongoDB使用RBAC管理用戶的訪問控制,它的核心結(jié)構(gòu)與圖1類似,只不過它把具體的操作行為(Action)與被操作的對象放在一起統(tǒng)稱為權(quán)限(Previlege)。

        3.1 MongoDB的用戶

        MongoDB在安裝完成后沒有任何用戶,不用登錄即可任意創(chuàng)建數(shù)據(jù)庫和集合,也可以對元數(shù)據(jù)庫admin中的部分集合進(jìn)行操作,因此不具有任何安全性,必須手動(dòng)創(chuàng)建用戶才能激活驗(yàn)證功能。

        MongoDB使用db.createUser命令創(chuàng)建用戶,所有的用戶信息被存儲在admin數(shù)據(jù)庫下的system.users集合中。默認(rèn)情況下,用戶屬于創(chuàng)建時(shí)所在的數(shù)據(jù)庫,并只能對該數(shù)據(jù)庫進(jìn)行操作。但是在admin數(shù)據(jù)庫下創(chuàng)建的用戶可以被賦予相應(yīng)的角色訪問多個(gè)數(shù)據(jù)庫。例如,使用下面的命令即可創(chuàng)建一個(gè)超級用戶sa,它被賦予root角色,可以對整個(gè)數(shù)據(jù)庫執(zhí)行任何操作。

        use admin

        db.createUser({user:”sa”,pwd:”123456”,roles:[“root”]})

        此后,重新啟動(dòng)Mongd服務(wù)并加上--auth參數(shù),然后再啟動(dòng)Mongo控制臺,需要先切換到admin數(shù)據(jù)庫下,再使用db.auth命令進(jìn)行登錄驗(yàn)證才可以進(jìn)一步的操作。

        3.2 MongoDB的權(quán)限

        MongoDB的權(quán)限由操作行為和被操作的對象組成,用BSON結(jié)構(gòu)可以表示如下:

        其中resource字段表示被操作的對象,可以是數(shù)據(jù)庫或集合,也可以是分布式模式下的集群。另一個(gè)字段actions表示行為,它們可以是操作性的,例如1.2節(jié)所述的數(shù)據(jù)查找find命令,以及數(shù)據(jù)插入insert操作等,也可以是控制性的,例如3.1節(jié)所述的createUser命令,以及修改密碼changePassword等等。

        每個(gè)權(quán)限定義中只能指定一個(gè)資源,但是可以有多個(gè)訪問行為,表示可以對某個(gè)資源進(jìn)行哪些操作。因此,MongoDB中的權(quán)限不再拘泥于傳統(tǒng)的“讀”、“寫”和“執(zhí)行”等操作,更加靈活機(jī)動(dòng)以適應(yīng)用戶的各種需要。

        3.3 MongoDB的角色

        角色是MongoDB訪問控制模型中的核心組件,也是連接用戶和權(quán)限的紐帶。MongoDB中已經(jīng)自帶了一些系統(tǒng)定義的角色,此外用戶還可以通過組合權(quán)限自定義角色。MongoDB中角色的BSON描述形式如下:

        其中的privileges字段中以數(shù)組的形式包含了該角色擁有的權(quán)限,每個(gè)權(quán)限的構(gòu)造如3.2節(jié)所述;roles字段中包含了該角色繼承的其它角色,每個(gè)被繼承的角色表現(xiàn)形式為:{role:“<角色名>”,db:“<數(shù)據(jù)庫名>”}。角色繼承是MongoDB的重大特點(diǎn),例如3.1節(jié)中定義超級用戶sa時(shí)用到的root角色就是由多個(gè)基本角色中繼承而來。

        在系統(tǒng)自帶的角色中,包含同一類型行為的權(quán)限被放在了一起,例如read角色擁有一些只讀行為如find、listCollections、 listIndex等的權(quán)限,而userAdmin角色中包含了一些管理級的行為如createRole、createUser、changePassword等。行為跟角色之間是多對多關(guān)系,即一個(gè)角色可以有多個(gè)行為,而某個(gè)行為可以出現(xiàn)在不同的角色中。類似,用戶跟角色之間也是多對多關(guān)系,即一個(gè)用戶可以擁有多個(gè)角色,而某個(gè)角色可以屬于不同的用戶(比如有多名系統(tǒng)管理員角色)。

        用戶的自定義角色通過createRole命令創(chuàng)建,并存放在admin數(shù)據(jù)庫的system.roles集合中。對于在admin數(shù)據(jù)庫中創(chuàng)建的角色,它可以擁有操作任意數(shù)據(jù)庫的權(quán)限,并且能夠繼承在任意數(shù)據(jù)庫中創(chuàng)建的其它角色;對于在普通數(shù)據(jù)庫中創(chuàng)建的角色,只能擁有操作本數(shù)據(jù)庫的權(quán)限,并且只能繼承在本數(shù)據(jù)庫中創(chuàng)建的其它角色。

        3.4 MongoDB的RBAC模型安全隱患

        盡管MongoDB的RBAC的模型具有較強(qiáng)的靈活性,但由于它的角色并沒有等級劃分,導(dǎo)致一些低端角色可以分配高端角色。在3.3節(jié)中提到的userAdmin角色無法對數(shù)據(jù)庫進(jìn)行find、update等訪問行為,但它可以執(zhí)行createRole、createUser等數(shù)據(jù)庫管理行為,從而能夠創(chuàng)建具有root角色的用戶來獲取數(shù)據(jù)庫中的具體內(nèi)容。由于MongoDB的角色具有繼承的特性,因此一旦與該角色相關(guān)的賬戶信息被遺失,對數(shù)據(jù)庫的安全將造成極大的威脅。

        解決這個(gè)問題的關(guān)鍵在于制訂角色的安全等級劃分機(jī)制,即低等級的角色無法創(chuàng)建或?yàn)橛脩舴峙涓叩燃壍慕巧WC角色中的權(quán)限不被濫用。

        4 結(jié)束語

        本文通過對比傳統(tǒng)的訪問控制技術(shù),研究了MongoDB的RBAC模型??傮w而言,MongoDB的這種訪問控制機(jī)制具有較高的靈活性和安全性,但由于角色沒有被劃分安全等級,一些低端角色能夠分配高端角色,從而獲取更高的訪問權(quán)限。因此,在MongoDB數(shù)據(jù)庫的使用過程中,必須確保一些關(guān)鍵角色的信息不被丟失,以免造成嚴(yán)重的安全事故。

        [1]Plugge E,Hawkins T,Membrey P.The Definitive Guide to MongoDB:The NoSQL Database for Cloud and Desktop Computing[J].Springer Ebooks,2010.

        [2]杜衛(wèi)華.淺析基于MongoDB的云數(shù)據(jù)管理技術(shù)的研究與應(yīng)用[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014.

        [3] Zahid A,Masood R,Shibli M A.Security of sharded NoSQL databases:A comparative analysis[C]// Information Assurance and Cyber Security.IEEE,2014.

        [4]Sathyadevan S,Muraleedharan N,Rajan S P.Enhancement of Data Level Security in MongoDB[M]// Intelligent Distributed Computing.Springer International Publishing,2015.

        [5] Hou B,Qian K,Li L,et al.MongoDB NoSQL Injection Analysis and Detection[C]// IEEE,International Conference on Cyber Security and Cloud Computing.IEEE,2016.

        [6]師德清.淺析MongoDB數(shù)據(jù)庫在CRP系統(tǒng)中的安全認(rèn)證機(jī)制[J].科協(xié)論壇,2011.

        [7]宋志毅,馬兆豐,黃勤龍.基于保序加密的MongoDB數(shù)據(jù)加密技術(shù)研究與實(shí)現(xiàn)[C].中國通信學(xué)會學(xué)術(shù)年會,2014.

        [8]Sandhu R.Rationale for the RBAC96 family of access control models[C]// ACM Workshop on Role-Based Access Control.ACM,1996.

        [9]Park J,Sandhu R.The UCON ABC,usage control model[J].Acm Transactions on Information & System Security,2004.

        猜你喜歡
        數(shù)據(jù)庫用戶模型
        一半模型
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        數(shù)據(jù)庫
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        3D打印中的模型分割與打包
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        數(shù)據(jù)庫
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        數(shù)據(jù)庫
        91精品久久久老熟女91精品| 综合无码综合网站| 北岛玲精品一区二区三区| 久久久人妻一区二区三区蜜桃d| 亚洲爆乳无码专区www| 亚洲视频一区| 人妻有码中文字幕在线不卡| av一区二区在线免费观看| 极品老师腿张开粉嫩小泬| 亚洲五月天综合| 色播在线永久免费视频网站| 精品无码AⅤ片| 中文天堂一区二区三区| 中文字幕女同系列在线看一| 无码人妻久久一区二区三区app| 日韩成人精品在线| 午夜黄色一区二区不卡| 亚洲视频网站大全免费看| 国产无夜激无码av毛片| 中文天堂在线www| 亚洲欧洲无码精品ⅤA| 久久久精品人妻一区二区三区游戏| 天堂中文官网在线| 丝袜AV在线一区二区三区| 色婷婷久久99综合精品jk白丝| 日韩人妻中文字幕高清在线| 人妻少妇久久久久久97人妻| 免费无码国产v片在线观看| 亚洲精品美女久久久久99| 亚洲国产系列一区二区| 色老板美国在线观看| 竹菊影视欧美日韩一区二区三区四区五区 | 日本道色综合久久影院| 又污又爽又黄的网站| 音影先锋色天堂av电影妓女久久| 国产麻豆一区二区三区在| 国产成人综合亚洲看片| 最新亚洲人成网站在线| 日本一区二区在线播放| 少妇一级淫片中文字幕| 精品无码中文字幕在线|