數(shù)據(jù)庫應(yīng)用技術(shù):第12章 數(shù)據(jù)庫安全管理_第1頁
數(shù)據(jù)庫應(yīng)用技術(shù):第12章 數(shù)據(jù)庫安全管理_第2頁
數(shù)據(jù)庫應(yīng)用技術(shù):第12章 數(shù)據(jù)庫安全管理_第3頁
數(shù)據(jù)庫應(yīng)用技術(shù):第12章 數(shù)據(jù)庫安全管理_第4頁
數(shù)據(jù)庫應(yīng)用技術(shù):第12章 數(shù)據(jù)庫安全管理_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、PAGE 25第12章 數(shù)據(jù)庫安全管理第12章 數(shù)據(jù)庫安全管理本章主要介紹SQL Server 2005數(shù)據(jù)安全管理中的事務(wù)的概念、特性及類型;角色的概念、種類及作用;以及權(quán)限的層次結(jié)構(gòu)。事務(wù)、權(quán)限和角色是SQL Server 2005數(shù)據(jù)庫安全管理中的重要部分。數(shù)據(jù)庫的修改是以事務(wù)為單位進行的。一個事務(wù)就是一個操作序列,這些操作要么全做,要么全不做,它是一個不可分割的工作單位。權(quán)限是通過角色成員來獲得的。角色就是一組具有相同權(quán)限的用戶的集合。不同角色中的成員有不同的權(quán)限。12.1 事務(wù)事務(wù)是作為單個邏輯工作單元執(zhí)行的一系列操作。事務(wù)處理可以確保只有在事務(wù)性單元內(nèi)的所有操作都成功完成的情況下,

2、才會永久更新面向數(shù)據(jù)的資源。通過將一組相關(guān)操作組合為一個或者全部成功或者全部失敗的單元,可以簡化錯誤恢復(fù)并使 HYPERLINK /view/330120.htm t _blank 應(yīng)用程序更加可靠。例如,網(wǎng)上購物的一次交易,其付款過程至少包括以下數(shù)據(jù)庫操作步驟。更新客戶所購商品的庫存信息;保存客戶付款信息,可能包括與銀行系統(tǒng)的交互;生成訂單并且保存到數(shù)據(jù)庫中;更新用戶相關(guān)信息,例如購物數(shù)量等等。正常情況下,這些操作將順利進行,最終交易成功,與交易相關(guān)的所有數(shù)據(jù)庫信息也成功地更新。但是,如果在這一系列過程中任何一個環(huán)節(jié)出了差錯(例如在更新商品庫存信息時發(fā)生異常、該顧客銀行帳戶存款不足等),都將

3、導(dǎo)致交易失敗。一旦交易失敗,數(shù)據(jù)庫中所有信息都必須保持交易前的狀態(tài)不變,比如最后一步更新用戶信息時失敗而導(dǎo)致交易失敗,那么必須保證這筆失敗的交易不影響數(shù)據(jù)庫原來的狀態(tài),即庫存信息沒有被更新,用戶也沒有付款,訂單也沒有生成。否則,數(shù)據(jù)庫的信息將會一片混亂而不可預(yù)測。數(shù)據(jù)庫事務(wù)正是用來保證這種情況下交易的平穩(wěn)性和可預(yù)測性的技術(shù)。12.1.1 事務(wù)特性每一個事務(wù)都具有原子性、一致性、隔離性和持久性,也稱為事務(wù)的ACID屬性。(1)原子性事務(wù)必須是原子工作單元,對其數(shù)據(jù)的修改,或者全都執(zhí)行,或者全都不執(zhí)行。(2)一致性事務(wù)在完成時,必須使所有的數(shù)據(jù)都保持一致性狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于

4、事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時,所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如B樹索引或雙向鏈表)都必須是正確的。(3)隔離性由并發(fā)事務(wù)所作的修改必須與任何其他并發(fā)事務(wù)所作的修改隔離。事務(wù)識別數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),或者是另一并發(fā)事務(wù)修改它之前的狀態(tài),或者是第二個事務(wù)修改它之后的狀態(tài),事務(wù)不會識別中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因為它能夠重新裝載起始數(shù)據(jù),并且重做一系列事務(wù),以使數(shù)據(jù)結(jié)束時的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。(4)持久性事務(wù)完成之后,它對于系統(tǒng)的影響是永久性的,該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。SQL程序員要負(fù)責(zé)啟動和結(jié)束事務(wù),同時強制保持?jǐn)?shù)據(jù)的邏輯一致性。程序員必須定義數(shù)據(jù)修改的順序,使

5、數(shù)據(jù)相對于其組織的業(yè)務(wù)規(guī)則保持一致。程序員將這些修改語句包括到一個事務(wù)中,使SQL Server 2005 Database Engine能夠強制該事務(wù)的物理完整性。數(shù)據(jù)庫系統(tǒng)應(yīng)提供一種機制,保證每個事務(wù)的物理完整性。數(shù)據(jù)庫引擎提供:鎖定設(shè)備,使事務(wù)保持隔離。記錄設(shè)備,保證事務(wù)的持久性,即使服務(wù)器硬件、操作系統(tǒng)或數(shù)據(jù)庫引擎實例自身出現(xiàn)故障,該實例也可以在重新啟動時使用事務(wù)日志,將所有未完成的事務(wù)自動地回滾到系統(tǒng)出現(xiàn)故障的點。事務(wù)管理特性,強制保持事務(wù)的原子性和一致性,事務(wù)啟動之后,就必須成功完成,否則數(shù)據(jù)庫引擎實例將撤消該事務(wù)啟動之后對數(shù)據(jù)所做的所有修改。12.1.2 事務(wù)管理應(yīng)用程序主要通過

6、指定事務(wù)啟動和結(jié)束的時間來控制事務(wù)??梢允褂肨ransact-SQL語句或數(shù)據(jù)庫應(yīng)用程序編程接口(API)函數(shù)來指定這些時間。系統(tǒng)還必須能夠正確處理那些在事務(wù)完成之前便終止事務(wù)的錯誤。1. 事務(wù)類型在SQL Server中有三種事務(wù)類型,分別是隱式事務(wù)、顯式事務(wù)、自動提交事務(wù),缺省為自動提交。(1)自動提交事務(wù)自動提交事務(wù)是指對于用戶發(fā)出的每條Transact-SQL語句,SQL Server都會自動開始一個SQL Server事務(wù),并且在執(zhí)行后自動進行提交操作來完成這個事務(wù),也可以說在這種事務(wù)模式下,一個Transact-SQL語句就是一個事務(wù)。(2)顯式事務(wù)顯式事務(wù)是指在自動提交模式下以B

7、EGIN TRANSACTION開始一個SQL Server事務(wù),以COMMIT或ROLLBACK結(jié)束一個SQL Server事務(wù),以Commit結(jié)束事務(wù)是把SQL Server事務(wù)中的修改永久化,即使這時發(fā)生斷電這樣的故障。例如下面是SQL Server中的一個顯式事務(wù)的例子。BEGIN TRANSACTIONUPDATE student SET SNAME=XIE WHERE SNO=S1INSERT INTO student VALUES (S9, XI, FM,21)COMMIT(3)隱式事務(wù)隱式事務(wù)是指在當(dāng)前會話中用SET IMPLICIT_TRANSACTIONS ON命令設(shè)置的事

8、務(wù)類型,這時任何DML語句(DELETE、UPDATE、INSERT)都會開始一個事務(wù),而事務(wù)的結(jié)束也是用COMMIT或ROLLBACK。2. 啟動和技術(shù)事務(wù)使用API函數(shù)和Transact-SQL語句,可以在SQL Server Database Engine實例中將事務(wù)作為顯式、自動提交或隱式事務(wù)啟動和結(jié)束。(1) HYPERLINK ms-help:/MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/html/052c6ef6-8854-4d26-b6b5-0d4ccf6d1018.htm 顯式事務(wù)顯式事務(wù)就是可以顯式地在其中定義事務(wù)的開始和結(jié)束的事務(wù)。BEGIN

9、 TRANSACTION標(biāo)記顯式連接事務(wù)的起始點。COMMIT TRANSACTION或COMMIT WORK如果沒有遇到錯誤,可使用該語句成功地結(jié)束事務(wù)。該事務(wù)中的所有修改了的數(shù)據(jù)在數(shù)據(jù)庫中都將永久有效。事務(wù)占用的資源將被釋放。ROLLBACK TRANSACTION或ROLLBACK WORK用來清除遇到錯誤的事務(wù)。該事務(wù)修改的所有數(shù)據(jù)都返回到事務(wù)開始時的狀態(tài)。事務(wù)占用的資源將被釋放。(2)自動提交模式自動提交模式是SQL Server Database Engine的默認(rèn)事務(wù)管理模式。每個Transact-SQL語句在完成時,都被提交或回滾。如果一個語句成功地完成,則提交該語句;如果遇到

10、錯誤,則回滾該語句。只要沒有顯式事務(wù)或隱式事務(wù)覆蓋自動提交模式,與數(shù)據(jù)庫引擎實例的連接就以此默認(rèn)模式操作。在使用BEGIN TRANSACTION語句啟動顯式事務(wù)或隱式事務(wù)模式設(shè)置為開啟之前,與數(shù)據(jù)庫引擎實例的連接一直以自動提交模式操作。當(dāng)提交或回滾顯式事務(wù),或當(dāng)關(guān)閉隱式事務(wù)模式時,連接將返回到自動提交模式。編譯和運行時錯誤在自動提交模式下,有時看起來好像數(shù)據(jù)庫引擎實例回滾了整個批處理而不是僅僅一個Transact-SQL語句。當(dāng)遇到的錯誤是編譯錯誤而非運行時錯誤時,會發(fā)生這種情況。編譯錯誤會阻止數(shù)據(jù)庫引擎生成執(zhí)行計劃,就使得批處理中的任何語句都不會執(zhí)行。盡管看起來好像是回滾了產(chǎn)生錯誤的語句之

11、前的所有語句,但實際上該錯誤阻止了批處理中的所有語句的執(zhí)行?!纠?2.1】在以下示例中,由于發(fā)生編譯錯誤,第三個批處理中的INSERT語句都沒有執(zhí)行。但看起來好像是前兩個INSERT語句沒有執(zhí)行便進行了回滾。USE AdventureWorksGOCREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3)GOINSERT INTO TestBatch VALUES (1, aaa)INSERT INTO TestBatch VALUES (2, bbb)INSERT INTO TestBatch VALUSE (3, ccc) - 語法

12、錯誤GOSELECT * FROM TestBatch - 沒有任何記錄被插入并顯示GO【例12.2】在下面的示例中,第三個INSERT語句產(chǎn)生運行時重復(fù)鍵錯誤。由于前兩個INSERT語句成功地執(zhí)行并且提交,因此它們在運行時錯誤之后被保留下來。USE AdventureWorksGOCREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3)GOINSERT INTO TestBatch VALUES (1, aaa)INSERT INTO TestBatch VALUES (2, bbb)INSERT INTO TestBatch VA

13、LUES (1, ccc) - 發(fā)生重復(fù)鍵錯誤GOSELECT * FROM TestBatch - 顯示前兩條記錄GO【例12.3】在下面的示例中,執(zhí)行并提交了前兩條INSERT語句,但第三條INSERT語句由于引用一個不存在的表而產(chǎn)生運行時錯誤,因此只有前兩行仍然保留在TestBatch表中。USE AdventureWorksGOCREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3)GOINSERT INTO TestBatch VALUES (1, aaa)INSERT INTO TestBatch VALUES (2, b

14、bb)INSERT INTO TestBch VALUES (3, ccc) - 表名稱出現(xiàn)錯誤GOSELECT * FROM TestBatch -顯示前兩條記錄GO(3)隱式事務(wù)當(dāng)連接以隱式事務(wù)模式進行操作時,SQL Server Database Engine實例將在提交或回滾當(dāng)前事務(wù)后自動啟動新事務(wù)。無需描述事務(wù)的開始,只需提交或回滾每個事務(wù)。隱式事務(wù)模式生成連續(xù)的事務(wù)鏈。為連接將隱式事務(wù)模式設(shè)置為打開(SET IMPLICIT_TRANSACTIONS ON)之后,當(dāng)數(shù)據(jù)庫引擎實例首次執(zhí)行如表12.1所示的任何語句時,都會自動啟動一個事務(wù)。表12.1 能夠啟動事務(wù)的語句ALTER T

15、ABLEINSERTCREATEOPENDELETEREVOKEDROPSELECTFETCHTRUNCATE TABLEGRANTUPDATE在發(fā)出COMMIT或ROLLBACK語句之前,該事務(wù)將一直保持有效。在第一個事務(wù)被提交或回滾之后,下次當(dāng)連接執(zhí)行以上任何語句時,數(shù)據(jù)庫引擎實例都將自動啟動一個新事務(wù)。該實例將不斷地生成隱性事務(wù)鏈,直到隱性事務(wù)模式關(guān)閉為止。3. 事務(wù)處理過程中的錯誤如果某個錯誤使事務(wù)無法成功完成,SQL Server會自動回滾該事務(wù),并釋放該事務(wù)占用的所有資源。如果客戶端與數(shù)據(jù)庫引擎實例的網(wǎng)絡(luò)連接中斷了,那么當(dāng)網(wǎng)絡(luò)向?qū)嵗ㄖ撝袛嗪?,該連接的所有未完成事務(wù)均會被回滾。如

16、果客戶端應(yīng)用程序失敗或客戶機崩潰或重新啟動,也會中斷連接,而且當(dāng)網(wǎng)絡(luò)向數(shù)據(jù)庫引擎實例通知該中斷后,該實例會回滾所有未完成的連接。如果客戶端從該應(yīng)用程序注銷,所有未完成的事務(wù)也會被回滾。12.2 SQL Server的安全機制SQL Server 2005的安全性是指保護數(shù)據(jù)庫中的各種數(shù)據(jù),以防止因非法使用而造成數(shù)據(jù)的泄密和破壞。SQL Server 2005的安全管理機制包括身份驗證(authentication)和授權(quán)(authorization)兩種類型。身份驗證是指檢驗用戶的身份標(biāo)識,授權(quán)是指允許用戶做些什么。驗證過程在用戶登錄操作系統(tǒng)和SQL Server 2005的時候出現(xiàn),授權(quán)過程

17、在用戶試圖訪問數(shù)據(jù)或執(zhí)行命令時出現(xiàn)。12.2.1 安全機制級別SQL Server 2005的安全機制分為四級,其中第一層和第二層屬于驗證過程,第三層和第四層屬于授權(quán)過程,如圖12.1所示。圖12.1 SQL Server的安全機制(1)操作系統(tǒng)的安全防線。用戶需要一個有效的登錄帳戶,才能對網(wǎng)絡(luò)系統(tǒng)進行訪問。(2)SQL Server的身份驗證防線。SQL Server通過登錄帳戶來創(chuàng)建附加安全層,一旦用戶登錄成功,將建立與SQL Server的一次連接。(3)SQL Server數(shù)據(jù)庫身份驗證安全防線。當(dāng)用戶與SQL Server建立連接后,還必須成為數(shù)據(jù)庫用戶(用戶ID必須在數(shù)據(jù)庫系統(tǒng)表中

18、),才有權(quán)訪問數(shù)據(jù)庫,即允許用戶與一個特定的數(shù)據(jù)庫相連接。(4)SQL Server數(shù)據(jù)庫對象的安全防線。用戶登錄到要訪問的數(shù)據(jù)庫后,要使用數(shù)據(jù)庫內(nèi)的對象,必須得到相應(yīng)權(quán)限,即用戶擁有對指定數(shù)據(jù)庫中一個對象的訪問權(quán)限。四層安全防線中,第一層涉及網(wǎng)絡(luò)操作系統(tǒng)安全技術(shù),后三層綜合起來便形成了SQL Server的安全管理。12.2.2 主體“主體”是指可以請求SQL Server資源的個體、組和過程。與SQL Server授權(quán)模型的其他組件一樣,主體也可以按層次結(jié)構(gòu)排列。主體的影響范圍取決于主體定義的范圍(Windows、服務(wù)器或數(shù)據(jù)庫)以及主體是不可分主體還是集合主體。例如,Windows登錄名

19、就是一個不可分主體,而Windows組則是一個集合主體。每個主體都有一個唯一的安全標(biāo)識符(SID)。各級別的主體包含的內(nèi)容如下。Windows級別的主體Windows域登錄名Windows本地登錄名SQL Server級別的主體SQL Server登錄名數(shù)據(jù)庫級別的主體數(shù)據(jù)庫用戶數(shù)據(jù)庫角色應(yīng)用程序角色12.2.3 SQL Server中的身份驗證訪問SQL Server的第一步必須建立到SQL Server的連接,建立連接是通過登錄ID實現(xiàn)的。登錄ID是帳戶標(biāo)識符,用于連接到SQL Server 2005的帳戶都稱為登錄。其作用是用來控制對SQL Server 2005的訪問權(quán)限。SQL Se

20、rver 2005只有在首先驗證了指定的登錄帳號有效后,才完成連接。這種登錄驗證稱為身份認(rèn)證。但登錄帳號沒有使用數(shù)據(jù)庫的權(quán)力,即SQL Server 2005登錄成功并不意味著用戶已經(jīng)可以訪問SQL Server 2005上的數(shù)據(jù)庫。1. 身份驗證模式類型SQL Server 支持兩種身份驗證模式:Windows身份驗證模式和混合身份驗證模式。(1)Windows身份驗證Windows身份驗證是默認(rèn)模式,使用Windows操作系統(tǒng)的內(nèi)置安全機制,也就是使用Windows的用戶或組帳號控制用戶對SQL Server的訪問。在這種模式下,用戶只需通過Windows的認(rèn)證,就可以連接到SQL Ser

21、ver,而SQL Server本身不再需要管理一套登錄數(shù)據(jù)。Windows身份認(rèn)證采用了Windows安全特性的許多優(yōu)點,包括加密口令、口令期限、域范圍的用戶帳號及基于Windows的用戶管理等,從而實現(xiàn)了SQL Server與Windows登錄安全的緊密集成。使用Windows身份驗證,已經(jīng)登錄到Windows的用戶不必再單獨登錄到SQL Server。(2)混合身份驗證在混合身份驗證模式下,如果用戶在登錄時提供了SQL Server登錄ID,則系統(tǒng)將使用SQL server身份認(rèn)證,如果沒有提供SQL Server登錄ID而提供的是請求Windows身份認(rèn)證,則使用Windows身份驗證。

22、SQL Server 2005中有兩個默認(rèn)的登錄帳戶:BUILTINAdministrators和sa。BUILTINAdministrators提供了對所有Windows管理員的登錄權(quán)限,并且具有在SQL Server所有數(shù)據(jù)庫中的所有權(quán)限。系統(tǒng)管理員(sa)是一個特殊的登錄帳戶,只有在SQL Server 2005使用混合驗證模式時有效,它也具有在所有數(shù)據(jù)庫中的所有權(quán)限。2. 身份驗證模式的設(shè)置可以使用圖形工具設(shè)置SQL Server 2005身份驗證模式,但只能由系統(tǒng)管理員來完成,有如下兩種方法。(1)通過編輯服務(wù)器注冊屬性設(shè)置1)連接到相應(yīng)的Microsoft SQL Server D

23、atabase Engine實例之后,在“已注冊的服務(wù)器”中,右擊服務(wù)器名稱,在出現(xiàn)的快捷菜單中選擇“屬性”,出現(xiàn)如圖12.2所示的“編輯服務(wù)器注冊屬性”對話框。圖12.2 “編輯服務(wù)器注冊屬性”對話框2)在圖12.2中,可以在“身份驗證”下拉列表框中選擇“Windows身份驗證”或“SQL Server身份驗證”,也可以在“已注冊的服務(wù)器”文本框中修改服務(wù)器名稱。3)完成設(shè)置后,單擊【保存】按鈕。(2)通過編輯服務(wù)器屬性設(shè)置1)連接到相應(yīng)的Microsoft SQL Server Database Engine實例之后,在“對象資源管理器”中,右擊服務(wù)器名稱,在出現(xiàn)的快捷菜單中選擇“屬性”,

24、會出現(xiàn)如圖12.3所示的“服務(wù)器屬性”窗口。圖12.3 “服務(wù)器屬性”窗口2)在圖12.3中,在左側(cè)“選擇頁”中選擇“安全性”選項,在右側(cè)的“服務(wù)器身份驗證”選項下選擇新的身份驗證模式。3)完成選擇后,單擊【確定】按鈕。3. 創(chuàng)建登錄帳號(1)Windows用戶或組創(chuàng)建SQL Server登錄帳號在Windows中創(chuàng)建的用戶或組必須被授予連接SQL Server的權(quán)限后才能訪問數(shù)據(jù)庫,其用戶名稱為“域名計算機名用戶名”形式。可以使用圖形工具將Windows用戶映射到SQL Server中,以創(chuàng)建SQL Server登錄帳號。1)連接到相應(yīng)的Microsoft SQL Server Databa

25、se Engine實例之后,在“對象資源管理器”中,展開服務(wù)器名稱,在“安全性”下右擊“登錄名”。2)在出現(xiàn)的快捷菜單中選擇“新建登錄名”,出現(xiàn)如圖12.4所示的“登錄名-新建”窗口。圖12.4 “登錄名-新建”窗口3)在圖12.4中的“登錄名”中選擇“Windows身份驗證”,單擊【搜索】按鈕,出現(xiàn)如圖12.5所示的“選擇用戶或組”對話框。圖12.5 “選擇用戶或組”對話框4)在圖12.5中,在“輸入要選擇的對象名稱”文本框中輸入登錄名,或單擊【高級】按鈕查找用戶或組名稱以完成輸入(此用戶已是Windows帳戶)。5)完成輸入后,單擊【確定】按鈕,返回圖12.4的“登錄名-新建”窗口。6)在

26、圖12.4的左側(cè)“選擇頁”中選擇“服務(wù)期角色”,可以將此用戶加入某個服務(wù)器角色以具有某些權(quán)限。7)在圖12.4的左側(cè)“選擇頁”中選擇“用戶映射”,可以選擇映射到此登錄名的數(shù)據(jù)庫用戶及相應(yīng)的數(shù)據(jù)庫角色。8)單擊【確定】按鈕,完成從Windows用戶或組到SQL Server登錄帳號的映射。(2)創(chuàng)建SQL Server登錄帳號如果使用混合驗證模式或不通過Windows用戶或組連接SQL Server,則需要在SQL Server下創(chuàng)建用戶登錄權(quán)限,使用戶得以連接使用SQL Server身份驗證的SQL Server 2005 Database Engine實例。使用圖形工具創(chuàng)建SQL Serve

27、r登錄帳號的方法與將Windows用戶或組映射到SQL Server登錄帳號的方法相同,只是在圖12.4中選擇“SQL Server 身份驗證”,并設(shè)置登錄名及密碼。4. 刪除登錄帳號當(dāng)不再使用某一登錄帳號時應(yīng)該將其刪除,以保證數(shù)據(jù)庫的安全性和保密性。可以使用圖形工具刪除登錄帳號。1)連接到相應(yīng)的Microsoft SQL Server Database Engine實例之后,在“對象資源管理器”中,展開服務(wù)器名稱,在“安全性”下選擇“登錄名”。2)右擊要刪除的登錄名,在出現(xiàn)的快捷菜單中選擇“刪除”,在出現(xiàn)的“刪除對象”界面中,單擊【確定】按鈕。注意:刪除Windows登錄帳號,只是刪除了到S

28、QL Server登錄帳號的映射,不能登錄到SQL Server中,但該用戶沒有在Windows中刪除。12.2.4 數(shù)據(jù)庫用戶登錄ID成功地進行了身份驗證后,只是建立了到SQL Server的連接,要實現(xiàn)對數(shù)據(jù)庫及數(shù)據(jù)庫對象的訪問,可通過兩種途徑來實現(xiàn):一種是登錄ID與相應(yīng)數(shù)據(jù)庫中的用戶ID相關(guān)聯(lián)來訪問數(shù)據(jù)庫,另一種是如果登錄ID不能與任何數(shù)據(jù)庫用戶ID關(guān)聯(lián),但此數(shù)據(jù)庫啟用了Guest客戶,則可以通過與Guest客戶相關(guān)聯(lián)來訪問數(shù)據(jù)庫。后一種方法不提倡采用,因為任何沒有數(shù)據(jù)庫權(quán)限的用戶都可通過Guest客戶獲取數(shù)據(jù)庫的訪問權(quán)限,這樣降低了安全性。SQL Server數(shù)據(jù)庫用戶,用于管理對指定

29、數(shù)據(jù)庫使用的對象,控制對數(shù)據(jù)庫及數(shù)據(jù)庫對象的訪問權(quán)限。一般地,登錄ID與數(shù)據(jù)庫用戶ID是相同的。一個登錄ID可以與多個數(shù)據(jù)庫用戶相關(guān)聯(lián)。用戶信息均存儲在數(shù)據(jù)庫的系統(tǒng)表sysusers中。權(quán)限的分配是通過數(shù)據(jù)庫用戶ID實現(xiàn)的,根據(jù)用戶的性質(zhì)合理分配最小權(quán)限。在安裝SQL Server后,默認(rèn)數(shù)據(jù)庫中包含兩個用戶:dbo和guest,即系統(tǒng)內(nèi)置的數(shù)據(jù)庫用戶。dbo代表數(shù)據(jù)庫的擁有者(database owner)。每個數(shù)據(jù)庫都有dbo用戶,創(chuàng)建數(shù)據(jù)庫的用戶是該數(shù)據(jù)庫的dbo,系統(tǒng)管理員也自動被映射成dbo。guest用戶帳號在安裝完SQL Server系統(tǒng)后被自動加入到master、pubs、te

30、mpdb數(shù)據(jù)庫中,且不能被刪除。用戶自己創(chuàng)建的數(shù)據(jù)庫默認(rèn)情況下不會自動加入guest帳號,但可以手工創(chuàng)建。guest用戶也可以像其他用戶一樣設(shè)置權(quán)限。當(dāng)一個數(shù)據(jù)庫具有g(shù)uest用戶帳號時,允許沒有用戶帳號的登錄者訪問該數(shù)據(jù)庫。所以guest帳號的設(shè)立方便了用戶的使用,但如使用不當(dāng)也可能成為系統(tǒng)安全隱患??梢允褂脠D形工具將要求訪問數(shù)據(jù)庫的登錄帳戶添加到數(shù)據(jù)庫中成為數(shù)據(jù)庫用戶,并授予其相應(yīng)的活動權(quán)限,以便訪問數(shù)據(jù)庫。1)連接到相應(yīng)的Microsoft SQL Server Database Engine實例之后,在“對象資源管理器”中,單擊服務(wù)器名稱以展開服務(wù)器樹。2)展開“數(shù)據(jù)庫”,然后根據(jù)數(shù)據(jù)

31、庫的不同,選擇用戶數(shù)據(jù)庫,如teaching。3)展開“安全性”,右鍵單擊其中的“用戶”,然后單擊“新建用戶”,如圖12.6所示。圖12.6 新建用戶界面4)在出現(xiàn)的如圖12.7所示的“數(shù)據(jù)庫用戶-新建”窗口中,可以設(shè)置用戶名、架構(gòu)及數(shù)據(jù)庫角色成員身份。圖12.7 “數(shù)據(jù)庫用戶-新建”窗口5)在圖12.7中單擊“登錄名”右側(cè)的【瀏覽】按鈕,會出現(xiàn)圖12.8所示的“選擇登錄名”對話框,可以通過【瀏覽】按鈕選擇用戶名,也可以直接輸入用戶名。用戶名可以與登錄帳號名不同。設(shè)置用戶名后,單擊【確定】按鈕,返回圖12.7“數(shù)據(jù)庫用戶-新建”窗口。圖12.8 “選擇登錄名”對話框6)在“此用戶擁有的架構(gòu)”和

32、“數(shù)據(jù)庫角色成員身份”中選擇相應(yīng)的架構(gòu)和數(shù)據(jù)庫角色,如圖12.9所示,單擊【確定】按鈕,完成數(shù)據(jù)庫用戶的創(chuàng)建。圖12.9 “選擇登錄名”對話框12.2.5 角色角色是指為管理相同權(quán)限的用戶而設(shè)置的用戶組,也就是說,同一角色下的用戶權(quán)限都是相同的。將一些用戶添加到具體某種權(quán)限的角色中,權(quán)限在用戶成為角色成員時自動生效。在SQL Server數(shù)據(jù)庫中,把相同權(quán)限的一組用戶設(shè)置為某一角色后,當(dāng)對該角色進行權(quán)限設(shè)置時,這些用戶就自動繼承修改后的權(quán)限。這樣,只要對角色進行權(quán)限管理,就可以實現(xiàn)對屬于該角色的所有用戶的權(quán)限管理,極大地減少了工作量。一個用戶可以同時屬于不同的角色,也就是說,一個用戶可以同時擁

33、有多個角色中的權(quán)限,但這些權(quán)限不能沖突,否則只能擁有最小的權(quán)限。SQL Server數(shù)據(jù)庫的角色通??梢苑譃橐韵氯?。前兩種是系統(tǒng)預(yù)定義的。1. 服務(wù)器角色服務(wù)器角色具有一組固定的權(quán)限,作用域在服務(wù)器范圍內(nèi),是獨立于數(shù)據(jù)庫的管理特權(quán)分組,主要實現(xiàn)SA、數(shù)據(jù)庫創(chuàng)建者及安全性管理員職能,且不能更改分配給它們的權(quán)限。具有服務(wù)器角色的用戶必須絕對可靠,并且人員要少。SQL Server 2005中的服務(wù)器角色都是固定的,不允許改變。固定服務(wù)器角色的作用域為服務(wù)器范圍。固定服務(wù)器角色的每個成員都可以向其所屬角色添加其他登錄名。表12.2列出了固定服務(wù)器角色的名稱及權(quán)限。表12.2 固定服務(wù)器角色固定服務(wù)

34、器角色權(quán)限bulkadmin可以運行BULK INSERT語句。dbcreator數(shù)據(jù)庫創(chuàng)建者,可以創(chuàng)建、更改、刪除和還原任何數(shù)據(jù)庫。diskadmin用于管理磁盤文件。processadmin進程管理員,可以終止SQL Server實例中運行的進程。securityadmin安全管理員,管理登錄名及其屬性。它們可以用GRANT、DENY和REVOKE命令授予、禁止和回收服務(wù)器級權(quán)限。也可以GRANT、DENY和REVOKE數(shù)據(jù)庫級權(quán)限。另外,它們可以重置SQL Server登錄名的密碼。serveradmin服務(wù)器管理員,可以更改服務(wù)器范圍的配置選項和關(guān)閉服務(wù)器。setupadmin設(shè)置管理

35、員,可以添加和刪除鏈接服務(wù)器,并且也可以執(zhí)行某些系統(tǒng)存儲過程。sysadmin系統(tǒng)管理員,可以在服務(wù)器中執(zhí)行任何活動。默認(rèn)情況下,Windows BUILTINAdministrators組(本地管理員組)的所有成員都是sysadmin固定服務(wù)器角色的成員。不能添加、刪除或修改固定服務(wù)器角色,只能將登錄帳戶添加到固定服務(wù)器角色中。使用圖形工具添加登錄帳號到固定服務(wù)器角色的過程如下。1)連接到相應(yīng)的Microsoft SQL Server Database Engine實例之后,在“對象資源管理器”中,展開服務(wù)器名稱,在“安全性”選擇“服務(wù)器角色”。2)在右側(cè)窗口中出現(xiàn)的當(dāng)前服務(wù)器角色名中,右擊

36、要添加登錄帳號的角色,如dbcreator,在出現(xiàn)的快捷菜單中選擇“屬性”,如圖12.10所示。圖12.10 服務(wù)器角色界面3)在出現(xiàn)的圖12.11所示的“服務(wù)器角色屬性”窗口中,單擊【添加】按鈕,選擇要添加的登錄帳號名,也可以選擇【刪除】按鈕刪除登錄帳號,設(shè)置后單擊【添加】按鈕完成添加。設(shè)置后單擊【確定】按鈕。圖12.11 “服務(wù)器角色屬性”窗口2. 數(shù)據(jù)庫角色數(shù)據(jù)庫角色在數(shù)據(jù)庫級別上定義,提供數(shù)據(jù)庫層管理特權(quán)的分組,主要實現(xiàn)數(shù)據(jù)庫的訪問、備份與恢復(fù)及安全性等職能。它也有一系列預(yù)定義的權(quán)限,可以直接給用戶指派權(quán)限,但在大多數(shù)情況下,只要把用戶放在正確的角色中就會給予它們所需要的權(quán)限。一個用戶

37、可以是多個角色中的成員,其權(quán)限等于多個角色權(quán)限的“和”,任何一個角色中的拒絕訪問權(quán)限會覆蓋這個用戶所有的其他權(quán)限。數(shù)據(jù)庫角色分為固定數(shù)據(jù)庫角色和用戶定義的數(shù)據(jù)庫角色。固定數(shù)據(jù)庫角色不允許改變。用戶定義的數(shù)據(jù)庫角色只適用于數(shù)據(jù)庫級別,通過用戶定義的角色可以輕松地管理數(shù)據(jù)庫中的權(quán)限。固定數(shù)據(jù)庫角色是在數(shù)據(jù)庫級別定義的,并且存在于每個數(shù)據(jù)庫中。db_owner和db_securityadmin數(shù)據(jù)庫角色的成員可以管理固定數(shù)據(jù)庫角色成員身份,但只有db_owner數(shù)據(jù)庫的成員可以向db_owner固定數(shù)據(jù)庫角色中添加成員。表12.3顯示了固定數(shù)據(jù)庫角色到權(quán)限的映射關(guān)系。表12.3 固定數(shù)據(jù)庫角色固定數(shù)

38、據(jù)庫角色權(quán)限db_accessadmin數(shù)據(jù)庫訪問權(quán)限管理者,可以為Windows登錄帳戶、Windows組和SQL Server登錄帳戶添加或刪除訪問權(quán)限。db_backupoperator可以備份該數(shù)據(jù)庫。db_datareader可以讀取所有用戶表中的所有數(shù)據(jù)。db_datawriter可以在所有用戶表中添加、刪除或更改數(shù)據(jù)。db_ddladmin可以在數(shù)據(jù)庫中運行任何數(shù)據(jù)定義語言(DDL)命令。db_denydatareader不能讀取數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)。db_denydatawriter不能添加、修改或刪除數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)。db_owner數(shù)據(jù)庫所有者,可以執(zhí)行數(shù)據(jù)

39、庫的所有配置和維護活動。db_securityadmin可以修改角色成員身份和管理權(quán)限。public每個數(shù)據(jù)庫用戶都屬于public數(shù)據(jù)庫角色。不能將用戶、組或角色指派為public角色的成員,也不能刪除public角色的成員。與固定服務(wù)器角色一樣,對固定數(shù)據(jù)庫角色也不能進行添加、刪除或修改等操作,只能將數(shù)據(jù)庫用戶添加到固定數(shù)據(jù)庫角色中。但對于數(shù)據(jù)庫角色,用戶可以創(chuàng)建及刪除自定義的數(shù)據(jù)庫角色。可以使用圖形工具創(chuàng)建用戶自定義的數(shù)據(jù)庫角色,操作過程如下。1)連接到相應(yīng)的Microsoft SQL Server Database Engine實例之后,在“對象資源管理器”中,單擊服務(wù)器名稱以展開服務(wù)

40、器樹。2)展開“數(shù)據(jù)庫”,然后根據(jù)數(shù)據(jù)庫的不同,選擇用戶數(shù)據(jù)庫,如teaching。3)展開“安全性”下面的“角色”,右鍵單擊其中的“數(shù)據(jù)庫角色”,然后單擊“新建數(shù)據(jù)庫角色”,如圖12.12所示。圖12.12 新建數(shù)據(jù)庫角色界面4)在出現(xiàn)的如圖12.13所示的“數(shù)據(jù)庫角色-新建”窗口中,可以設(shè)置角色名,選擇擁有的架構(gòu),以及添加和刪除屬于該數(shù)據(jù)庫角色的成員,設(shè)置后單擊【確定】按鈕。圖12.13 “數(shù)據(jù)庫角色-新建”窗口可以使用圖形工具將數(shù)據(jù)庫用戶添加到某數(shù)據(jù)庫角色中或刪除。除了在創(chuàng)建數(shù)據(jù)庫角色時可以添加或刪除用戶,也可以使用下面的過程完成添加和刪除用戶。1)連接到相應(yīng)的Microsoft SQL

41、 Server Database Engine實例之后,在“對象資源管理器”中,單擊服務(wù)器名稱以展開服務(wù)器樹。2)展開“數(shù)據(jù)庫”,然后根據(jù)數(shù)據(jù)庫的不同,選擇用戶數(shù)據(jù)庫,如teaching。3)展開“安全性”下面的“角色”,選擇“數(shù)據(jù)庫角色”,在右側(cè)出現(xiàn)的數(shù)據(jù)庫角色名中右擊要添加或刪除用戶的數(shù)據(jù)庫角色,出現(xiàn)圖12.13所示的“數(shù)據(jù)庫角色屬性”對話框,可以為選擇的數(shù)據(jù)庫角色添加或刪除用戶。3. 應(yīng)用程序角色應(yīng)用程序角色是一個數(shù)據(jù)庫主體,它使應(yīng)用程序能夠用其自身的、類似用戶的特權(quán)來運行。使用應(yīng)用程序角色,可以只允許通過特定應(yīng)用程序連接的用戶訪問特定數(shù)據(jù)。與數(shù)據(jù)庫角色不同的是,應(yīng)用程序角色默認(rèn)情況下不

42、包含任何成員,而且是非活動的。應(yīng)用程序角色使用兩種身份驗證模式,可以使用sp_setapprole來激活,并且需要密碼。因為應(yīng)用程序角色是數(shù)據(jù)庫級別的主體,所以它們只能通過其他數(shù)據(jù)庫中授予guest用戶帳戶的權(quán)限來訪問這些數(shù)據(jù)庫。因此,任何已禁用guest用戶帳戶的數(shù)據(jù)庫對其他數(shù)據(jù)庫中的應(yīng)用程序角色都是不可訪問的。登錄、用戶、角色是SQL Server 2005安全機制的基礎(chǔ)。三者聯(lián)系如下:服務(wù)器角色和登錄名相對應(yīng)。數(shù)據(jù)庫角色和用戶對應(yīng)的,數(shù)據(jù)庫角色和用戶都是數(shù)據(jù)庫對象,定義和刪除時必須選擇所屬的數(shù)據(jù)庫。一個數(shù)據(jù)庫角色中可以有多個用戶,一個用戶也可以屬于多個數(shù)據(jù)庫角色。12.3 SQL Ser

43、ver的權(quán)限管理設(shè)置用戶對數(shù)據(jù)庫的操作權(quán)限稱為授權(quán),SQL Server中未授權(quán)的用戶將無法訪問或存取數(shù)據(jù)庫數(shù)據(jù)。SQL Server通過權(quán)限管理指明哪些用戶被批準(zhǔn)使用哪些數(shù)據(jù)庫對象和Transact-SQL語句。SQL Server中的權(quán)限可授予用戶安全帳戶或用戶安全帳戶所屬的組或角色。SQL Server中權(quán)限可識別以下四類用戶,不同類型的用戶形成不同層次。系統(tǒng)管理員(SA):服務(wù)器層權(quán)限,在服務(wù)器的所有數(shù)據(jù)庫中對任何用戶對象有全部權(quán)限。數(shù)據(jù)庫擁有者(DBO):數(shù)據(jù)庫層權(quán)限,在其擁有的數(shù)據(jù)庫中對任何用戶對象有全部權(quán)限。數(shù)據(jù)庫對象擁有者:數(shù)據(jù)庫對象層。數(shù)據(jù)庫對象的一般用戶:數(shù)據(jù)庫對象用戶層。

44、12.3.1 權(quán)限類型SQL Server中的權(quán)限可以分為以下三種。1. 對象權(quán)限對象權(quán)限(SELECT、UPDATE、INSERT、DELETE、EXEC、DRI)管理由哪些數(shù)據(jù)庫用戶來使用哪些數(shù)據(jù)庫對象,是處理數(shù)據(jù)或執(zhí)行過程時需要的權(quán)限類別,由數(shù)據(jù)庫對象擁有者授予、廢除或撤消。用戶必須只授予在其工作范圍內(nèi)的權(quán)限,而禁止其在工作范圍外的所有活動(最小權(quán)限),以確保數(shù)據(jù)安全。對象權(quán)限是指用戶在數(shù)據(jù)庫中執(zhí)行與表、視圖、存儲過程等數(shù)據(jù)庫對象有關(guān)的操作的權(quán)限。例如,是否可以查詢表或視圖,是否允許向表中插入記錄或修改、刪除記錄,是否可以執(zhí)行存儲過程等。對象權(quán)限的主要內(nèi)容有: 對表和視圖,是否可以執(zhí)行S

45、ELECT、INSERT、UPDATE、DELETE語句; 對表和視圖的列,是否可以執(zhí)行SELECT、UPDATE語句的操作,以及在實施外鍵約束時是否可以作為REFERENCES參考的列;對存儲過程,是否可以執(zhí)行EXECUTE。2. 語句權(quán)限語句權(quán)限是指用戶創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫中對象(如表、視圖、自定義函數(shù)、存儲過程等)的權(quán)限。例如,如果用戶想要在數(shù)據(jù)庫中創(chuàng)建表,則應(yīng)該向該用戶授予CREATE TABLE 語句權(quán)限。語句權(quán)限適用于語句自身,而不是針對數(shù)據(jù)庫中的特定對象。語句權(quán)限實際上是授予用戶使用某些創(chuàng)建數(shù)據(jù)庫對象的Transact-SQL語句的權(quán)力。只有系統(tǒng)管理員、安全管理員和數(shù)據(jù)庫所有者才可

46、以授予用戶語句權(quán)限。語句權(quán)限包括CREATE DATABASE、CREATE DEFAULT、CREATE RULE、CREATE TABLE、CREATE VIEW、CREATE PROCEDURE、CREATE FUNCTION、BACKUP DATABASE、BACKUP LOG等操作。3. 隱含權(quán)限隱含權(quán)限是指系統(tǒng)自行預(yù)定義而不需要授權(quán)就有的權(quán)限,包括固定服務(wù)器角色、固定數(shù)據(jù)庫角色和數(shù)據(jù)庫對象所有者所擁有的權(quán)限。12.3.2 設(shè)置權(quán)限1. 使用圖形工具設(shè)置用戶或角色權(quán)限(1)授予或拒絕語句權(quán)限1)連接到相應(yīng)的Microsoft SQL Server Database Engine實例之

47、后,在“對象資源管理器”中,單擊服務(wù)器名稱,以展開服務(wù)器樹。2)展開“數(shù)據(jù)庫”,右擊用戶數(shù)據(jù)庫,如teaching。3)在出現(xiàn)的快捷菜單中選擇“屬性”,出現(xiàn)如圖12.14所示的“數(shù)據(jù)庫屬性-teaching”窗口。圖12.14 “數(shù)據(jù)庫屬性-teaching”窗口4)在12.14的左側(cè)“選擇頁”中選擇“權(quán)限”,在右側(cè)界面中選擇需要為該用戶授予或拒絕的語句權(quán)限,同時可以授予轉(zhuǎn)授權(quán)限。設(shè)置后單擊【確定】按鈕。(2)授予或拒絕對象權(quán)限1)連接到相應(yīng)的Microsoft SQL Server Database Engine實例之后,在“對象資源管理器”中,單擊服務(wù)器名稱以展開服務(wù)器樹。2)展開“數(shù)據(jù)庫

48、”,選擇用戶數(shù)據(jù)庫,如teaching。展開用戶數(shù)據(jù)庫及其下的“表”。3)右擊要設(shè)置權(quán)限的表名,如“s_c”,出現(xiàn)如圖12.15所示的“表屬性-s_c”窗口。圖12.15 “表屬性-s_c”窗口4)在12.15的左側(cè)“選擇頁”中選擇“權(quán)限”,在右側(cè)界面中選擇需要為該用戶授予或拒絕的對象權(quán)限,同時可以授予轉(zhuǎn)授權(quán)限,設(shè)置后單擊【確定】按鈕。圖12.13 “數(shù)據(jù)庫角色-新建”界面2. 使用Transact-SQL命令設(shè)置用戶或角色權(quán)限(1)權(quán)限的授予可以使用Transact-SQL命令GRANT將權(quán)限授予用戶,語法格式如下。GRANT ALL PRIVILEGES | permission ( co

49、lumn ,.,n ) ,.,n ON securable TO security_account ,.,n WITH GRANT OPTION 各選項含義如下。ALL PRIVILEGES :授予ALL參數(shù)相當(dāng)于授予以下權(quán)限。如果安全對象為數(shù)據(jù)庫,則ALL表示BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE和CREATE VIEW權(quán)限。如果安全對象是存儲過程,則ALL表示EXECUTE權(quán)限。如果安全對象為表或視圖

50、,則ALL表示DELETE、INSERT、REFERENCES、SELECT和UPDATE權(quán)限。permission:當(dāng)前授予的權(quán)限名稱。如12.3.1節(jié)所述。( column ,.n ):指定表中將授予其權(quán)限的列的名稱。securable:指定將授予其權(quán)限的安全對象,可以是表、視圖、存儲過程等。TO security_account:指定權(quán)限將授予的對象或用戶帳戶,如當(dāng)前數(shù)據(jù)庫的用戶與角色、Windows用戶或組、SQL Server角色。WITH GRANT OPTION:指示被授權(quán)者在獲得指定權(quán)限的同時還可以將指定權(quán)限授予其他用戶帳戶?!纠?2.4】以下示例將CREATE TABLE權(quán)限

51、授予yzm用戶。USE teachingGOGRANT CREATE TABLE TO yzmGO【例12.5】以下示例將對student表的更新及插入權(quán)限授予yzm用戶。USE teachingGOGRANT UPDATE, INSERT on student TO yzmGO【例12.6】以下示例將對student表的學(xué)號和姓名列的查詢權(quán)限授予yzm用戶。USE teachingGOGRANT SELECT(SNO, SNAME) ON student TO yzmGO(2)權(quán)限的禁止禁止權(quán)限就是刪除以前授予用戶、組或角色的權(quán)限,禁止從其他角色繼承的權(quán)限,且確保用戶、組或角色將來不繼承更高級別的組或角色的權(quán)限??梢允褂肨ransact-SQL命令DENY將權(quán)限禁止,語法格式如下。DENY ALL PRIVILEGES | permission ( column ,.,n ) ,.,n ON securable TO security_account ,.,n CASCADE其中:CASCADE指定授予用戶禁止權(quán)限,并撤銷用戶的WITH GRANT OPTION權(quán)限?!纠?2.7】以下示例禁止yzm用戶的CREATE VIEW權(quán)限

溫馨提示

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

評論

0/150

提交評論