第16章SQLServer的安全管理(新)_第1頁
第16章SQLServer的安全管理(新)_第2頁
第16章SQLServer的安全管理(新)_第3頁
第16章SQLServer的安全管理(新)_第4頁
第16章SQLServer的安全管理(新)_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第16章SQLServer的安全管理16.1概述——三個安全性問題16.2管理登錄名16.3角色16.4權限16.5架構16.1

概述——三個安全性問題

安全性是所有數據庫管理系統(tǒng)的一個重要特征。理解安全性問題是理解數據庫管理系統(tǒng)安全性機制的前提。SQLServer的數據安全機制中主要手段:角色架構用戶權限三個安全性問題第一個安全性問題:當用戶登錄數據庫系統(tǒng)時,如何確保只有合法的用戶才能登錄到系統(tǒng)中?第二個安全性問題:當用戶登錄到系統(tǒng)中,他可以執(zhí)行哪些操作、使用哪些對象和資源?第三個安全性問題:數據庫中的對象由誰所有?如果是由用戶所有,那么當用戶被刪除時,其所擁有的對象怎么辦,難道數據庫對象可以成為沒有所有者的“孤兒”嗎?第一個安全性問題:當用戶登錄數據庫系統(tǒng)時,如何確保只有合法的用戶才能登錄到系統(tǒng)中?這是一個最基本的安全性問題,也是數據庫管理系統(tǒng)提供的基本功能。在MicrosoftSQLServer2008系統(tǒng)中,通過身份驗證模式和主體解決這個問題。身份驗證模式身份驗證模式是DBMS驗證客戶端和服務器之間連接的方式。服務器級別的驗證模式有:Windows身份驗證模式和混合模式兩種。主體主體是可以請求系統(tǒng)資源的個體、組合過程,用來訪問SQL服務器的對象,可能是用戶或應用程序。例如,數據庫用戶是一種主體,可以按照自己的權限在數據庫中執(zhí)行操作和使用相應的數據。主體的三個級別Windows級別的主體的作用范圍是整個Windows操作系統(tǒng)。SQLServer級別的作用范圍是整個SQL系統(tǒng),所有數據庫。數據庫級別的作用范圍是數據庫內的各種資源。不同主體之間的關系是典型的層次結構關系??梢岳斫鉃椤耙患墘阂患墶?。第二個安全性問題:當用戶登錄到系統(tǒng)中,他可以執(zhí)行哪些操作、使用哪些對象和資源?通過安全對象和權限設置來解決這個問題。安全對象:在服務器和數據庫中,可通過權限保護的對象。主體發(fā)出請求訪問安全對象。能不能訪問呢?系統(tǒng)需要判斷主體是否擁有訪問安全對象的權限。服務器安全對象范圍:SQLServer登錄名、數據庫等數據庫安全對象范圍:用戶、應用程序角色、程序集等架構安全對象范圍:類型、聚合、約束、過程、函數等主體和安全對象的關系Server角色SQLServer登錄Windows組域用戶賬戶本地用戶賬戶用戶數據庫角色應用程序角色組SQLServer數據庫Windows文件密鑰服務器架構數據庫安全對象權限主體SQLServer2008權限Server角色SQLServer登錄Windows組域用戶賬戶本地用戶賬戶用戶數據庫角色應用程序角色組SQLServer數據庫Windows文件密鑰CREATEALTERDROPCONTROLCONNECTSELECTEXECUTEUPDATEDELETEINSERTTAKEOWNERSHIPVIEWDEFINITIONBACKUP授予/撤銷/拒絕ACL服務器架構數據庫安全對象權限主體第三個安全性問題:數據庫中的對象由誰所有?如果是由用戶所有,那么當用戶被刪除時,其所擁有的對象怎么辦,難道數據庫對象可以成為沒有所有者的“孤兒”嗎?這個問題是通過用戶和架構分離來解決的。用戶不擁有數據庫對象,架構可以擁有數據庫對象。用戶通過架構來使用數據庫對象。那么,刪除用戶時就不必修改數據庫對象的所有者。數據庫對象、架構和用戶之間的關系示意圖2023年2月1日第10頁總結SQLServer2008的安全機制SQLServer2008的安全機制可以分為四個級別:操作系統(tǒng)的安全性SQLServer2008的登錄安全性數據庫的使用安全性數據庫對象的使用安全性操作系統(tǒng)安全在使用客戶計算機通過網絡實現對SQLServer服務器的訪問時,用戶首先要獲得客戶計算機操作系統(tǒng)的使用權。操作系統(tǒng)安全性是操作系統(tǒng)管理員或者網絡管理員的任務。SQLServer的安全性SQLServer的服務器級安全性建立在控制服務器登錄賬號和密碼的基礎上。SQLServer采用了標準SQLServer登錄和集成Windows登錄兩種方式。用戶在登錄時提供的登錄賬號和密碼,決定了用戶能否獲得SQLServer的訪問權。管理和設計合理的登錄方式是數據庫管理員(DBA)的重要任務,是SQLServer安全體系中DBA可以發(fā)揮主動性的第一道防線。數據庫的安全性在用戶通過SQLServer服務器的安全性檢驗以后,將直接面對不同的數據庫入口。在建立用戶的登錄賬號信息時,SQLServer會提示用戶選擇默認的數據庫。以后用戶每次連接上服務器后,都會自動轉到默認的數據庫上。對任何用戶來說,master數據庫的門總是打開的,如果在設置登錄賬號時沒有指定默認的數據庫,則用戶的權限將局限在master數據庫以內。數據庫的擁有者(owner)可以訪問該數據庫的對象,可以分配訪問權給別的用戶。在SQLServer中默認的情況表示所有的權利都可以自由轉讓和分配。SQLServer數據庫對象的安全性數據庫對象的安全性是核查用戶權限的最后一個安全等級。在創(chuàng)建數據庫對象時,SQLServer自動把該數據庫對象的擁有權賦予該對象的創(chuàng)建者。對象的擁有者可以實現對該對象的完全控制。默認情況下,只有數據庫的擁有者可以在該數據庫下進行操作。當一個非數據庫擁有者想訪問數據庫里的對象時,必須事先由數據庫擁有者賦予用戶對指定對象執(zhí)行特定操作的權限。16.2管理登錄名SQLServer對用戶的訪問進行兩個階段的檢驗:認證階段:能否登錄到服務器上

登錄SQLServer時進行的檢查。如果驗證通過,用戶就可以連接到SQLServer上;否則,服務器將拒絕用戶的登錄。從而保證了系統(tǒng)安全性。Windows模式混合模式(Windows登錄和SQLServer身份認證)許可確認階段:能否訪問數據庫登錄到SQLServer上以后,系統(tǒng)檢查用戶是否有訪問服務器上數據的權限。Windows驗證模式——Windows登錄認證在windows驗證模式下,SQLServer檢測當前使用的Windows用戶帳戶,確定該賬戶是否有權限登錄。該模式不必提交登錄名和密碼。好處:數據庫管理員的工作可以集中在管理數據庫上面,而不是管理用戶賬戶。對用戶賬戶的管理可以交給Windows去完成。Windows有著更強的用戶賬戶管理工具??梢栽O置賬戶鎖定、密碼期限等。SQLServer驗證模式

——登錄賬號有兩種類型一類是登錄服務器的登錄賬號(即服務器登錄賬號或用戶登錄賬號,其名稱就是登錄名,必須設置登錄密碼);另外一類是使用數據庫的用戶賬號(即數據庫用戶賬號或用戶賬號,其名稱就是用戶名)。比較:登錄賬號是指能登錄到SQLServer的賬號,屬于服務器的層面,本身并不能讓用戶訪問服務器中的數據庫,而登錄者要使用服務器中的數據庫時,必須要有數據庫用戶賬號才能存取數據庫。數據庫用戶是登錄名在數據庫中的映射SQLServer的兩種類型賬號SQL登錄賬號登錄服務器SQLServer數據庫數據庫用戶賬號訪問數據庫SQLServer登錄賬號和數據庫用戶賬號SQLServer登錄賬號和數據庫用戶賬號數據庫用戶名與登錄名可以不一致,兩者建立映射即可。dbuser1登錄名的操作創(chuàng)建SQL登錄名并指定默認數據庫CREATELOGINlognameWITHPASSWORD=[]DEFAULT_DATABASE‘databasename’創(chuàng)建Window登錄名(已存在的windows賬戶)CREATELOGINlognameFROMWINDOWSWITHDEFAULT_DATABASE‘databasename’修改登錄名ALTERLOGINlognameWITHNAME=‘newname’修改登錄密碼ALTERLOGINlognameWITHPASSWORD=‘newname’啟用和禁用登錄名ALTERLOGINlognameDISABLE|ENABLE數據庫用戶賬戶的操作創(chuàng)建數據庫用戶CREATEUSERdbuser[FORLOGINlogname]省略映射的登錄名,表示創(chuàng)建一個和登錄名相同的數據庫用戶創(chuàng)建沒有映射到登錄名的用戶CREATEUSERdbuserWITHOUTLOGIN禁用某個數據庫用戶對數據庫的訪問REVOKECONNECTTOdbuser修改數據庫用戶修改用戶名ALTERUSERdbuserWITHNAME=‘newname’修改用戶的默認框架ALTERUSERdbuserWITHDEFAULT_SCHEMA=‘schemaname’刪除數據庫用戶

DROPUSERdbuser16.3角色權限、角色、用戶16.3.1固定服務器角色16.3.2數據庫角色16.3.3管理數據庫角色16.3.4應用程序角色權限、角色、用戶權限:用來規(guī)定特定主體(登錄賬號或數據庫用戶)在訪問安全對象(服務器或數據庫或數據對象<包括數據表、列、存儲過程等>)時允許或不允許的行為。權限太多了,為每個用戶授予對每個對象的操作權限太繁瑣了,所以,用角色來管理。角色現實生活中,角色是起相同作用的人群角色是一種對權限集中管理的機制,每個角色都設定了對SQLServer進行的操作類型即某些權限。用戶用戶通過被賦予角色,繼承角色的權限;角色權限變更,用戶權限同時變更。SQL角色的種類及其操作服務器角色:獨立于各個數據庫。在SQLServer中創(chuàng)建一個登錄賬號后,要賦予該登錄者具有管理服務器的權限,此時可設置該登錄賬號為服務器角色的成員。只有固定服務器角色,可進行的操作:查看某登錄名是否是某服務器角色向某個服務器角色添加一個登錄名,將一個登錄名從服務器角色中刪除數據庫角色固定(默認)數據庫角色用戶自定義,可進行的操作:創(chuàng)建數據庫角色添加和刪除角色成員查看數據庫角色信息16.3.1固定服務器角色角色描述sysadmin可執(zhí)行任何操作

dbcreator創(chuàng)建和修改數據庫

diskadmin管理磁盤文件

serveradmin配置服務器級的設置

securityadmin管理和審核服務器登錄

processadmin管理SQLServer進程

bulkadmin執(zhí)行BULKINSERT語句

setupadmin配置和復制已鏈接的服務器

16.3.2數據庫角色固定數據庫角色授予了管理公共數據庫任務的權限

用戶定義的數據庫角色相同數據庫權限的多個用戶

應用程序角色包含數據庫中所有用戶固定的數據庫角色db_owner數據庫的擁有者??蓪祿旌推鋵ο髨?zhí)行所有管理工作,此角色的權限可包括以下其他角色的權限。db_accessadmin可新建和刪除Windows2000組、Windows2000用戶和數據庫用戶。db_datareader可看到數據庫所有用戶創(chuàng)建的表內的數據。db_datawriter可新建、修改和刪除數據庫中的所有用戶創(chuàng)建的表數據。db_ddladmin可新建、修改和刪除數據庫中對象。db_securityadmin可管理數據庫內的權限控制,如管理數據庫的角色和角色內的成員,管理對數據庫對象的訪問控制。db_denydatareader看不到數據庫內任何數據。db_denydatawriter無法更改數據庫內的任何數據。public每個數據庫用戶是public角色的成員之一。當用戶被許可訪問數據庫時,用戶將自動地變成public角色的的一個成員。16.3.3管理數據庫角色——創(chuàng)建角色已經有了固定數據庫角色,為什么還要建立角色?因為有數據庫用戶,就要對用戶權限進行管理,將用戶加入到特定數據庫角色方便管理用戶權限。有特定的需求,需要對數據庫用戶進行分組,具有相同權限的用戶一組。創(chuàng)建數據庫角色

CREATEROLErole_name[AUTHORIZATIONowner_name]role_name將要創(chuàng)建的角色的名稱owner_name該角色擁有者的名字,默認為dbo。其中owner_name必須是當前數據庫里已有用戶或角色(固定數據庫角色)在新角色中添加數據庫用戶EXECsp_addrolemember‘角色名’,’數據庫用戶名’16.3.3管理數據庫角色——查看、刪除角色查看數據庫角色信息查詢系統(tǒng)函數IS_MUMBER判斷當前數據庫用戶是否屬于某個數據庫用戶SELECTIS_MEMBER(‘db_owner’)刪除數據庫角色SQL不允許刪除含有成員的角色。所以,必須先刪除角色下的所有用戶,才能刪除角色先將數據庫用戶從角色集合中去除EXECsp_droprolemember‘角色名’,’數據庫用戶名’DROPROLE角色名16.3.4應用程序角色——概念

應用程序角色是用戶定義數據庫角色的一種形式,與固定數據庫角色不同。僅允許特定用戶來訪問數據庫中的特定數據,不使用這些特定連接,無法訪問這些數據,從而實現安全管理的目的。例如,管理員允許雇員使用雇員處理程序錄入新員工、離職員工和打印統(tǒng)計報表等。三個特點:默認情況下,應用程序角色不包含任何成員應用程序角色必須激活才能發(fā)揮作用應用程序角色有密碼,擁有密碼的用戶才能激活該角色16.3.4應用程序角色——操作創(chuàng)建應用程序角色CREATEAPPLICATIONROLEapproleWITHPASSWORD=‘password’激活應用程序角色EXECsp_setapprole‘approle’,’password’解除被激活的應用程序角色EXECsp_unsetapprole‘approle’刪除應用程序角色DROPAPPLICATIONROLE‘approle’16.4權限權限是執(zhí)行操作、訪問數據的通行證。主體只有擁有對某安全對象的指定權限,才能對該對象執(zhí)行相應的操作。安全對象權限主體例如:安全對象是表,對表的操作包括增刪改查等四個權限。16.4.1權限概述預先定義權限和預先未定義權限預先定義權限是在系統(tǒng)安裝之后,不必通過授予即擁有的權限。預先未定義的權限是指那些需要經過授權或繼承才能得到的權限。針對所有對象的權限和針對特殊對象的權限。針對所有對象的權限:可以針對SQLServer系統(tǒng)中所有的對象,例如,CONTROL權限是所有對象都有的權限,表示擁有對象所定義的所有權限。針對特殊對象的權限:是指某些權限只能在指定的對象上起作用,例如INSERT可以是表的權限,但是不能是存儲過程的權限,而EXECUTE可以是存儲過程的權限,但是不能是表的權限。安全對象很多種,權限也不同安全對象的常用權限對象可以被授權或拒絕的操作數據表SELECT、UPDATE、DELETE、INSERT、REFERENCE列SELECT、UPDATE視圖SELECT、UPDATE、INSERT、DELETE存儲過程EXECUTE16.4.2管理權限執(zhí)行權限管理操作包括1.授予權限

GRANT2.撤銷權限REVOKE3.拒絕權限DENY安全主體獲得權限的方式第一種:直接使用GRANT語句為其授予權限。第二種:通過作為角色成員繼承角色的權限,使用REVOKE語句只能刪除安全主體通過GRANT得到的權限,要想徹底刪除安全主體的特定權限必須使用DENY語句。用戶和角色的權限以記錄的形式存儲在各個數據庫的sysprotects系統(tǒng)表中。16.4.2管理權限——授予權限為哪個安全對象授予什么權限,可以轉授給哪個用戶

GRANT語法格式:

GRANT{ALL|statement[,...n]}TOsecurity_account[,...n]授予對數據庫對象操作的權限。語法格式:

GRANT

{ALL[PRIVILEGES]|permission[,...n]}{

[(column[,...n])]ON{table|view}

|ON{table|view}[(column[,...n])]

|ON{stored_procedure|extended_procedure}

|ON{user_defined_function}}TOsecurity_account[,...n][WITHGRANTOPTION][AS{group|role}]16.4.3管理對SQLServer實例和數據庫的訪問

控制登錄操作(為用戶授予權限)例:為登錄名Marylogin授予查看數據庫狀態(tài)的權限使用GRANT命令GRANTVIEWSERVERSTATETOMarylogin為數據庫角色授予權限例:如為數據庫角色Auditorsrole授予BACKUPDATABASE(備份數據庫)權限:使用GRANT命令:GRANTBACKUPDATABASETOAuditorsrole16.4.4管理對表和列的訪問——表權限更改對表的訪問:表的常用權限權

限描

述ALTER可以更改表屬性CONTROL提供所有權之類的權限DELETE可以從表中刪除行INSERT可以向表中插入行REFERENCES可以通過外鍵引用其他表SELECT可以在表中選擇行TAKEOWNERSHIP可以取得表的所有權UPDATE可以在表中更新行VIEWDEFINITION可以訪問表的元數據16.4.4管理對表和列的訪問——表權限授權數據庫用戶或角色對表的訪問使用GRANT語句授權數據庫用戶或者角色對表的訪問。如授予用戶Peteruse對表Adminschema.Student的SELECT、INSERT和UPDATE權限:GRANTSELECT,INSERT,UPDATE

ONAdminschema.StudentTOPeteruse;清除之前授予的表的訪權限如清除之前授予用戶Peteruse對表student的查詢權:

REVOKESELECTONAdminschema.StudentTOPeteruse16.4.4管理對表和列的訪問——列權限更改對列的訪問:列的常用權限權

限描

述SELECT可以選擇列UPDATE可以更新列REFERENCE可以通過外鍵引用列16.4.4管理對表和列的訪問——列權限例如為Peteruse用戶授予了在表Adminschema.Student的StudentDate列上SELECT和UPDATE的權限。

GRANTSELECT,UPDATE(StudentDate)ONAdminschema.StudentTOPeteruse取消對列的訪問授權,可在用戶或角色的屬性窗口設置也可使用REVOKE語句來實現,如:REVOKEUPDATE(StudentDate)ONAdminschema.StudentTOPeteruse16.4.5管理對可編程對象的訪問—存儲過程可編程對象安全性包括:存儲過程和用戶定義函數存儲過程權限使用命令GRANT,如為數據庫用戶Peteruse授予存儲過程dbo.uspGetBillOfMaterials的EXECUTE權限:GRANTEXECUTEOndbo.uspGetBillOfMaterialsTOpeteruseALTER可以更改存儲過程屬性CONTROL可以提供所有權之類的權限EXECUTE可以執(zhí)行存儲過程TAKEOWNERSHIP可以取得存儲過程的所有權VIEWDEFINITION可以查看存儲過程的元數據16.4.5管理對可編程對象的訪問—函數用戶定義函數權限:包括標量函數和表值函數ALTER可以更改函數屬性CONTROL可以提供所有權之類的權限TAKEOWNERSHIP可以取得函數的所有權VIEWDEFINITION可以查看函數的元數據EXECUTE可以執(zhí)行用戶定義函數(只對標量函數有效

溫馨提示

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

評論

0/150

提交評論