數據庫管理系統的安全功能-課件_第1頁
數據庫管理系統的安全功能-課件_第2頁
數據庫管理系統的安全功能-課件_第3頁
數據庫管理系統的安全功能-課件_第4頁
數據庫管理系統的安全功能-課件_第5頁
已閱讀5頁,還剩101頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

第7章安全性1第7章安全性安全性概述SQLServer的安全控制其他安全問題27.1安全性概述37.1.1安全性措施的層次物理層人員層操作系統層網絡層數據庫系統層47.1.2數據庫管理系統的安全功能安全性控制是數據庫管理員(或系統管理員)的一個重要任務,他要充分利用數據庫管理系統的安全功能,保證數據庫和數據庫中數據的安全。數據庫關系管理系統的安全功能可以劃分為用戶管理和數據庫操作權限管理兩部分。安全系統的核心問題是身份識別。幾個概念用戶權限用戶組角色57.1.3自主存取控制與強制存取控制對數據庫對象的操作權限或存取控制分為自主存取控制強制存取控制6自主存取控制自主存取控制就是由用戶(如數據庫管理員)自主控制對數據庫對象的操作權限,哪些用戶可以對哪些對象、進行哪些操作,完全取決于用戶之間的授權。目前大多數數據庫管理系統都支持的是自主存取控制方式。7強制存取控制強制存取控制的思路是,為每一個數據庫對象標以一定的密級(Classificationlevel),對每一個用戶都確定一個許可級別(Clearancelevel)。如密級可以分為絕密、機密、保密、秘密、公開等若干級別;而用戶可以劃分為一級用戶(可以操作所有數據)、二級用戶(可以操作除絕密以外的所有數據)、三級用戶等。強制存取控制本質上具有分層的特點,通常具有靜態的、嚴格的分層結構,與現實世界的層次管理也相吻合。這種強制存取控制特別適合層次嚴明的軍方和政府等數據管理。87.2SQLServer的安全控制SQLServer2005SQLServer的認證過程管理SQLServer的登錄帳戶管理數據庫用戶管理權限角色97.2.1SQLServer的認證過程連接權認證→訪問權認證→操作權認證SQlServer服務器系統數據庫操作權認證用戶數據庫1用戶數據庫2訪問權認證√×用戶數據庫2連接權認證登錄帳戶A10

SQLServer的認證過程連接權認證

——管理SQLServer的登錄帳戶訪問權認證

——管理數據庫用戶操作權認證

——管理權限117.2.2管理SQLServer的登錄帳戶功能登錄帳戶來源三種身份驗證模式連接權認證步驟圖用戶的分類登錄帳戶的管理121.功能功能:用于連接權認證SQlServer服務器連接權認證登錄帳戶A登錄帳戶名?密碼?132登錄帳戶的來源登錄帳戶主要來源Windows授權用戶:來源于Windows的用戶或組;SQL授權用戶:來源于非Windows的用戶,我們將這種用戶稱為SQL用戶。143三種身份驗證模式三種身份驗證模式標準模式(也稱為SQLServer登錄模式)Windows身份驗證模式混合驗證模式15身份驗證模式標準模式Windows身份驗證模式混合模式16標準身份驗證模式在這種模式下,由數據庫管理系統獨立來管理自己的數據庫安全。數據庫管理系統把用戶登錄的ID號和口令存儲在特定的系統表中,當用戶試圖登錄到數據庫系統時,數據庫管理系統查詢有效的登錄ID和口令,以決定是否允許用戶登錄。17身份驗證模式標準模式Windows身份驗證模式混合模式18Windows身份驗證模式集成身份驗證模式也稱為Windows身份驗證模式,用戶通過WindowsNT或Windows2000(以下簡稱Windows)的身份驗證后則自動進行SQLServer身份驗證。即當用戶通過Windows用戶賬戶進行連接時,SQLServer通過回叫Windows以獲得信息,重新驗證賬戶名和密碼。19SQLServer的安全體系圖7-1SQLServer安全體系20身份驗證模式標準模式集成模式混合模式21混合身份驗證模式混合模式使用戶得以使用Windows身份驗證或SQLServer身份驗證與SQLServer實例連接。22混合身份驗證模式的登錄決策過程23使用客戶應用程序連接到SQLServer身份驗證模式?混合模式SQLServer登錄連接嗎?WindowsNT身份驗證模式WindowsNT賬戶連接嗎?NONO有效登錄?Yes密碼正確?Yes連接許可?YesSQLServer接受連接YesYesNOSQLServer拒絕連接NOSQLServer拒絕連接NO4連接權認證步驟圖245用戶的分類系統管理員用戶數據庫管理員用戶數據庫對象用戶數據庫訪問用戶25建立新的登錄帳戶sp_addlogin[@loginname=]login_id--登錄名稱[,[@passwd=]passwd]--登錄密碼[,[@defdb=]defdb]--默認數據庫[,[@deflanguage=]deflanguage]--默認語言[,[@sid=]sid]--安全標識號[,[@encryptopt=]encryption_option]--密碼是否加密SqlServer2005里提供了Createlogin語句CREATELOGINlogin_name{WITH<option_list1>|FROM<sources>}26例:建立登錄帳戶建立登錄帳戶manager、test1sp_addloginmanager,123sp_addlogintest1,123操作員:系統管理員27例:建立登錄帳戶建立登錄帳戶test1Createlogintest1Withpassword='123'28修改登錄密碼sp_password[[@old=]old_password,]--舊登錄密碼{[@new=]new_password}--新登錄密碼[,[@loginame=]login]--登錄名稱或ALTERLOGINlogin_name{<status_option>|WITH<set_option>[,...]}

操作員:該登錄賬戶29刪除登錄帳戶sp_droplogin[@loginame=]login--登錄名稱或DROPLOGINlogin_name

操作員:系統管理員306管理SQLServer的登錄帳戶(1)建立新的登錄帳戶“LoginUser”系統管理員身份Sp_addlogin

LoginUser,abc已創建新登錄316管理SQLServer的登錄帳戶登錄帳戶名登錄帳戶密碼(2)以登錄帳戶LoginUser的身份來登錄LoginUser***326管理SQLServer的登錄帳戶SQlServer服務器系統數據庫學生庫(用戶數據庫)用戶數據庫2連接權認證LoginUser訪問權認證××?337.2SQLServer的認證過程連接權認證

——管理SQLServer的登錄帳戶訪問權認證

——管理數據庫用戶操作權認證

——管理權限347.2.3

管理數據庫用戶功能數據庫用戶的管理351.

功能SQlServer服務器系統數據庫學生庫(用戶數據庫)用戶數據庫2訪問權認證×連接權認證LoginUser×LoginUser的數據庫用戶√學生庫(用戶數據庫)要訪問哪個數據庫,就必須在此數據庫下建立與帳戶相對應的數據庫用戶36授權登錄用戶為當前數據庫用戶sp_grantdbaccess[@loginame=]login[,[@name_in_db=]name_in_db]或CREATEUSERuser_name

[{{FOR|FROM}{LOGINlogin_name|CERTIFICATEcert_name|ASYMMETRICKEYasym_key_name}|WITHOUTLOGIN]

[schema_name]37授權某登錄用戶為數據庫用戶CREATELOGINtest3withpassword=‘123’Use訂貨管理CREATEUSERtest3userforlogintest3操作員:系統管理員383.管理數據庫用戶登錄帳戶數據庫用戶映射39從當前數據庫中刪除用戶sp_revokedbaccess[@name_in_db=]name或DROPUSERuser_name

操作員:系統管理員403.管理數據庫用戶(1)在“學生庫”下,為登錄帳戶“LoginUser”建立數據庫用戶“DbUser”Sp_grantdbaccess

LoginUser,DbUser已向’LoginUser’授予數據庫訪問權413.管理數據庫用戶(2)以登錄帳戶LoginUser的身份來登錄LoginUser***423.管理數據庫用戶(3)訪問學生庫433.管理數據庫用戶(4)查詢“學生庫”中的“學生表”的全部信息思考能否對“學生”庫進行操作?為什么?44SQlServer服務器系統數據庫用戶數據庫2訪問權認證連接權認證LoginUser×DBUser√學生庫(用戶數據庫)無操作權LoginUser?3.管理數據庫用戶查詢?添加數據?……45SQLServer的認證過程連接權認證

——管理SQLServer的登錄帳戶訪問權認證

——管理數據庫用戶操作權認證

——管理權限

467.2.4權限管理授予權限授予語句權限

授予對象權限隱含授權收回權限禁止權限471授予權限——授予語句權限GRANT{ALL|statement_list}TOname_liststatement_list給出授權的語句列表,可以是:BACKUPDATABASEBACKUPLOGCREATEDATABASECREATEDEFAULT

CREATEFUNCTIONCREATEPROCEDURECREATERULECREATETABLECREATEVIEWP159481授予權限授予權限授予語句權限授予對象權限

查詢授權收回權限禁止權限角色與存取控制491授予權限——授予對象權限處理數據或執行存儲過程時需要有相應對象的操作或執行權限,這些權限可以劃分為:SELECT、INSERT、UPDATE和DELETE語句權限,它們可以應用到整個表或視圖上。SELECT和UPDATE語句權限,它們可以有選擇性地應用到表或視圖中的單個列上。INSERT和DELETE語句權限,它們會影響整行,因此只可以應用到表或視圖中,而不能應用到單個列上。EXECUTE語句權限,即執行存儲過程和函數的權限。501授予權限——授予對象權限GRANT

{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}

|ON{table|view}[(column_list)]

|ONstored_procedure

|ONuser_defined_function}TOname_list

[WITHGRANTOPTION][AS{group|role}]P160~161511授予權限授予權限授予語句權限授予對象權限查詢授權

收回權限禁止權限角色與存取控制521授予權限——查詢授權使用系統存儲過程sp_helprotect查詢授權的情況531授予權限(1)授予DbUser用戶對學生表的查詢權grantselecton

學生表toDbUser命令已經成功完成541授予權限(2)以登錄帳戶LoginUser的身份來登錄LoginUser***551授予權限(3)查詢“學生庫”中的“學生表”的全部信息561授予權限SQlServer服務器系統數據庫用戶數據庫2訪問權認證連接權認證LoginUser×DBUser√學生庫(用戶數據庫)查詢成功577.2.4權限管理授予權限授予語句權限授予對象權限查詢授權收回權限

禁止權限582收回權限收回語句授權REVOKE{ALL|statement_list}FROMname_list

收回對象授權REVOKE[GRANTOPTIONFOR]{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}

|ON{table|view}[(column_list)]

|ONstored_procedure

|ONuser_defined_function}FROMname_list

[CASCADE][AS{group|role}]P161~162597.2.4權限管理授予權限授予語句權限授予對象權限查詢授權收回權限禁止權限

603禁止權限禁止語句權限DENY{ALL|statement_list}TOname_list

禁止對象權限DENY

{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}

|ON{table|view}[(column_list)]

|ONstored_procedure

|ONuser_defined_function}TOname_list

[CASCADE]61舉例1、用sa登錄sqlserver,建立登錄用戶test1Createlogintest1

Withpassword='123'2、用test1登錄到sqlserver,訪問訂貨管理數據庫Use訂貨管理3、用sa登錄sqlserver,指定用戶test1可以訪問當前數據庫(訂貨管理)Use訂貨管理CREATEUSERDB1forlogintest14、用test1登錄到sqlserver,訪問訂貨管理數據庫5、查詢職工表里的數據。Select*from職工8、用sa登錄sqlserver,給test1可以查詢職工表的權限。Grantselecton職工toDB19、用test1登錄到sqlserver,訪問訂貨管理數據庫,查詢職工表里的數據成功失敗失敗成功62思考80個用戶相同或相似的權限一個個授予權限么?637.2.5角色管理用戶組和角色定義角色為數據庫用戶指定角色取消數據庫用戶的角色刪除角色SqlServer的預定義角色64用戶組和角色按用戶分組:先定義用戶組,然后按用戶組管理權限;按職責劃分角色:先定義權限,然后為用戶指定角色。657.2.5角色管理用戶組和角色定義角色

為數據庫用戶指定角色取消數據庫用戶的角色刪除角色SqlServer的預定義角色66定義角色sp_addrole[@rolename=]role[,[@ownername=]owner]或CREATEROLErole_name

操作者:數據庫管理員67舉例:建立新角色operate在訂貨數據庫下

CREATEROLEoperate68用戶只能創建數據庫一級的角色。697.2.5角色管理用戶組和角色定義角色為數據庫用戶指定角色

取消數據庫用戶的角色刪除角色SqlServer的預定義角色70為數據庫用戶指定角色sp_addrolemember[@rolename=]role,

[@membername=]user_account操作者:角色所有者71舉例:指定DbUser為角色operate的成員切換到訂貨管理數據庫sp_addrolememberoperate,Db1727.2.5角色管理用戶組和角色定義角色為數據庫用戶指定角色取消數據庫用戶的角色

刪除角色SqlServer的預定義角色73取消用戶的角色sp_droprolemember[@rolename=]role,

[@membername=]user_account74例:取消DbUser的operate角色sp_droprolememberoperate,Db1757.2.5角色管理用戶組和角色定義角色為數據庫用戶指定角色取消數據庫用戶的角色刪除角色

SqlServer的預定義角色76刪除角色sp_droprole[@rolename=]role或DROPROLErole_name

刪除角色需要先刪除角色的成員77舉例DROPROLEoperate,DbUser錯誤:DROPROLEoperate正確:sp_droprolememberoperate,DbUserDROPROLEoperate787.2.5角色管理用戶組和角色定義角色為數據庫用戶指定角色取消數據庫用戶的角色刪除角色

SqlServer的預定義角色79SQLServer的預定義角色public角色系統預定義角色使用sp_helpsrvrole獲得各種系統管理員角色的描述使用sp_srvrolepermission得到每種系統管理員角色的特定權限(可以執行的命令、系統存儲過程或說明)數據庫預定義角色使用sp_helpdbfixedrole獲得數據庫上各種預定義角色的描述使用sp_dbfixedrolepermission得到每種數據庫預定義角色的特定權限(可以執行的命令、系統存儲過程或說明)80public角色public角色是一個特殊的數據庫角色,每個數據庫用戶都是該角色的成員。public角色具有如下特點:public角色自動獲得數據庫中用戶的所有默認權限;不需要、也無法將用戶指派給public角色,因為默認情況下所有用戶都屬于該角色;每個數據庫(包括所有系統數據庫和所有用戶數據庫)都有public角色;不可以刪除public角色。81SQLServer的預定義角色public角色系統預定義角色使用sp_helpsrvrole獲得各種系統管理員角色的描述使用sp_srvrolepermission得到每種系統管理員角色的特定權限(可以執行的命令、系統存儲過程或說明)數據庫預定義角色使用sp_helpdbfixedrole獲得數據庫上各種預定義角色的描述使用sp_dbfixedrolepermission得到每種數據庫預定義角色的特定權限(可以執行的命令、系統存儲過程或說明)82系統預定義角色sysadmin:具有系統管理員全部權限的角色。serveradmin:負責配置數據庫服務器的設置。setupadmin:負責添加和刪除鏈接的服務器。securityadmin:負責管理服務器的登錄。processadmin:負責管理在SQLServer實例中運行的進程。dbcreator:負責創建和改變數據庫。bulkadmin:可以執行BULKINSERT語句(數據庫數據的裝載)。83舉例:指定manager用戶為dbcreator

角色sp_addsrvrolemembermanager,dbcreatorsp_addsrvrolemember:將登錄賬戶添加到固定服務器角色。84SQLServer的預定義角色public角色系統預定義角色使用sp_helpsrvrole獲得各種系統管理員角色的描述使用sp_srvrolepermission得到每種系統管理員角色的特定權限(可以執行的命令、系統存儲過程或說明)數據庫預定義角色使用sp_helpdbfixedrole獲得數據庫上各種預定義角色的描述使用sp_dbfixedrolepermission得到每種數據庫預定義角色的特定權限(可以執行的命令、系統存儲過程或說明)85數據庫預定義角色db_owner:在數據庫中有全部權限,即具有數據庫管理員全部權限的角色。db_accessadmin:負責數據庫用戶的管理。db_securityadmin:負責數據庫的安全管理,如負責權限管理、角色和角色成員資格管理等。db_ddladmin:主要負責數據庫的完整性和一致性檢查及管理。db_backupoperator:主要負責數據庫的備份。db_datareader:可以查詢數據庫中任何用戶表中的所有數據。db_datawriter:可以更改數據庫中任何用戶表中的所有數據。db_denydatareader:不能查詢數據庫中任何用戶表中的任何數據。db_denydatawriter:不能更改數據庫中任何用戶表中的任何數據。86舉例:指定test1用戶為當前數據庫(訂貨管理)的db_owner角色Use訂貨管理CREATEUSERDB1forlogintest1sp_addrolememberdb_owner,Db187角色與權限的問題只要權限沒有被拒絕過,則角色中的成員的權限就是角色的權限加上它們自己所具有的權限。如果某個權限在角色中是拒絕的,則角色中的成員將不能再擁有此權限,即使為此成員授予了此權限。88角色與權限的問題假設用戶user為角色role的成員權限為:對表x的查詢權role授予收回禁止授予收回禁止授予收回禁止user授予授予授予收回收回收回禁止禁止禁止user的實際權限√√×√×××××89綜合舉例1、Createlogintest2withpassword=‘123'Createlogintest3withpassword=‘123'2、Use訂貨管理CREATEUSERDB2forlogintest2CREATEUSERDB3forlogintest390綜合舉例3、禁止Db3查詢(訂購單)表DENYSELECTON訂購單TODB34、建立新角色operaterCreateroleoperater5、授權角色operater可以對供應商和訂購單表進行查詢和更新GRANTSELECT,UPDATEON供應商TOoperaterWITHGRANTOPTIONGRANTSELECT,UPDATEON訂購單TOoperaterWITHGRANTOPTION91綜合舉例6、指定Db3為角色operate的成員sp_addrolememberoperater,Db37、Db3嘗試對訂購單表進行查詢8、授權DB3可以訂購單表進行查詢GRANTSELECTON訂購單TODb39、再次嘗試Db3對訂購單表進行查詢失敗成功92綜合舉例10、Db3授權Db2可以查詢供應商表GRANTSELECTON供應商TODb2GRANTSELECTON供應商TODb2ASoperater11、test2查詢倉庫表12、test2查詢供應商表失敗成功失敗成功93綜合舉例13、從operate角色收回授權的權限REVOKEGRANTOPTIONFORSELECT,UPDATEON訂購單FROMoperateCASCADE14、Db2查詢訂購單表15、Db3查詢訂購單表select*from訂購單失敗成功94練習:下面說法錯誤的是____。1、只要權限沒有被拒絕過,則角色中的成員的權限就是角色的權限加上它們自己所具有的權限。2、如果某個權限在角色中是拒絕的,則角色中的成員就不能再擁有此權限,即使為此成員授予了此權限。3、如果某個權限在角色中是拒絕的,但是角色中的成員被授予了此權限,則此成員就可以擁有此權限。4、如果某個權限在角色中是允許的,雖然角色中的成員被收回了此權限,但是此成員仍可以擁有此權限。395練習下面說法正確的是____。1、角色中的成員的權限總是角色的權限加上它們自己所具有的權限。2、如果某個權限在角色中是拒絕的,則角色中的成員就不能再擁有此權限,即使為此

溫馨提示

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

評論

0/150

提交評論