(數據庫原理課件)Chapter12-Security_第1頁
(數據庫原理課件)Chapter12-Security_第2頁
(數據庫原理課件)Chapter12-Security_第3頁
(數據庫原理課件)Chapter12-Security_第4頁
(數據庫原理課件)Chapter12-Security_第5頁
已閱讀5頁,還剩155頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

引言數據庫的特點之一是DBMS提供統一的數據保護功能來保證數據的安全可靠和正確有效。數據的安全性保護數據庫防止惡意的破壞和非法的存取防范對象:非法用戶和非法操作數據的完整性防止數據庫中存在不符合語義的數據,即防止數據庫中存在不正確的數據防范對象:不合語義的、不正確的數據實體完整性參照完整性用戶自定義的完整性引言數據庫的特點之一是DBMS提供統一的數據保護功能來保證可信計算機系統評測標準1985年美國國防部(DoD)正式頒布《DoD可信計算機系統評估標準》(TrustedComputerSystemEvaluationCriteria,簡稱TCSEC或DoD85,又稱橘皮書)該標準擴展到數據庫管理系統,稱為TrustedDatabaseInterpretation,簡稱TDI,又稱紫皮書TCSEC(TDI)將系統的安全級別劃分為4組7個級別。可信計算機系統評測標準1985年美國國防部(DoD)正式頒可信計算機系統評測標準安全級別定義A1驗證設計(VerifiedDesign)B3安全域(SecurityDomains)B2結構化保護(StructuralProtection)B1標記安全保護(LabeledSecurityProtection)C2受控的存取保護(ControlledAccessProtection)C1自主安全保護(DiscretionarySecurityProtection)D最小保護(MinimalProtection)可信計算機系統評測標準安全級別定第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制12.1數據庫安全性控制概述非法使用數據庫的情況編寫合法程序繞過DBMS及其授權機制直接或編寫應用程序執行非授權操作通過多次合法查詢數據庫從中推導出一些保密數據12.1數據庫安全性控制概述非法使用數據庫的情況數據庫安全性控制概述(續)計算機系統中,安全措施是一級一級層層設置

計算機系統的安全模型

應用DBMSOS

DB低高安全性控制層次方法:

用戶標識和鑒定

存取控制審計視圖

操作系統安全保護

加密存儲數據庫安全性控制概述(續)計算機系統中,安全措施是一級一級層數據庫安全性控制概述(續)數據庫安全性控制的常用方法用戶標識和鑒定存取控制視圖審計密碼存儲數據庫安全性控制概述(續)數據庫安全性控制的常用方法12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別(1)用戶標識與鑒別用戶標識與鑒別(Identification&Authentication)系統提供的最外層安全保護措施(1)用戶標識與鑒別用戶標識與鑒別用戶標識與鑒別(續)用戶標識口令系統核對口令以鑒別用戶身份用戶名和口令易被竊取每個用戶預先約定好一個計算過程或者函數用戶標識與鑒別(續)用戶標識12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別(2)存取控制存取控制機制組成定義用戶權限合法權限檢查用戶權限定義和合法權檢查機制一起組成了DBMS的安全子系統(2)存取控制存取控制機制組成存取控制(續)常用存取控制方法自主存取控制(DiscretionaryAccessControl,簡稱DAC)用戶對于不同的數據對象有不同的存取權限,不同的用戶對同一對象也有不同的權限,且用戶可以將自己的權限轉授他人C2級,靈活強制存取控制(MandatoryAccessControl,簡稱MAC)每個數據對象標記一定的密級,每個用戶授予某一級別的許可證,對每一個對象控制存取B1級,嚴格存取控制(續)常用存取控制方法12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別(3)自主存取控制方法通過SQL的GRANT語句和REVOKE語句實現用戶權限組成數據對象操作類型定義用戶存取權限:定義用戶可以在哪些數據庫對象上進行哪些類型的操作定義存取權限稱為授權

(3)自主存取控制方法通過SQL的GRANT語句自主存取控制方法(續)關系數據庫系統中存取控制對象關系數據庫系統中的存取權限

自主存取控制方法(續)關系數據庫系統中存取控制對象關系數據12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別1.1.4授權與回收一、GRANTGRANT語句的一般格式:

GRANT<權限>[,<權限>]...[ON<對象類型><對象名>]

TO<用戶>[,<用戶>]...[WITHGRANTOPTION];語義:將對指定操作對象的指定操作權限授予指定的用戶

1.1.4授權與回收一、GRANTGRANT(續)發出GRANT:DBA數據庫對象創建者(即屬主Owner)擁有該權限的用戶接受權限的用戶

一個或多個具體用戶PUBLIC(全體用戶)GRANT(續)發出GRANT:WITHGRANTOPTION子句WITHGRANTOPTION子句:指定:可以再授予沒有指定:不能傳播不允許循環授權WITHGRANTOPTION子句WITHGRANT例題[例1]把查詢Student表權限授給用戶U1GRANTSELECTONTABLEStudentTOU1;例題[例1]把查詢Student表權限授給用戶U1例題(續)[例2]把對Student表和Course表的全部權限授予用戶U2和U3GRANTALLPRIVILEGES

ONTABLEStudent,CourseTOU2,U3;例題(續)[例2]把對Student表和Course表的全授權與回收(續)二、REVOKE授予的權限可以由DBA或其他授權者用REVOKE語句收回REVOKE語句的一般格式為:

REVOKE<權限>[,<權限>]...[ON<對象類型><對象名>]

FROM<用戶>[,<用戶>]...;授權與回收(續)二、REVOKEREVOKE(續)[例8]把用戶U4修改學生學號的權限收回

REVOKEUPDATE(Sno) ONTABLEStudent FROMU4;REVOKE(續)[例8]把用戶U4修改學生學號的權限收回REVOKE(續)[例9]收回所有用戶對表SC的查詢權限

REVOKESELECT ONTABLESC FROMPUBLIC;

REVOKE(續)[例9]收回所有用戶對表SC的查詢權限12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別(5)數據庫角色數據庫角色:被命名的一組與數據庫操作相關的權限角色是權限的集合可以為一組具有相同權限的用戶創建一個角色簡化授權的過程(5)數據庫角色數據庫角色:被命名的一組與數據庫操作相關的數據庫角色一、角色的創建CREATEROLE<角色名>二、給角色授權

GRANT<權限>[,<權限>]…ON<對象類型>對象名TO<角色>[,<角色>]…數據庫角色一、角色的創建數據庫角色三、將一個角色授予其他的角色或用戶GRANT<角色1>[,<角色2>]…TO<角色3>[,<用戶1>]…[WITHADMINOPTION]四、角色權限的收回REVOKE<權限>[,<權限>]…ON<對象類型><對象名>FROM<角色>[,<角色>]…數據庫角色三、將一個角色授予其他的角色或用戶數據庫角色(續)[例11]通過角色來實現將一組權限授予一個用戶。步驟如下:1.首先創建一個角色R1CREATEROLER1;2.然后使用GRANT語句,使角色R1擁有Student表的SELECT、UPDATE、INSERT權限GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;數據庫角色(續)[例11]通過角色來實現將一組權限授予一個12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別自主存取控制缺點可能存在數據的“無意泄露”原因:這種機制僅僅通過對數據的存取權限來進行安全控制,而數據本身并無安全性標記解決:對系統控制下的所有主客體實施強制存取控制策略

自主存取控制缺點可能存在數據的“無意泄露”(6)強制存取控制方法強制存取控制(MAC)保證更高程度的安全性用戶不能直接感知或進行控制適用于對數據有嚴格而固定密級分類的部門軍事部門政府部門(6)強制存取控制方法強制存取控制(MAC)強制存取控制方法(續)在MAC中,DBMS所管理的全部實體被分為兩類:主體是系統中的活動實體DBMS所管理的實際用戶代表用戶的各進程客體是系統中的被動實體,是受主體操縱的文件基表索引視圖強制存取控制方法(續)在MAC中,DBMS所管理的全部實體被強制存取控制方法(續)DBMS為每個主體和客體指派一個敏感度標記敏感度標記(Label)絕密(TopSecret)機密(Secret)可信(Confidential)公開(Public)主體的敏感度標記稱為許可證級別(ClearanceLevel)客體的敏感度標記稱為密級(ClassificationLevel)強制存取控制方法(續)DBMS為每個主體和客體指派一個敏感度強制存取控制方法(續)強制存取控制規則(1)僅當主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應的客體(2)僅當主體的許可證級別等于客體的密級時,該主體才能寫相應的客體強制存取控制方法(續)強制存取控制規則主體客體絕密絕密機密機密可信可信公開公開主體客體MAC與DACDAC與MAC共同構成DBMS的安全機制實現MAC時要首先實現DAC原因:較高安全性級別提供的安全保護要包含較低級別的所有保護MAC與DACDAC與MAC共同構成DBMS的安全機制強制存取控制方法(續)DAC+MAC安全檢查示意圖

SQL語法分析&語義檢查

DAC檢查安全檢查MAC檢查

繼續先進行DAC檢查,通過DAC檢查的數據對象再由系統進行MAC檢查,只有通過MAC檢查的數據對象方可存取。強制存取控制方法(續)DAC+MAC安全檢查示意圖先進行第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制視圖的作用1.視圖能夠簡化用戶的操作2.視圖使用戶能以多種角度看待同一數據3.視圖對重構數據庫提供了一定程度的邏輯獨立性4.視圖能夠對機密數據提供安全保護5.適當的利用視圖可以更清晰的表達查詢12.2視圖機制視圖的作用視圖機制(續)把要保密的數據對無權存取這些數據的用戶隱藏起來,對數據提供一定程度的安全保護

主要功能是提供數據獨立性,無法完全滿足要求間接實現了支持存取謂詞的用戶權限定義例:對student表,王明:SelectON‘CS’張平:AllPRIVILLAGESON‘CS’視圖機制(續)把要保密的數據對無權存取這些數據的用戶隱藏起來視圖機制(續)[例14]建立計算機系學生的視圖,把對該視圖的SELECT權限授于王平,把該視圖上的所有操作權限授于張明先建立計算機系學生的視圖CS_Student

CREATEVIEWCS_StudentASSELECT*FROMStudentWHERESdept='CS';視圖機制(續)[例14]建立計算機系學生的視圖,把對該視圖的視圖機制(續)在視圖上進一步定義存取權限GRANTSELECTONVIEWCS_StudentTO王平;

GRANTALLPRIVILIGESONVIEWCS_StudentTO張明;視圖機制(續)在視圖上進一步定義存取權限第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制12.3審計什么是審計審計日志(AuditLog)將用戶對數據庫的所有操作記錄在上面DBA利用審計日志找出非法存取數據的人、時間和內容C2以上安全級別的DBMS必須具有審計功能12.3審計什么是審計審計(續)審計分為用戶級審計針對自己創建的數據庫表或視圖進行審計記錄所有用戶對這些表或視圖的一切成功和(或)不成功的訪問要求以及各種類型的SQL操作系統級審計DBA設置監測成功或失敗的登錄要求監測GRANT和REVOKE操作以及其他數據庫級權限下的操作審計(續)審計分為審計(續)AUDIT語句:設置審計功能NOAUDIT語句:取消審計功能審計(續)AUDIT語句:設置審計功能審計(續)[例15]對修改SC表結構或修改SC表數據的操作進行審計AUDITALTER,UPDATEONSC;[例16]取消對SC表的一切審計NOAUDITALTER,UPDATEONSC;審計(續)[例15]對修改SC表結構或修改SC表數據的操作進第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制12.4數據加密數據加密防止數據庫中數據在存儲和傳輸中失密的有效手段加密的基本思想根據一定的算法將原始數據變換為不可直接識別的格式,從而使得不知道解密算法的人無法獲知數據的內容加密方法替換方法置換方法混合方法DBMS中的數據加密12.4數據加密數據加密第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制非法使用數據庫的情況編寫合法程序繞過DBMS及其授權機制直接或編寫應用程序執行非授權操作通過多次合法查詢數據庫從中推導出一些保密數據非法使用數據庫的情況12.5統計數據庫安全性統計數據庫允許用戶查詢聚集類型的信息(如合計、平均值等)不允許查詢單個記錄信息統計數據庫中特殊的安全性問題隱蔽的信息通道能從合法的查詢中推導出不合法的信息12.5統計數據庫安全性統計數據庫統計數據庫安全性(續)例1:下面兩個查詢都是合法的:1.本公司共有多少女高級程序員?2.本公司女高級程序員的工資總額是多少?如果第一個查詢的結果是“1”,那么第二個查詢的結果顯然就是這個程序員的工資數。規則1:任何查詢至少要涉及N(N足夠大)個以上的記錄統計數據庫安全性(續)例1:下面兩個查詢都是合法的:統計數據庫安全性(續)例2:用戶A發出下面兩個合法查詢:1.用戶A和其他N個程序員的工資總額是多少?2.用戶B和其他N個程序員的工資總額是多少?若第一個查詢的結果是X,第二個查詢的結果是Y,由于用戶A知道自己的工資是Z,那么他可以計算出用戶B的工資=Y-(X-Z)。原因:兩個查詢之間有很多重復的數據項規則2:任意兩個查詢的相交數據項不能超過M個

統計數據庫安全性(續)例2:用戶A發出下面兩個合法查詢:統計數據庫安全性(續)

可以證明,在上述兩條規定下,如果想獲知用戶B的工資額A至少需要進行1+(N-2)/M次查詢規則3:任一用戶的查詢次數不能超過1+(N-2)/M

如果兩個用戶合作查詢就可以使這一規定失效數據庫安全機制的設計目標:

試圖破壞安全的人所花費的代價>>得到的利益統計數據庫安全性(續)可以證明,在上述兩條規定下,如統計數據庫安全性(續)

可以證明,在上述兩條規定下,如果想獲知用戶B的工資額A至少需要進行1+(N-2)/M次查詢規則3:任一用戶的查詢次數不能超過1+(N-2)/M

如果兩個用戶合作查詢就可以使這一規定失效數據庫安全機制的設計目標:

試圖破壞安全的人所花費的代價>>得到的利益統計數據庫安全性(續)可以證明,在上述兩條規定下,如web應用安全威脅web應用安全威脅59神話:“我們的網站是安全的”“我們使用了網絡掃描工具”網絡掃描工具不懂應用,不能徹底提高web應用安全性“我們已經使用了防火墻”為了保證正常訪問,80和443端口始終要開放“我們使用了SSL加密數據”僅僅保護了交互數據,并沒有保護web應用本身“我們每個季度都進行滲透測試”應用在不斷的變更之中神話:“我們的網站是安全的”“我們使用了網絡掃描工具”60web應用安全在哪?(WASC)web應用安全在哪?(WASC)61OWASPtop10十大安全威脅跨站腳本攻擊(XSS)注入缺陷SQL注入,XPATH注入…惡意文件執行(遠程文件包含)不安全的直接對象引用(Parametertampering)跨站請求偽造(CSRF)信息泄露和錯誤處理不當身份驗證和會話管理缺陷不安全的加密存儲通信安全驗證繞過OWASPtop10十大安全威脅跨站腳本攻擊(XSS)62(數據庫原理課件)Chapter12-Security63(數據庫原理課件)Chapter12-Security64跨站腳本攻擊“XSSflawsoccurwheneveranapplicationtakesusersupplieddataandsendsittoawebbrowserwithoutfirstvalidatingorencodingthatcontent.XSSallowsattackerstoexecutescriptinthevictim'sbrowserwhichcanhijackusersessions,defacewebsites,possiblyintroduceworms,etc.”Web應用把用戶輸入的未經過濾或編碼的數據直接發送給瀏覽器。XSS會導致攻擊者在受害者的瀏覽器中執行腳本程序,這些腳本程序可以劫持用戶的會話、修改網頁甚至傳播蠕蟲。JavaScript,VBScript,ActiveX,HTML,orFlash都可以注入到存在漏洞的web應用網頁掛馬釣魚攻擊跨站腳本攻擊“XSSflawsoccurwheneve65XSS攻擊XSS攻擊66XSS攻擊XSS攻擊67XSS的危害從你下在瀏覽的域中偷到你的信息完全修改你看到的頁面內容從現在開始,跟蹤你在瀏覽器中的每一個動作把你重定向到一個惡意站點利用瀏覽器的漏洞控制你的機器XSS的危害從你下在瀏覽的域中偷到你的信息68阻止XSS攻擊顯示用戶輸入的數據時進行轉義轉義成無害的html字符<script>變成<script>仍然會顯示成<script>過濾程序的正確編寫過濾基于所有允許的字符,而不是基于“惡意”字符如:只接收A,B,Cor1,2,3新出現的編碼方案可以繞過基于“惡意”字符的過濾程序XSScheatsheet:/xss.html阻止XSS攻擊顯示用戶輸入的數據時進行轉義69什么是SQL注入TheabilitytoinjectSQLcommandsintothedatabaseengine

throughanexistingapplication什么是SQL注入70產生的原因網絡應用接受用戶的輸入提高交互性用戶登錄查詢輸入的數據未經過濾用戶登錄:$sql=“Select*FromusersWhereusername=‘”.$account.“’AND”.“passwd=‘“.$passwd.“’”;$Account=foo,$passwd=bar$sql=“Select*FromUsersWhereusername=‘foo’ANDpasswd=‘bar’”;產生的原因網絡應用接受用戶的輸入提高交互性71Howitworks?$sql=“Select*FromusersWhere”. “username=‘”.$account.“’AND”. “passwd=‘“.$passwd.“’”;$account=foo,$passwd=bar’OR‘1’=‘1$sql=“Select*FromusersWhereusername=‘foo’ANDpasswd=‘bar’OR‘1’=‘1’”;

Howitworks?$sql=“Select*72Howitworks?$sql=“Select*FromusersWhere”. “username=‘”.$account.“’AND”. “passwd=‘“.$passwd.“’”;$account=foo’OR1=1#,$passwd=blah$sql=“Select*FromusersWhereusername=‘foo’OR1=1 #

ANDpasswd=‘blah’”;Howitworks?$sql=“Select*73一個更惡意的SQL注入$sql=“SelectprodinfoFromprodtableWhere prodname=‘”.$prodname.“’…”;提交如下的數據:blah’;DROPTABLEprodinfo;#$sql=“SelectprodinfoFromprodtableWhereprodname=‘blah’;DROPTABLEprodinfo;#’”語句1:SelectprodinfoFromprodtableWhereprodname=‘blah’;語句2:DROPTABLEprodtable;#’一個更惡意的SQL注入$sql=“Selectprodin74!!!prodtable表被刪除!!!!!!prodtable表被刪除!!!75更嚴重的后果創建windows賬號SELECT*FROMusersWHERElogin=‘’;execmaster..xp_cmdshell'netusersusernamepassword/add';--’andpassword=’’添加到administrator組:

SELECT*FROMusersWHERElogin=‘';execmaster..xp_cmdshell'netlocalgroupAdministratorsusername/add';--’andpassword=‘’

SQLInjectionexamplesareoutlinedin:/papers/SQLInjectionWhitePaper.pdf

/techtips/sql-injection.html更嚴重的后果創建windows賬號76整型SQL注入$sql=“Select*fromclientsWhere”. “account=$accAND”.

“pin=$pin”;$acc=1or1=1#$pin=1111Select*FromclientsWhereaccount=1OR1=1#

ANDpin=1111整型SQL注入$sql=“Select*fromcli77SQL注入字符‘or“字符串表示符--or# 單行注釋/*…*/多行注釋+加,字符串連接運算符%通配符SQL注入字符‘or“字符串表示符78SQL注入的后果最好的結果泄露一些重要信息數據庫信息表信息列信息數據導出導出庫中的數據控制主機控制運行數據庫的主機SQL注入的后果最好的結果79SQL注入的防范方法參數過濾‘,”,select,drop,update…類型檢查數據庫設置合理的權限,最小權限原則OR映射SQL注入的防范方法參數過濾80

引言數據庫的特點之一是DBMS提供統一的數據保護功能來保證數據的安全可靠和正確有效。數據的安全性保護數據庫防止惡意的破壞和非法的存取防范對象:非法用戶和非法操作數據的完整性防止數據庫中存在不符合語義的數據,即防止數據庫中存在不正確的數據防范對象:不合語義的、不正確的數據實體完整性參照完整性用戶自定義的完整性引言數據庫的特點之一是DBMS提供統一的數據保護功能來保證可信計算機系統評測標準1985年美國國防部(DoD)正式頒布《DoD可信計算機系統評估標準》(TrustedComputerSystemEvaluationCriteria,簡稱TCSEC或DoD85,又稱橘皮書)該標準擴展到數據庫管理系統,稱為TrustedDatabaseInterpretation,簡稱TDI,又稱紫皮書TCSEC(TDI)將系統的安全級別劃分為4組7個級別。可信計算機系統評測標準1985年美國國防部(DoD)正式頒可信計算機系統評測標準安全級別定義A1驗證設計(VerifiedDesign)B3安全域(SecurityDomains)B2結構化保護(StructuralProtection)B1標記安全保護(LabeledSecurityProtection)C2受控的存取保護(ControlledAccessProtection)C1自主安全保護(DiscretionarySecurityProtection)D最小保護(MinimalProtection)可信計算機系統評測標準安全級別定第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制12.1數據庫安全性控制概述非法使用數據庫的情況編寫合法程序繞過DBMS及其授權機制直接或編寫應用程序執行非授權操作通過多次合法查詢數據庫從中推導出一些保密數據12.1數據庫安全性控制概述非法使用數據庫的情況數據庫安全性控制概述(續)計算機系統中,安全措施是一級一級層層設置

計算機系統的安全模型

應用DBMSOS

DB低高安全性控制層次方法:

用戶標識和鑒定

存取控制審計視圖

操作系統安全保護

加密存儲數據庫安全性控制概述(續)計算機系統中,安全措施是一級一級層數據庫安全性控制概述(續)數據庫安全性控制的常用方法用戶標識和鑒定存取控制視圖審計密碼存儲數據庫安全性控制概述(續)數據庫安全性控制的常用方法12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別(1)用戶標識與鑒別用戶標識與鑒別(Identification&Authentication)系統提供的最外層安全保護措施(1)用戶標識與鑒別用戶標識與鑒別用戶標識與鑒別(續)用戶標識口令系統核對口令以鑒別用戶身份用戶名和口令易被竊取每個用戶預先約定好一個計算過程或者函數用戶標識與鑒別(續)用戶標識12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別(2)存取控制存取控制機制組成定義用戶權限合法權限檢查用戶權限定義和合法權檢查機制一起組成了DBMS的安全子系統(2)存取控制存取控制機制組成存取控制(續)常用存取控制方法自主存取控制(DiscretionaryAccessControl,簡稱DAC)用戶對于不同的數據對象有不同的存取權限,不同的用戶對同一對象也有不同的權限,且用戶可以將自己的權限轉授他人C2級,靈活強制存取控制(MandatoryAccessControl,簡稱MAC)每個數據對象標記一定的密級,每個用戶授予某一級別的許可證,對每一個對象控制存取B1級,嚴格存取控制(續)常用存取控制方法12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別(3)自主存取控制方法通過SQL的GRANT語句和REVOKE語句實現用戶權限組成數據對象操作類型定義用戶存取權限:定義用戶可以在哪些數據庫對象上進行哪些類型的操作定義存取權限稱為授權

(3)自主存取控制方法通過SQL的GRANT語句自主存取控制方法(續)關系數據庫系統中存取控制對象關系數據庫系統中的存取權限

自主存取控制方法(續)關系數據庫系統中存取控制對象關系數據12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別1.1.4授權與回收一、GRANTGRANT語句的一般格式:

GRANT<權限>[,<權限>]...[ON<對象類型><對象名>]

TO<用戶>[,<用戶>]...[WITHGRANTOPTION];語義:將對指定操作對象的指定操作權限授予指定的用戶

1.1.4授權與回收一、GRANTGRANT(續)發出GRANT:DBA數據庫對象創建者(即屬主Owner)擁有該權限的用戶接受權限的用戶

一個或多個具體用戶PUBLIC(全體用戶)GRANT(續)發出GRANT:WITHGRANTOPTION子句WITHGRANTOPTION子句:指定:可以再授予沒有指定:不能傳播不允許循環授權WITHGRANTOPTION子句WITHGRANT例題[例1]把查詢Student表權限授給用戶U1GRANTSELECTONTABLEStudentTOU1;例題[例1]把查詢Student表權限授給用戶U1例題(續)[例2]把對Student表和Course表的全部權限授予用戶U2和U3GRANTALLPRIVILEGES

ONTABLEStudent,CourseTOU2,U3;例題(續)[例2]把對Student表和Course表的全授權與回收(續)二、REVOKE授予的權限可以由DBA或其他授權者用REVOKE語句收回REVOKE語句的一般格式為:

REVOKE<權限>[,<權限>]...[ON<對象類型><對象名>]

FROM<用戶>[,<用戶>]...;授權與回收(續)二、REVOKEREVOKE(續)[例8]把用戶U4修改學生學號的權限收回

REVOKEUPDATE(Sno) ONTABLEStudent FROMU4;REVOKE(續)[例8]把用戶U4修改學生學號的權限收回REVOKE(續)[例9]收回所有用戶對表SC的查詢權限

REVOKESELECT ONTABLESC FROMPUBLIC;

REVOKE(續)[例9]收回所有用戶對表SC的查詢權限12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別(5)數據庫角色數據庫角色:被命名的一組與數據庫操作相關的權限角色是權限的集合可以為一組具有相同權限的用戶創建一個角色簡化授權的過程(5)數據庫角色數據庫角色:被命名的一組與數據庫操作相關的數據庫角色一、角色的創建CREATEROLE<角色名>二、給角色授權

GRANT<權限>[,<權限>]…ON<對象類型>對象名TO<角色>[,<角色>]…數據庫角色一、角色的創建數據庫角色三、將一個角色授予其他的角色或用戶GRANT<角色1>[,<角色2>]…TO<角色3>[,<用戶1>]…[WITHADMINOPTION]四、角色權限的收回REVOKE<權限>[,<權限>]…ON<對象類型><對象名>FROM<角色>[,<角色>]…數據庫角色三、將一個角色授予其他的角色或用戶數據庫角色(續)[例11]通過角色來實現將一組權限授予一個用戶。步驟如下:1.首先創建一個角色R1CREATEROLER1;2.然后使用GRANT語句,使角色R1擁有Student表的SELECT、UPDATE、INSERT權限GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;數據庫角色(續)[例11]通過角色來實現將一組權限授予一個12.1數據庫安全性控制用戶標識與鑒別存取控制自主存取控制方法授權與回收數據庫角色強制存取控制方法12.1數據庫安全性控制用戶標識與鑒別自主存取控制缺點可能存在數據的“無意泄露”原因:這種機制僅僅通過對數據的存取權限來進行安全控制,而數據本身并無安全性標記解決:對系統控制下的所有主客體實施強制存取控制策略

自主存取控制缺點可能存在數據的“無意泄露”(6)強制存取控制方法強制存取控制(MAC)保證更高程度的安全性用戶不能直接感知或進行控制適用于對數據有嚴格而固定密級分類的部門軍事部門政府部門(6)強制存取控制方法強制存取控制(MAC)強制存取控制方法(續)在MAC中,DBMS所管理的全部實體被分為兩類:主體是系統中的活動實體DBMS所管理的實際用戶代表用戶的各進程客體是系統中的被動實體,是受主體操縱的文件基表索引視圖強制存取控制方法(續)在MAC中,DBMS所管理的全部實體被強制存取控制方法(續)DBMS為每個主體和客體指派一個敏感度標記敏感度標記(Label)絕密(TopSecret)機密(Secret)可信(Confidential)公開(Public)主體的敏感度標記稱為許可證級別(ClearanceLevel)客體的敏感度標記稱為密級(ClassificationLevel)強制存取控制方法(續)DBMS為每個主體和客體指派一個敏感度強制存取控制方法(續)強制存取控制規則(1)僅當主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應的客體(2)僅當主體的許可證級別等于客體的密級時,該主體才能寫相應的客體強制存取控制方法(續)強制存取控制規則主體客體絕密絕密機密機密可信可信公開公開主體客體MAC與DACDAC與MAC共同構成DBMS的安全機制實現MAC時要首先實現DAC原因:較高安全性級別提供的安全保護要包含較低級別的所有保護MAC與DACDAC與MAC共同構成DBMS的安全機制強制存取控制方法(續)DAC+MAC安全檢查示意圖

SQL語法分析&語義檢查

DAC檢查安全檢查MAC檢查

繼續先進行DAC檢查,通過DAC檢查的數據對象再由系統進行MAC檢查,只有通過MAC檢查的數據對象方可存取。強制存取控制方法(續)DAC+MAC安全檢查示意圖先進行第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制視圖的作用1.視圖能夠簡化用戶的操作2.視圖使用戶能以多種角度看待同一數據3.視圖對重構數據庫提供了一定程度的邏輯獨立性4.視圖能夠對機密數據提供安全保護5.適當的利用視圖可以更清晰的表達查詢12.2視圖機制視圖的作用視圖機制(續)把要保密的數據對無權存取這些數據的用戶隱藏起來,對數據提供一定程度的安全保護

主要功能是提供數據獨立性,無法完全滿足要求間接實現了支持存取謂詞的用戶權限定義例:對student表,王明:SelectON‘CS’張平:AllPRIVILLAGESON‘CS’視圖機制(續)把要保密的數據對無權存取這些數據的用戶隱藏起來視圖機制(續)[例14]建立計算機系學生的視圖,把對該視圖的SELECT權限授于王平,把該視圖上的所有操作權限授于張明先建立計算機系學生的視圖CS_Student

CREATEVIEWCS_StudentASSELECT*FROMStudentWHERESdept='CS';視圖機制(續)[例14]建立計算機系學生的視圖,把對該視圖的視圖機制(續)在視圖上進一步定義存取權限GRANTSELECTONVIEWCS_StudentTO王平;

GRANTALLPRIVILIGESONVIEWCS_StudentTO張明;視圖機制(續)在視圖上進一步定義存取權限第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制12.3審計什么是審計審計日志(AuditLog)將用戶對數據庫的所有操作記錄在上面DBA利用審計日志找出非法存取數據的人、時間和內容C2以上安全級別的DBMS必須具有審計功能12.3審計什么是審計審計(續)審計分為用戶級審計針對自己創建的數據庫表或視圖進行審計記錄所有用戶對這些表或視圖的一切成功和(或)不成功的訪問要求以及各種類型的SQL操作系統級審計DBA設置監測成功或失敗的登錄要求監測GRANT和REVOKE操作以及其他數據庫級權限下的操作審計(續)審計分為審計(續)AUDIT語句:設置審計功能NOAUDIT語句:取消審計功能審計(續)AUDIT語句:設置審計功能審計(續)[例15]對修改SC表結構或修改SC表數據的操作進行審計AUDITALTER,UPDATEONSC;[例16]取消對SC表的一切審計NOAUDITALTER,UPDATEONSC;審計(續)[例15]對修改SC表結構或修改SC表數據的操作進第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制12.4數據加密數據加密防止數據庫中數據在存儲和傳輸中失密的有效手段加密的基本思想根據一定的算法將原始數據變換為不可直接識別的格式,從而使得不知道解密算法的人無法獲知數據的內容加密方法替換方法置換方法混合方法DBMS中的數據加密12.4數據加密數據加密第12章數據庫安全性12.1數據庫安全性控制12.2視圖機制12.3審計(Audit)12.4數據加密12.5統計數據庫安全性第12章數據庫安全性12.1數據庫安全性控制非法使用數據庫的情況編寫合法程序繞過DBMS及其授權機制直接或編寫應用程序執行非授權操作通過多次合法查詢數據庫從中推導出一些保密數據非法使用數據庫的情況12.5統計數據庫安全性統計數據庫允許用戶查詢聚集類型的信息(如合計、平均值等)不允許查詢單個記錄信息統計數據庫中特殊的安全性問題隱蔽的信息通道能從合法的查詢中推導出不合法的信息12.5統計數據庫安全性統計數據庫統計數據庫安全性(續)例1:下面兩個查詢都是合法的:1.本公司共有多少女高級程序員?2.本公司女高級程序員的工資總額是多少?如果第一個查詢的結果是“1”,那么第二個查詢的結果顯然就是這個程序員的工資數。規則1:任何查詢至少要涉及N(N足夠大)個以上的記錄統計數據庫安全性(續)例1:下面兩個查詢都是合法的:統計數據庫安全性(續)例2:用戶A發出下面兩個合法查詢:1.用戶A和其他N個程序員的工資總額是多少?2.用戶B和其他N個程序員的工資總額是多少?若第一個查詢的結果是X,第二個查詢的結果是Y,由于用戶A知道自己的工資是Z,那么他可以計算出用戶B的工資=Y-(X-Z)。原因:兩個查詢之間有很多重復的數據項規則2:任意兩個查詢的相交數據項不能超過M個

統計數據庫安全性(續)例2:用戶A發出下面兩個合法查詢:統計數據庫安全性(續)

可以證明,在上述兩條規定下,如果想獲知用戶B的工資額A至少需要進行1+(N-2)/M次查詢規則3:任一用戶的查詢次數不能超過1+(N-2)/M

如果兩個用戶合作查詢就可以使這一規定失效數據庫安全機制的設計目標:

試圖破壞安全的人所花費的代價>>得到的利益統計數據庫安全性(續)可以證明,在上述兩條規定下,如統計數據庫安全性(續)

可以證明,在上述兩條規定下,如果想獲知用戶B的工資額A至少需要進行1+(N-2)/M次查詢規則3:任一用戶的查詢次數不能超過1+(N-2)/M

如果兩個用戶合作查詢就可以使這一規定失效數據庫安全機制的設計目標:

試圖破壞安全的人所花費的代價>>得到的利益統計數據庫安全性(續)可以證明,在上述兩條規定下,如web應用安全威脅web應用安全威脅139神話:“我們的網站是安全的”“我們使用了網絡掃描工具”網絡掃描工具不懂應用,不能徹底提高web應用安全性“我們已經使用了防火墻”為了保證正常訪問,80和443端口始終要開放“我們使用了SSL加密數據”僅僅保護了交互數據,并沒有保護web應用本身“我們每個季度都進行滲透測試”應用在不斷的變更之中神話:“我們的網站是安全的”“我們使用了網絡掃描工具”140web應用安全在哪?(WASC)web應用安全在哪?(WASC)141OWASPtop10十大安全威脅跨站腳本攻擊(XSS)注入缺陷SQL注入,XPATH注入…惡意文件執行(遠程文件包含)不安全的直接對象引用(Parametertampering)跨站請求偽造(CSRF)信息泄露和錯誤處理不當身份驗證和會話管理缺陷不安全的加密存儲通信安全驗證繞過OWASPtop10十大安全威脅跨站腳本攻擊(XSS)142(數據庫原理課件)Chapter12-Security143(數據庫原理課件)Chapter12-Security144跨站腳本攻擊“XSSflawsoccurwheneveranapplicationtakesusersupplieddataandsendsittoawebbrowserwithoutfirstvalidatingorencodingthatcontent.XSSallowsattackerstoexecutescriptinthevictim'sbrowserwhichcanhijackusersessions,defacewebsites,possiblyintroduceworms,etc.”Web應用把用戶輸入的未經過濾或編碼的數據直接發送給瀏覽器。XSS會導致攻擊者在受害者的瀏覽器中執行腳本程序,這些腳本程序可以劫持用戶的會話、修改網頁甚至傳播蠕蟲。JavaScript,VBScript,ActiveX,HTML,orFlash都可以注入到存在漏洞的web應用網頁掛馬釣魚攻擊跨站腳本攻擊“XSSflawsoccurwheneve145XSS攻擊XSS攻擊146XSS攻擊XSS攻擊147XSS的危害從你下在瀏覽的域中偷到你的信息完全修改你看到的頁面內容從現在開始,跟蹤你在瀏覽器中的每一個動作把你重定向到一個惡意站點利用瀏覽器的漏洞控制你的機器XSS的危害從你下在瀏覽的域中偷到你的信息148阻止XSS攻擊顯示用戶輸入的數據時進行轉義轉義成無害的html字符<script>變成<script>仍然會顯示成<script>過濾程序的正確編寫過濾基于所有允許的字符,而不是基于“惡意”字符如:只接收A,B,Cor1,2,3新出現的編碼方案可以繞過基于“惡意”字符的過濾程序XSScheatsheet:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論