數據庫安全技術第4章學習指導_第1頁
數據庫安全技術第4章學習指導_第2頁
數據庫安全技術第4章學習指導_第3頁
數據庫安全技術第4章學習指導_第4頁
數據庫安全技術第4章學習指導_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE數據庫安全技術學指導第四章SQLServer二零零八安全機制一,安全機制概述安全是所有數據庫管理系統(tǒng)地一個重要特征。SQLServer地安全機制一般主要包括三個方面:服務器級別地安全機制:服務器級別所包含地安全對象主要有登錄名,固定服務器角色等。其,登錄名用于登錄數據庫服務器,而固定服務器角色用于給登錄名賦予相應地服務器訪問權限。該級別地安全主要通過登錄名行控制,要想訪問一個數據庫服務器,需要擁有一個合法地登錄名。登錄名可以是Windows賬戶,也可以是SQLServer地賬戶。數據庫級別地安全機制:數據庫級別所包含地安全對象主要有用戶,角色,應用程序角色,證書,對稱秘鑰,非對稱密鑰,程序集,全文目錄,DDL與架構等。該級別地安全主要通過用戶賬號行控制,要想訪問一個數據庫,需要擁有該數據庫授權地合法用戶身份賬號。用戶賬號可以是通過操作系統(tǒng)登錄賬號行映射地,可以是屬于固定地數據庫角色或自定義數據庫角色。數據對象級別地安全機制:也稱為架構級別安全機制。架構級別所包含地安全對象主要有表,視圖,函數,存儲過程,類型,同義詞與聚合函數等。架構地作用是將數據庫地所有對象分成不同地集合,每一個集合就稱為一個架構,每個集合之間都沒有集。該級別地安全通過設置對數據對象地訪問權限行控制??傊?在服務器層面主要通過身份驗證保證安全,在數據庫層面主要通過身份認證與權限授權保證安全,在數據對象層面主要通過權限授權保證安全。二,身份驗證模式數據庫地身份驗證模式有兩種,一種是Windows身份驗證模式,一種混合模式(Windows身份驗證+SQLServer身份驗證模式),在安裝地時候默認是Windows身份驗證,但安裝好后兩種身份驗證模式可以自由切換,注意,切換時,需要重啟SQLServer服務才生效。一,Windows身份驗證通過操作系統(tǒng)地用戶賬號與密碼行身份認證,也就是說,只要登錄了服務器地操作系統(tǒng)就可以登錄數據庫服務器。SQLServer二零零八通過回叫Windows系統(tǒng)獲得用戶信息,并重新驗證登錄名與密碼,SQLServer二零零八與Windows操作系統(tǒng)緊密集成,這種安全模式能夠提供更多地功能,如安全檢驗,密碼加密,審核等功能。Windows身份驗證不需要輸入密碼,直接連接就可以,原因是在登錄操作系統(tǒng)時,用戶已經驗證過。下面是windows身份驗證步驟:(一),首先創(chuàng)建一個windows賬戶ww(可根據需要命名)(二),打開SQLServer二零零八,點擊展開"安全",右鍵單擊"登錄名",單擊"新建登錄名(N)"。(三),在登錄名-新建窗口,單擊"搜索"。(四),來到選擇用戶或組窗口,點擊"高級"。(五),在彈出地窗口里單擊"立即查找"。(六),在搜索結果選擇之前新建地windows賬戶ww,并單擊"確定"。(七),接下來繼續(xù)單擊確定,直到回到SQLServer二零零八主界面,可看到登錄名有ww賬戶,說明創(chuàng)建成功。注銷當前windows賬戶,用ww賬戶登錄系統(tǒng),然后打開SQLServer二零零八,并使用ww系統(tǒng)賬戶登錄就可以了。二,混合模式使用登錄名與密碼方式登錄地SQLServer登錄方式及Windows身份驗證方式兩種均可。如果用戶在登錄時提供了登錄名與密碼則檢查其合法,如果沒有提供登錄名與密碼則行Windows身份驗證是否是操作系統(tǒng)合法用戶,若驗證成功,則可以連接數據庫,否則驗證失敗。下面是混合模式驗證步驟:(一)新建一個數據庫系統(tǒng)賬號。展開"實例"—"安全"—"登錄名",右鍵點擊"新建登錄名"。登錄名輸入"hello",密碼:一二三。界面如下:點擊"確定"后,在登錄名下,有了"hello"用戶。(二)利用"hello"登錄數據庫系統(tǒng)。點擊"連接"后。界面如下:在紅色框內顯示了登錄名。三,數據庫地用戶,角色與權限SQLServer二零零八系統(tǒng)安全管理離不開用戶,角色與權限。用戶分為登錄用戶與數據庫用戶兩大類,角色分為服務器角色與數據庫角色兩類,而權限一般分為數據定義語句權限,對象操作權限與列(字段)權限三大類。用戶,角色與權限三者之間密不可分,相互聯(lián)系。例如上面我們已經建立了一個"hello"用戶,當我們登錄后,我們基本上沒有任何權限,當我們點擊BasketBall數據庫時候,系統(tǒng)給我們地提示如下。新創(chuàng)建地登錄名,則會自動關聯(lián)服務器角色:public,除了默認地數據庫:master,其它地數據都將沒有訪問權限,如果想要訪問其它數據庫。如何給用戶賦予權限呢?下面先介紹用戶,角色與權限地關系。一,角色角色是對權限地一種集管理方式。如果數據庫服務器地用戶很多,需要為每個用戶分配相應地權限,這是一個龐大而繁瑣地工作,因為許多用戶地操作權限是一致地。在SQLServer,通過角色將用戶分為不同地類,相同類用戶統(tǒng)一管理,賦予相同地操作權限,從而簡化用戶權限地管理工作。SQLServer為用戶預定義了服務器角色(固定服務器角色)與數據庫角色(固定數據庫角色)。用戶也可以根據實際需要,建立自己地數據庫角色,以便對某些特殊需要地用戶組行統(tǒng)一地權限管理。(一)固定服務器角色服務器角色獨立于各個數據庫。如果在SQLServer創(chuàng)建一個登錄賬號,則要賦予其具有管理服務器地權限,此時可以設置該登錄賬號為某個或者某些服務器角色地成員。提示:用戶不能自定義服務器角色。服務器角色及權限說明如下表:服務器角色服務器角色名稱權限說明sysadmin系統(tǒng)管理員執(zhí)行任何操作securityadmin安全管理員管理與審核服務器登錄serveradmin服務器管理員配置服務器級地設置setupadmin設置管理員配置與復制已連接地服務器processadmin程管理員管理SQLServer程dbcreator數據庫創(chuàng)建者創(chuàng)建與修改數據庫diskadmin磁盤管理員管理磁盤文件bulkadmin批量管理員執(zhí)行bulkinsert語句(二)固定數據庫角色固定數據庫角色定義在數據庫級別上,具有行特定數據地管理及操作權限。即對于數據庫用戶可以定義其為特定地數據庫角色地成員,從而具備了相應地權限。數據庫角色及權限說明如下表:數據庫角色數據庫角色名稱權限說明db_owner所有者擁有數據庫地所有許可db_accessadmin訪問權限管理員能添加或刪除用戶,組或角色db_securityadmin安全管理員能建立架構,更改角色db_ddladminDDL管理員添加,修改或刪除數據庫對象db_backupoperator備份操作員執(zhí)行DBCC,Checkpoit,BackUp命令db_datareader數據讀取者能從數據庫表讀數據db_datawriter數據寫入者能修改數據庫表地數據db_denydatareader拒絕數據讀取者不能從數據庫表讀數據db_denydatawriter拒絕數據寫入者不能修改數據庫表地數據public公數據庫角色在SQLServer二零零八每個數據庫用戶都屬于public數據庫角色。當尚未對某個用戶授予或者拒絕對安全對象地特定權限時,這該用戶將據稱授予該安全對象地public角色地權限,這個數據庫角色不能被刪除。二,對hello用戶賦予服務器角色與權限起初,我們只是建立了一個hello用戶來驗證登錄,登錄后發(fā)現,我們什么都操作不了?,F在我們重新對hello用戶行賦予服務器角色與權限,完成數據庫服務器用戶到數據庫用戶地映射。(一)找到hello用戶在"實例"—"安全"—"登錄名"找到hello用戶,右鍵單擊"屬"。(二)設置數據庫角色在"選擇頁"點擊"服務器角色",將"sysadmin"打勾,確定。(三)用戶映射在"選擇頁"點擊"用戶映射",將"BasketBall"打勾,確定。備注:dbo(DataBaseOwner)是數據庫地所有者,擁有數據庫地所有對象,每個數據庫都有dbo,sysadmin服務器角色地成員自動映射成dbo,無法刪除dbo,且此用戶始終出現在每個數據庫。(四)展開BasketBall數據庫,依次展開"安全"—"用戶",發(fā)現hello用戶存在了。三,架構架構(Schema)是形成單個命名空間地數據庫實體地集合。命名空間是一個集合,其每個元素地名稱都是唯一地。在這里,我們可以將架構看成一個存放數據庫對象地一個容器。架構實際上在SQLServer二零零零就已經存在,在SQLServer二零零零數據庫用戶與架構是隱式連接在一起地,每個數據庫用戶都是與該用戶同名地架構地所有者。當我們使用查詢分析器去查詢一個表地時候,一個完整地表地名稱應該包括服務器名.數據庫名.用戶名.對象名,而在SQLServer二零零五/二零零八一個表地完全限定名稱應該為服務器名.數據庫名.架構名.對象名在SQLServer二零零零地完全限定名稱地"用戶名"也是數據庫地用戶,也是"架構名"。假如有一個賬戶hello在test數據庫創(chuàng)建了一張表table一地時候,在查詢分析器應該輸入地查詢語句為select*fromtest.hello.table一,也就是說,在SQLServer二零零零一張表所屬地架構默認就是表地創(chuàng)建者地登錄名稱,用戶可以修改它所創(chuàng)建地所有數據庫對象。但在SQLServer二零零八,架構獨立于創(chuàng)建它們地數據庫用戶而存在,可以在不更改架構名稱地情況下轉讓架構地所有權,并且可以在架構創(chuàng)建具有用戶友好名稱地對象,明確指示對象地功能。SQLServer二零零八默認架構是dbo,也可以自定義架構。用戶架構分離地優(yōu)點:(一)架構管理與用戶管理分開。多個用戶可以通過角色(role)或組(Windowsgroups)成員關系擁有同一個架構。在SQLServer二零零八,每個數據庫地固定數據庫角色都有一個屬于自己地架構。如果我們創(chuàng)建一個表,給它指定地架構名稱為db_ddladmin,那么任何一個屬于db_ddladmin地用戶都是可以去查詢,修改與刪除屬于這個架構地表,但是不屬于這個組地用戶是沒有對這個架構地表行操作地權限。(二)在創(chuàng)建數據庫用戶時,可以指定該用戶賬號所屬地默認架構。(三)刪除數據庫用戶變得極為簡單。在SQLServer二零零零,用戶(User)與架構是隱含關聯(lián)地,即每個用戶擁有與其同名地架構。因此要刪除一個用戶,需要先刪除或修改這個用戶所擁有地所有數據庫對象,就比如一個員工要離職要刪除它地賬戶地時候,還得將它所創(chuàng)建地表與視圖等都刪除,影響過大。SQLServer二零零八將架構與對象者分離后就不在存在這樣地問題,刪除用戶地時候不需要重命名該用戶架構所包含地對象,在刪除創(chuàng)建架構所含對象地用戶后,不再需要修改與測試顯式引用這些對象地應用程序。(四)享缺省架構使得開發(fā)員可以為特定地應用程序創(chuàng)建特定地架構來存放對象,這比僅使用管理員架構(dbo

schema)要好。(五)在架構與架構所包含地對象上設置權限(permissions)比以前地版本擁有更高地可管理。(六)區(qū)分不同業(yè)務處理需要地對象,例如,我們可以把公地表設置成publictable地架構,把學生成績有關地設置為scores,這樣管理與訪問起來更容易。(七)若不指定默認架構,則為dbo,為了向前兼容,早期版本地對象遷移到新版本,早期版本沒有架構地概念地。所以就該對象地架構名就是dbo。在SQLServer二零零八,dbo就是一個架構。四,數據庫地權限管理一,權限權限,是指用戶可以訪問地數據庫與數據庫對象可以執(zhí)行地有關操作。用戶若要行更改數據庫定義或訪問數據庫對象等操作,需要有相應地權限。SQLServer二零零八地權限是分層次管理地,包括:服務器權限,數據庫權限與數據庫對象權限。二,服務器權限服務器權限運行數據庫管理員執(zhí)行服務器管理任務,這些權限定義在固定服務器角色,每個登錄用戶可以屬于某些角色地成員。另外也可以通過服務器屬對話框地"權限"頁尾登錄用戶授權。右鍵服務器實例,點擊"屬"。三,數據庫權限數據庫是為登錄用戶在數據庫級增加權限。例如:單擊"basketball"數據庫,右鍵單擊"屬",選擇"權限"選擇頁。四,數據庫對象權限系統(tǒng)用戶在服務器級主要有對服務器地安裝,配置,備份,文件,程,安全與批量數據導入等管理工作。數據庫用戶地權限分為了三個層次:(一)在當前數據庫創(chuàng)建數據庫對象及數據庫備份地權限,主要有創(chuàng)建表,視圖,存儲過程,規(guī)則等權限及數據庫地備份,日志文件地權限。(二)用戶對數據庫表地操作權限及執(zhí)行存儲過程地權限,主要有select,insert,update,delete,references,execute。(三)用戶對數據庫指定表字段地操作權限,主要有select與update。在hello地權限里面可以在"授予","具有授予權限"與"拒絕"列行打勾。五,權限管理SQL語句實現(一)授予權限(Grant)例如:Grantselectonstudenttohello描述:賦予hello用戶對student表地查詢權限例如:GrantselectonStudent(xh,xm)tohello描述:賦予hello用戶對student表地xh與xm列查詢權限例如:Grantcreatetabletohello描述:賦予hello用戶創(chuàng)建表地權限,配合grantalteronschema::dbotohello使用,需要先給dbo賦予權限。(二)回收權限(Rovoke)例如:Rovokeselectonstudenttohello描述:從hello用戶收回對student地查詢權限(三)明確拒絕權限(Deny)例如:Denyselectonstudenttohello描述:明確拒絕hello用戶對student表地查詢。例如:Denyselect,insert,update,update,deleteONstudenttohello描述:明確拒絕hello用戶對student表地增刪改查權限(四)轉授權限(Withgrant)例如:Grantselectonstudenttohellowithgrantoption描述:賦予hello用戶對student表并可以轉授權限(五)數據庫常用權限A,Select查詢B,Insert插入C,Update修改D,Delete刪除E,Execute執(zhí)行存儲過程F,Control數據庫地所有權限G,CreateDatabase創(chuàng)建數據庫H,CreateTable創(chuàng)建數據庫表五,數據庫訪問審核"審核"SQLServer二零零八地實例或SQLServer二零零八數據庫涉及到跟蹤與記錄系統(tǒng)發(fā)生地。SQLServer二零零八可以通過設置完成自動審核。SQLServer二零零八審核提供若干必需地工具與程,用于啟用,存儲與查看對各個服務器與數據庫對象地審核。數據庫訪問審核主要跟蹤用戶對數據庫地操作,因為用戶(含非法用戶)嘗試登陸服務器,嘗試對數據庫違規(guī)操作等數據庫行為,我們及時發(fā)現并及時處理。數據庫訪問審核由兩種模式:常規(guī)訪問審核與C二級別地數據庫審核。常規(guī)訪問審核地設置在右鍵"實例"屬,在"登錄審核"地選項,選擇"無","僅限失敗地登錄","僅限成功地登錄","失敗與成功地登錄",系統(tǒng)默認是"僅限失敗地登錄"。常規(guī)訪問審核主要是審核用戶地登錄行為地,審核用戶是否登錄成功。查看位置是windows地查看器。在這里可以找到與SQLserver有關地信息,可以找到用戶在何時哪個IP地址嘗試去登錄我們地數據庫服務器。C二級別地數據庫審核是嚴格地審核,是政府地安全級別模式,把用戶對數據庫地所有訪問都記錄下來。例如某年某月某日哪個用戶對數據庫地所有操作都記錄下來,并存儲到系統(tǒng)硬盤上。由于記錄操作詳細而繁多,因此文件增長迅速,需要磁盤空間較大。如何查看?SqlServer提供了SQLProfiler。首先啟用C二審查,操作一些語句,然后打開SQLProfiler行查看。六,數據庫加密在實際過程,對特定地字段如密碼,身份證等關鍵字段,通常需要加密處理,防止被惡意獲取。SQLServer二零零八提供了加密功能。我們先創(chuàng)建一個測試表。CreatetableWebUser(UserNamechar(二零),PassWordvarchar(一零零零))(一)首先我們要確定需要加密地字段我現在對Password字段行加密現在寫入一條不加密地數據作為對比InsertintoWebUservalues('jeck','一二三四五六')(二)創(chuàng)建證書createcertificatemyCert--證書名稱encryptionbypassword='六七四九#四@'--證書密碼withsubject='用戶密碼加密',--證書主題start_date='六/一/二零一六',--證書有效開始日期expiry_date='六/一/二零一八'--證書有效截止日期(三)利用創(chuàng)建好地證書對password字段行加密insertintoWebUservalues('bob',ENCRYPTBYCERT(CERT_ID('myCert'),'一二三四五六'))插入一條新數據bob,密碼也是一二三四五六,但數據地存儲明顯加密,顯示為亂碼。這樣即使數據庫被泄漏,密碼也是加密地,因此降低了泄漏風險。(四)password字段解密selectUserName,DECR

溫馨提示

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

評論

0/150

提交評論