




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第九章
數據庫安全性與完整性9.1計算機安全性概論9.2數據庫安全性控制9.3實體的完整性9.4參照完整性9.5用戶定義的完整性9.6完整性約束命名子句數據庫的一大特點是數據可以共享,但數據共享必然帶來數據庫的安全性問題;數據庫系統中的數據共享不能是無條件的共享;例:軍事秘密、國家機密、新產品實驗數據、
市場需求分析、市場營銷策略、銷售計劃、
客戶檔案、醫療檔案、銀行儲蓄數據數據庫中數據的共享是在DBMS統一的嚴格的控制之下的共享,即只允許有合法使用權限的用戶訪問允許他存取的數據;數據庫系統的安全保護措施是否有效是數據庫系統主要的性能指標之一。問題的提出什么是數據庫的安全性什么是數據的保密數據庫的安全性是指保護數據庫,防止因用戶非法使用數據庫造成數據泄露、更改或破壞。數據保密是指用戶合法地訪問到機密數據后能否對這些數據保密。通過制訂法律道德準則和政策法規來保證。9.1計算機安全性概論9.1.1計算機系統的三類安全性問題
三類計算機系統安全性問題
技術安全類管理安全類政策法律類指計算機系統中采用具有一定安全性的硬件、軟件來實現對計算機系統及其所存數據的安全保護,當計算機系統受到無意或惡意的攻擊時仍能保證系統正常運行,保證系統內的數據不增加、不丟失、不泄露。軟硬件意外故障、場地的意外事故、管理不善導致的計算機設備和數據介質的物理破壞、丟失等安全問題政府部門建立的有關計算機犯罪、數據安全保密的法律道德準則和政策法規、法令數據庫安全性控制(續)數據庫安全性控制的常用方法用戶標識和鑒定存取控制視圖審計密碼存儲存取控制數據庫安全最重要的一點就是確保只授權給有資格的用戶訪問數據庫的權限,同時令所有未授權的人員無法接近數據。這主要是通過DBMS提供的存取控制機制實現的。在數據庫系統中,為了保證用戶只能訪問他有權存取的數據,必須預先對每個用戶定義存取權限。這些定義放在數據字典中,被稱為安全規則或授權規則。對于通過鑒定獲得上機權的用戶(即合法用戶),系統根據他的存取權限定義對他的各種操作請求進行控制,確保他只執行合法操作用戶權限定義和合法權檢查機制一起組成了DBMS的安全子系統存取控制機制主要包括兩部分:
定義存取權限
合法權限檢查常用存取控制方法自主存取控制(簡稱DAC)靈活強制存取控制(簡稱
MAC)嚴格同一用戶對于不同的數據對象有不同的存取權限不同的用戶對同一對象也有不同的權限用戶還可將其擁有的存取權限轉授給其他用戶每一個數據對象被標以一定的密級每一個用戶也被授予某一個級別的許可證對于任意一個對象,只有具有合法許可證的用戶才可以存取自主存取控制方法通過
SQL的GRANT
語句和
REVOKE
語句實現用戶權限組成數據對象操作類型定義用戶存取權限:定義用戶可以在哪些數據庫對象上進行哪些類型的操作定義存取權限稱為授權
對象類型對象操作類型數據庫模式CREATESCHEMA基本表CREATETABLE,ALTERTABLE模式視圖CREATEVIEW索引CREATEINDEX數據基本表和視圖SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALLPRIVILEGES屬性列SELECT,INSERT,UPDATE,REFERENCES,ALLPRIVILEGES表9.3關系數據庫系統中的存取權限授權與回收一、GRANTGRANT語句的一般格式:GRANT<權限>[,<權限>]...
ON<對象類型><對象名>[,<對象類型><對象名>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];語義:將對指定操作對象的指定操作權限授予指定的用戶
GRANT(續)發出GRANT:DBA數據庫對象創建者(即屬主Owner)擁有該權限的用戶按受權限的用戶
一個或多個具體用戶PUBLIC(全體用戶)WITHGRANTOPTION子句WITHGRANTOPTION子句:指定:可以再授予沒有指定:不能傳播不允許循環授權[例1]把查詢Student表權限授給用戶U1GRANTSELECTONTABLEStudentTOU1;[例2]把對Student表和Course表的全部權限授予用戶U2和U3GRANTALLPRIVILIGES
ONTABLEStudent,CourseTOU2,U3;[例3]把對表SC的查詢權限授予所有用戶GRANTSELECTONTABLESC TOPUBLIC;[例4]把查詢Student表和修改學生學號的權限授給用戶U4 GRANTUPDATE(Sno),SELECT ONTABLEStudent TOU4;[例5]把對表SC的INSERT權限授予U5用戶,并允許他再將此權限授予其他用戶GRANTINSERTONTABLESCTOU5
WITHGRANTOPTION;執行例5后,U5不僅擁有了對表SC的INSERT權限,
還可以傳播此權限:[例6]GRANTINSERTONTABLESCTOU6
WITHGRANTOPTION;
同樣,U6還可以將此權限授予U7:[例7]GRANTINSERTONTABLESCTOU7;
但U7不能再傳播此權限。U5-->U6-->U7用戶權限定義表授權用戶名被授權用戶名數據庫對象名允許的操作類型能否轉授權DBAU1關系StudentSELECT不能DBAU2關系StudentALL不能DBAU2關系CourseALL不能DBAU3關系StudentALL不能DBAU3關系CourseALL不能DBAPUBLIC關系SCSELECT不能DBAU4關系StudentSELECT不能DBAU4屬性列Student.SnoUPDATE不能DBAU5關系SCINSERT能U5U6關系SCINSERT能U6U7關系SCINSERT不能二、收回權限
REVOKE一般格式:REVOKE<權限>[,<權限>]...ON<對象類型><對象名>[,<對象類型><對象名>]FROM<用戶>[,<用戶>]...[CASCADE|RESTRICT];功能:從指定用戶那里收回對指定對象的指定權限[例8]把用戶U4修改學生學號的權限收回 REVOKEUPDATE(Sno) ONTABLEStudent FROMU4;[例9]收回所有用戶對表SC的查詢權限 REVOKESELECT ONTABLESC FROMPUBLIC;[例10]把用戶U5對SC表的INSERT權限收回 REVOKEINSERT ONTABLESC FROMU5CASCADE;權限的級聯回收系統將收回直接或間接從U5處獲得的對SC表的INSERT權限:-->U5-->U6-->U7收回U5、U6、U7獲得的對SC表的INSERT權限:<--U5<--U6<--U7小結:SQL靈活的授權機制DBA:擁有所有對象的所有權限不同的權限授予不同的用戶用戶:擁有自己建立的對象的全部的操作權限GRANT:授予其他用戶被授權的用戶“繼續授權”許可:再授予所有授予出去的權力在必要時又都可用REVOKE語句收回用戶權限定義表
執行[例8]到[例10]的語句后,學生-課程數據庫中的用戶權限定義表授權用戶名被授權用戶名數據庫對象名允許的操作類型能否轉授權DBAU1關系StudentSELECT不能DBAU2關系StudentALL不能DBAU2關系CourseALL不能DBAU3關系StudentALL不能DBAU3關系CourseALL不能DBAU4關系StudentSELECT不能3.創建數據庫模式的權限對數據庫模式的授權由DBA在創建用戶時實現
創建用戶語句一般格式如下:
CREATEUSER<username>[WITH][DBA︱RESOURCE︱CONNECT];創建數據庫模式的權限(續)只有系統的超級用戶才有權創建一個新的數據庫用戶新創建的數據庫用戶有三種權限:CONNECT、RESOURCE和DBA命令中若沒有指定創建的新用戶的權限,默認該用戶擁有CONNECT權限。擁有CONNECT權限的用戶不能創建新用戶,不能創建模式,也不能創建基本表,只能登錄數據庫。擁有RESOURCE權限的用戶能創建基本表和視圖,成為所創建對象的屬主,但不能創建模式,不能創建新的用戶。擁有DBA權限的用戶是系統中的超級用戶,可以創建新的用戶、創建模式、創建基本表和視圖等;擁有對所有數據庫對象的存取權限,還可以把這些權限授予一般用戶。數據庫角色數據庫角色是被命名的一組與數據庫相關的權限,角色是權限的集合。因此可以為一組具有相同權限的用戶創建一個角色,使用角色來管理數據庫權限可以簡化授權的過程。一、角色的創建GREATEROLE<角色名>;二、給角色授權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;數據庫角色(續)3.將這個角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部權限GRANTR1TO王平,張明,趙玲;4.可以一次性通過R1來回收王平的這3個權限REVOKER1FROM王平;自主存取控制缺點可能存在數據的“無意泄露”原因:這種機制僅僅通過對數據的存取權限來進行安全控制,而數據本身并無安全性標記解決:對系統控制下的所有主客體實施強制存取控制策略
強制存取(MAC)控制方法在MAC中,DBMS所管理的全部實體被分為主體和客體兩大類。主體是系統中的活動實體。
DBMS所管理的實際用戶;
代表用戶的各進程。客體是系統中的被動實體,是受主體操縱的。
文件
基表
索引
視圖敏感度標記對于主體和客體,DBMS為它們每個實例(值)指派一個敏感度標記(Label)。敏感度標記分成若干級別:
絕密(TopSecret)
機密(Secret)
可信(Confidential)
公開(Public)主體的敏感度標記稱為許可證級別(ClearanceLevel);客體的敏感度標記稱為密級(ClassificationLevel);MAC機制就是通過對比主體的Label和客體的Label,最終確定主體是否能夠存取客體。強制存取控制規則當某一用戶(或某一主體)以標記label注冊入系統時,系統要求他對任何客體的存取必須遵循下面兩條規則:(1)僅當主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應的客體;(2)僅當主體的許可證級別等于客體的密級時,該主體才能寫相應的客體。修正規則主體的許可證級別
<=客體的密級
主體能寫客體用戶可為寫入的數據對象賦予高于自己的許可證級別的密級一旦數據被寫入,該用戶自己也不能再讀該數據對象了。規則的共同點:禁止了擁有高許可證級別的主體更新低密級的數據對象強制存取控制的特點MAC是對數據本身進行密級標記無論數據如何復制,標記與數據是一個不可分的整體只有符合密級標記要求的用戶才可以操縱數據從而提供了更高級別的安全性DAC與MACDAC與MAC共同構成DBMS的安全機制原因:較高安全性級別提供的安全保護要包含較低級別的所有保護先進行DAC檢查,通過DAC檢查的數據對象再由系統進行MAC檢查,只有通過MAC檢查的數據對象方可存取。數據的正確性和相容性防止不合語義的數據進入數據庫。例:學生的年齡必須是整數,取值范圍為14--29;
學生的性別只能是男或女;
學生的學號一定是唯一的;
學生所在的系必須是學校開設的系;完整性:真實地反映現實世界數據庫的完整性DBMS的完整性控制機制1.定義功能一個完善的完整性控制機制應該允許用戶定義各類完整性約束條件。例:銀行數據庫中“借貸總金額應平衡”的約束就應該是延遲執行的約束3.違約反應檢查用戶發出的操作請求是否違背了完整性約束條件如果發現用戶的操作請求使數據違背了完整性約束條件,則采取一定的動作來保證數據的完整性。立即執行的約束(Immediateconstraints)語句執行完后立即檢查是否違背完整性約束
延遲執行的約束(Deferred
constrainsts)完整性檢查延遲到整個事務執行結束后進行2.檢查功能拒絕該操作其他處理方法實體完整性定義關系模型的實體完整性CREATETABLE中用PRIMARYKEY定義單屬性構成的碼有兩種說明方法
定義為列級約束條件定義為表級約束條件對多個屬性構成的碼只有一種說明方法定義為表級約束條件實體完整性定義(續)(1)在列級定義主碼CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,
SnameCHAR(20)NOTNULL,
SsexCHAR(2),SageSMALLINT,
SdeptCHAR(20));(2)在表級定義主碼CREATETABLEStudent(SnoCHAR(9),
SnameCHAR(20)NOTNULL,
SsexCHAR(2),SageSMALLINT,
SdeptCHAR(20),
PRIMARYKEY(Sno));實體完整性定義(續)CREATETABLESC(SnoCHAR(9)NOTNULL,
CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno)/*只能在表級定義主碼*/);實體完整性檢查和違約處理插入或對主碼列進行更新操作時,RDBMS按照實體完整性規則自動進行檢查。包括:1.檢查主碼值是否唯一,如果不唯一則拒絕插入或修改2.檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改實體完整性檢查和違約處理(續)檢查記錄中主碼值是否唯一的方法全表掃描索引參照完整性定義例如,關系SC中一個元組表示一個學生選修的某門課程的成績,(Sno,Cno)是主碼。Sno,Cno分別參照引用Student表的主碼和Course表的主碼
CREATETABLESC(SnoCHAR(9)NOTNULL,
CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),/*在表級定義實體完整性*/FOREIGNKEY(Sno)REFERENCESStudent(Sno),/*在表級定義參照完整性*/FOREIGNKEY(Cno)REFERENCESCourse(Cno)/*在表級定義參照完整性*/);參照完整性檢查和違約處理可能破壞參照完整性的情況及違約處理被參照表(例如Student)參照表(例如SC)違約處理可能破壞參照完整性
插入元組拒絕可能破壞參照完整性
修改外碼值拒絕刪除元組
可能破壞參照完整性拒絕/級連刪除/設置為空值修改主碼值
可能破壞參照完整性拒絕/級連修改/設置為空值違約處理(續)顯式說明參照完整性的違約處理示例CREATETABLESC(SnoCHAR(9)NOTNULL,
CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno), FOREIGNKEY(Sno)REFERENCESStudent(Sno) ONDELETECASCADE/*級聯刪除SC表中相應的元組*/
ONUPDATECASCADE,/*級聯更新SC表中相應的元組*/
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
ONDELETENOACTION
/*當刪除course
表中的元組造成了與SC表不一致時拒絕刪除*/
ONUPDATECASCADE
/*當更新course表中的cno時,級聯更新SC表中相應的元組*/
);用戶定義的完整性用戶定義的完整性就是針對某一具體應用的數據必須滿足的語義要求
RDBMS提供,而不必由應用程序承擔屬性上的約束條件的定義CREATETABLE時定義列值非空(NOTNULL)列值唯一(UNIQUE)檢查列值是否滿足一個布爾表達式(CHECK)屬性上的約束條件的定義(續)Student表的Ssex只允許取“男”或“女”。CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,
SnameCHAR(8)NOTNULL,
SsexCHAR(2)CHECK(SsexIN(‘男’,‘女’))
,/*性別屬性Ssex只允許取'男'或'女'*/SageSMALLINT,
SdeptCHAR(20));屬性上的約束條件檢查和違約處理插入元組或修改屬性的值時,RDBMS檢查屬性上的約束條件是否被滿足如果不滿足則操作被拒絕執行
元組上的約束條件的定義在CREATETABLE時可以用CHECK短語定義元組上的約束條件,即元組級的限制同屬性值限制相比,元組級的限制可以設置不同屬性之間的取值的相互約束條件
元組上的約束條件的定義(續)當學生的性別是男時,其名字不能以Ms.打頭。
CREATETABLEStudent(SnoCHAR(9),
SnameCHAR(8)NOTNULL,
SsexCHAR(2),SageSMALLINT,
SdeptCHAR(20),PRIMARYKEY(Sno),
CHECK(Ssex='女'ORSnameNOTLIKE'Ms.%')/*定義了元組中Sname和
Ssex兩個屬性值之間的約束條件*/);性別是女性的元組都能通過該項檢查,因為Ssex=‘女’成立;當性別是男性時,要通過檢查則名字一定不能以Ms.打頭元組上的約束條件檢查和違約處理插入元組或修改屬性的值時,RDBMS檢查元組上的約束條件是否被滿足如果不滿足則操作被拒絕執行
完整性約束命名子句CONSTRAINT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度2月醫療DRG分組算法優化技術服務協議
- 吉他日常訓練基本功
- 二零二五出租房屋補充協議
- 二零二五版外賣送餐合同
- (安徽專用)中考歷史真題匯編:綜合材料題- 5年(2020-2024)中考真題+1年模擬真題匯編
- 中醫藥行業分析
- 血液中心培訓管理制度
- 鐵路檢修工段管理制度
- 項目實施管理制度樣本
- 科技公司崗位職責
- 2024年上海英語高考卷及答案完整版
- 重癥醫學科鎮靜鎮痛病例分享
- 小學創客課件智能臺燈
- 地勘查單位安全標準化規范鉆探工程
- 中國公民健康素養66條課件
- Access2016數據庫應用技術教程
- 2024安全與韌性術語
- 腳手架工程安全管理風險辨識及防范措施
- 縣文工團組建方案
- 胸腹主動脈瘤切除人工血管置換術術前宣教
- 固定式起重機每月定期檢查表
評論
0/150
提交評論