當(dāng)然,要想發(fā)現(xiàn)SQL Server可能存在的漏洞,還需要使用專用的工具來實現(xiàn)。例如,使 用Microsoft baseline security analyzer這款掃描器,可以對活動目錄或者SQL Server數(shù)據(jù)庫進行安全掃描。其不僅可以檢測本地主機的安全性,還可以對遠程主機進行安全性掃描。這里我們僅僅談?wù)撈鋵QL Server的掃描檢測功能,通過該工具,管理員可以了解數(shù)據(jù)庫的身份驗證功能是否簡單脆弱、管理員是否擁有太多的權(quán)限、數(shù)據(jù)庫是否存在空密碼或者簡單的連接密碼、在SQL Server數(shù)據(jù)目錄中是否存在錯誤的ACL訪問控制表、是否授予sysadmin賬戶之外的角色過多的權(quán)利、對Everyone組的配置是否正確、是否允許其訪問注冊表中特定鍵值、對于SQL Server服務(wù)賬戶的配置是否妥當(dāng)安全、是否安裝了最新的補丁包和服務(wù)包等等。在該工具的幫助下,可以掃描檢測到SQL Server數(shù)據(jù)庫存在的各種安全風(fēng)險。
圖1 掃描SQL Server潛在的漏洞
在該程序的主界面(如圖1所示)中點擊“Scan a computer”鏈接,在打開窗口中的“Computer name”列表中默認選擇本地主機,您也可以選擇遠程目標主機。此外,還可以在“IP address”欄中輸入本機或者遠程主機地址,確定需要掃描的目標。因為主要掃描SQL Server安全漏洞,所以僅僅在“Options”欄 中 選 擇“Check for SQL administrative vulnerabilities”項,點擊“Start Scan”按鈕,執(zhí)行針對SQL Server的安全掃描動作。如果是初次使用該工具,會自動從微軟網(wǎng)站中下載最新的掃描列表,即針對哪些項目進行檢測。當(dāng)掃描完畢后,在安全報表的列表欄中選擇“Password Policy”項,點擊“What was scanned”鏈接,在打開的窗口中顯示掃描結(jié)果以及需要采取的處理策略。
在安裝SQL Server數(shù)據(jù)庫時,為了安全起見,必須將其安裝到NTFS分區(qū)中,通過為其設(shè)置訪問控制權(quán)限,可以有效制約黑客對其的入侵行為。例如當(dāng)黑客通過各種手段侵入系統(tǒng)后,如果其擁有的權(quán)限較低,則只能瀏覽數(shù)據(jù)庫所在的文件夾,卻沒有權(quán)利刪除其中的數(shù)據(jù),避免了數(shù)據(jù)損失的風(fēng)險。選擇“C:Program FilesMicrosoft SQL Server”文件夾,這是其默認安裝路徑,如果更改了其安裝路徑,可能有所不同。在其屬性窗口中的“共享”面板中確保選中“不共享此文件夾”項。
當(dāng)然,如果需要共享的話,必須為其設(shè)置嚴格的訪問權(quán)限。
在“安全”面板中只允許特定的賬戶(例如Administrator)擁有“完全控制”權(quán)限,其余的用戶要么刪除,要么為其配置讀取和執(zhí)行、列出文件夾目錄等較低的權(quán)限。
圖2 創(chuàng)建新的數(shù)據(jù)庫用戶
數(shù)據(jù)庫的連接密碼的重要性是不言而言的,因此,為SQL Server設(shè)置復(fù)雜的密碼,是保護其安全的重要措施。例如,可以將SQL Server和系統(tǒng)的活動目錄密碼策略綁定,強制其使用嚴格的密碼策略。利用SQL Server的審核機制,對用戶登錄失敗或者成功的行為進行審核。如果發(fā)現(xiàn)某用戶在較短的時間內(nèi)多次登錄失敗,說明該用戶試圖利用密碼字典等工具對數(shù)據(jù)庫密碼進行暴力破解,根據(jù)審核結(jié)果可以判斷該用戶的合法性,以及檢測其是否已經(jīng)登錄到數(shù)據(jù)庫中。
我們知道,SQL Server的用戶認證方式包括Windows身份認證和SQL Server身份認證兩種。為了安全起見,最好使用Windows認證方式。如果使用SQL Server混合認證方式,則由SQL Server負責(zé)處理登錄權(quán)限,雖然簡單常用,但是缺乏系統(tǒng)提供的底層安全架構(gòu)的保護,而使用Windows認證機制,則安全性可以大大提高。例如在域環(huán)境中,可以使用Windows Server 2008提供的活動目錄服務(wù)對數(shù)據(jù)庫登錄進行安全性檢查,以及利用其提供的密碼策略、審核策略等安全機制對用戶身份進行驗證。當(dāng)然,其缺點是賬戶信息和數(shù)據(jù)庫服務(wù)器必須駐留在相同的活動目錄中。
當(dāng)使用SQL Server身份驗證時,SQL Server 2005提供了強密碼驗證,驗證密碼實施策略,強制密碼過期,用戶在下次登錄時必須修改密碼等策略,可以將系統(tǒng)中使用的密碼復(fù)雜性策略和過期管理機制,應(yīng)用到SQL Server密碼管理功能中。為SQL Server賬戶設(shè)置登錄密碼,必須符合密碼復(fù)雜性要求,例如密碼不能包含全部或者部分賬戶名,密碼必須使用不同類型的字符,包括大寫、小寫、數(shù)字、特殊字符等。密碼的長度必須超過6個字符,SQL Server2005最大支持的密碼長度為128位。
啟 動“SQL Server Management Studio”程序,在登錄窗口中的“身份驗證”列表中顯示默認的是“Windows身份驗證”項,在“服務(wù)器類型”列表中選擇“數(shù)據(jù)庫引擎”項,在“服務(wù)器名稱”列表中選擇服務(wù)器名稱,點擊“連接”按鈕,在彈出窗口左側(cè)選擇目標服務(wù)器名,在其下選擇“安全性”-“登錄名”項,在窗口右側(cè)的“登錄名”欄中顯示已經(jīng)登錄的所有賬戶。在“登錄名”欄的右鍵菜單中選擇“新建登錄名”項,在登錄名屬性窗口(如圖2所示)中的“登錄名”欄中輸入新的賬戶名,默認選擇“Windows身份驗證”項。這里選擇“SQL Server身份驗證”項,在其下輸入密碼,注意:該密碼必須符合復(fù)雜度和長度的要求。勾選“強制實施密碼策略”項,表示使用與Windows Server 2008活動目錄相同的密碼策略。選擇“強制密碼過期”項,表示使用 與Windows Server 2008活動目錄相同的密碼過期規(guī)則。選擇“用戶在下次登錄時必須更改密碼”項,則用戶在下次登錄時必須修改密碼,當(dāng)然,要與Windows Server 2008活動目錄密碼策略相符。點擊確定按鈕,完成該賬戶的創(chuàng)建操作。
如果不想讓系統(tǒng)管理員登錄數(shù)據(jù)庫,可以刪除系統(tǒng)管理員組“BUILTINAdminbistrators”。對于其它的無關(guān)賬戶,也可以禁止其訪問數(shù)據(jù)庫。
在“M ic rosoft SQL S e r v e r M a n a g e m e n t Studio”界面中選擇目標服務(wù)器名,在其下選擇“安 全 性”-“登 錄 名”項,在登錄名欄選擇目標賬 戶,例 如“BUILTINAdminstrators”,在其右鍵菜單上點擊“刪除”項,在刪除對象窗口中點擊確定按鈕,將其刪除。如果需要禁止目標賬戶登錄數(shù)據(jù)庫的話,可以在登錄名欄中選擇所需賬戶,在其右鍵菜單中點擊“屬性”項,在彈出窗口左側(cè)的“選擇頁”列表中選擇“狀態(tài)”項,在右側(cè)窗口中的“是否連接到數(shù)據(jù)庫引擎”欄中選擇“拒絕”項,在“登錄”欄中選擇“禁用”項,點擊確定按鈕,該賬戶就無法操作選擇的數(shù)據(jù)庫了。
此外,對于數(shù)據(jù)庫中的孤立賬戶,也應(yīng)該進行刪除。我們知道,SQL Server登錄名使用映射到 SQL Server 登錄名的數(shù)據(jù)庫用戶訪問各個數(shù)據(jù)庫,有關(guān)SQL Server 登錄名與數(shù)據(jù)庫用戶的映射關(guān)系的信息存儲在數(shù)據(jù)庫中,其中包括數(shù)據(jù)庫用戶的名稱以及對應(yīng) SQL Server 登錄名的SID,該數(shù)據(jù)庫用戶的權(quán)限用于在數(shù)據(jù)庫中進行授權(quán)。在服務(wù)器實例上未定義或錯誤定義了其相應(yīng) SQL Server登錄名的數(shù)據(jù)庫用戶無法登錄到實例,這樣的用戶被稱為此服務(wù)器實例上的數(shù)據(jù)庫的“孤立用戶”,如果刪除了對應(yīng)的 SQL Server 登錄名,則數(shù)據(jù)庫用戶可能會變?yōu)楣铝⒂脩簟?/p>
另外,在數(shù)據(jù)庫還原或附加到 SQL Server 的其他實例之后,數(shù)據(jù)庫用戶也可能變?yōu)楣铝⒂脩簟H绻丛谛路?wù)器實例中提供數(shù)據(jù)庫用戶映射到的 SID,則該用戶可能變?yōu)楣铝⒂脩簟?/p>
簡單地說,孤立用戶就是數(shù)據(jù)庫中有這個用戶,但是沒有對應(yīng)的登錄用戶,這樣的用戶在用戶庫的sysusers系統(tǒng)表中存在,而在master數(shù)據(jù)庫的syslogins中卻沒有對應(yīng)的記錄。
在“M ic rosoft SQL S e r v e r M a n a g e m e n t Studio”界面左側(cè)選擇目標服務(wù)器名,在其右鍵菜單上點擊“新建查詢”項,輸入“sp_change_users_login @action='Report';”,點 擊“執(zhí)行”按鈕,執(zhí)行該代碼,在結(jié)果欄中顯示存在的孤立賬戶,之后將其刪除即可。
對SQL Server的登錄情況進行審核,可以讓管理員全面監(jiān)控不同用戶對數(shù)據(jù)庫的訪問情況,及時發(fā)現(xiàn)可以的訪問行為。在SQL Server中,可以利用C2審核跟蹤功能來實現(xiàn)上述功能。在Microsoft SQL Server Management Studio主界面左側(cè)選擇目標服務(wù)器名稱,在其右鍵菜單中點擊“屬性”項,在彈出窗口左側(cè)列表中選擇“安全性”項,在右側(cè)窗口中的“登錄審核”欄中選擇“失敗和成功的登錄”項,在“選項”欄中選擇“C2審核跟蹤”項,點擊確定按鈕保存配置,之后重啟SQL Server服務(wù)器激活以上配置。
當(dāng)安裝完SQL Server數(shù)據(jù)庫后,存在一個明顯的安全漏洞,即如果采用的Windows身份認證方式,那么SA賬戶的密碼為空,這對于數(shù)據(jù)庫安全極為不利,一旦讓黑客利用,就會對數(shù)據(jù)庫甚至整個系統(tǒng)造成很大的威脅。為了安全起見,最好為該賬戶設(shè)置盡可能復(fù)雜的密碼。在Microsoft SQL Server Management Studio主界面左側(cè)選擇目標服務(wù)器名,在其下點擊“安全性”-“登錄名”項,在右側(cè)窗口中選擇SA賬戶,在其右鍵菜單中點擊“重命名”項,可以更改其名稱,并按照上述方法為其設(shè)置復(fù)雜的密碼。這樣,就可以有效避開黑客的惡意掃描,有效保護數(shù)據(jù)庫安全。
用戶之所以可以登錄并訪問數(shù)據(jù)庫,就在于其擁有操作數(shù)據(jù)庫的權(quán)利,否則的話,其根本接觸不到其中存儲的數(shù)據(jù)。但是,一旦用戶的訪問權(quán)限設(shè)置不當(dāng),就會對數(shù)據(jù)庫構(gòu)成潛在的威脅。因此,對不同的用戶合理地設(shè)置訪問權(quán)限,是極為必要的。在Microsoft SQL Server Management Studio主界面中左側(cè)選擇目標服務(wù)器名,在其下點擊“安全性”-“登錄名”項,在右側(cè)窗口中選擇目標賬戶,在其右鍵菜單中選擇“屬性”項,在彈出窗口左側(cè)選擇“服務(wù)器角色”項,在右側(cè)窗口中可以定制該用戶可以訪問的數(shù)據(jù)庫角色。
在左側(cè)選擇“用戶映射”項,在右側(cè)窗口中勾選使用該賬戶名登錄后可以訪問的數(shù)據(jù)庫名稱。當(dāng)選擇某個數(shù)據(jù)庫時,該賬戶擁有的數(shù)據(jù)庫角色信息顯示在下方的列表中。在“映射到此登錄名的用戶”列表中選擇某個數(shù)據(jù)庫(例如“master”),在“默認架構(gòu)”列中點擊選擇按鈕,在彈出窗口中點擊瀏覽按鈕,在查找對象窗口中選擇顯示所有可用的架構(gòu)名,選擇合適的架構(gòu)名,即可設(shè)定該數(shù)據(jù)庫的默認架構(gòu)名。對于初次創(chuàng)建的賬戶,默認的架構(gòu)是dbo。
在窗口左側(cè)點擊“安全對象”項,在右側(cè)窗口點擊“添加”按鈕,在彈出窗口中選擇“特定對象”項,點擊確定按鈕,在選擇對象窗口中點擊“對象類型”按鈕,在選擇對象類型窗口中選擇“服務(wù)器”項,點擊確定按鈕,在選擇對象窗口中點擊瀏覽按鈕,在查找對象窗口中目標SQL Server服務(wù)器名,之后點擊確定按鈕,返回安全對象管理界面。在“安全對象名”列表中選擇目標安全對象,在下方的顯式列表中列出所有可用的權(quán)限項目,管理員可以根據(jù)需要為選定的賬戶選擇權(quán)限,之后勾選與之對應(yīng)的“授予”項,即可將該權(quán)限賦予該用戶。
當(dāng)目標賬戶擁有了對數(shù)據(jù)庫的合適訪問權(quán)限后,管理員就可以根據(jù)需要,為其配置訪問數(shù)據(jù)庫中數(shù)據(jù)表的訪問權(quán)限了。這樣,只有特定的數(shù)據(jù)表,才允許該賬戶進行訪問。在Microsoft SQL Server Management Studio主界面左側(cè)選擇數(shù)據(jù)庫服務(wù)器名,在其下的“數(shù)據(jù)庫”欄中選擇合適的數(shù)據(jù)庫(例如“master”),在其下選擇“表”項。在列表中選擇合適的數(shù)據(jù)表,在其右鍵菜單上點擊“屬性”項,在彈出窗口中左側(cè)的“選擇頁”欄中點擊“權(quán)限”項,在右側(cè)窗口中點擊“添加”按鈕,在選擇用戶或角色窗口中點擊“瀏覽”按鈕,在查找對象窗口中選擇目標用戶名,點擊確定按鈕,返回權(quán)限設(shè)置頁面。
在“用戶或角色”列表中選擇目標賬戶,在下方的顯示權(quán)限列表中顯示所有的操作權(quán)限,可以根據(jù)需要進行選擇。例如選擇“Insert”項,并勾選與之對應(yīng)的“授予”選擇框,那么該用戶就擁有了對該數(shù)據(jù)表的數(shù)據(jù)插入功能。選擇“Delete”項,可以讓其擁有刪除數(shù)據(jù)的功能,點擊確定按鈕,保存該用戶的數(shù)據(jù)表范圍權(quán)限。按照同樣的方法,可以設(shè)置不同用戶訪問數(shù)據(jù)庫和數(shù)據(jù)表的權(quán)限。
圖3 將數(shù)據(jù)庫設(shè)置為只讀狀態(tài)
我們知道,將文件設(shè)置為只讀狀態(tài),可以防止別人隨意對其更改,這樣可以簡單有效地保護文件的安全,對于數(shù)據(jù)庫來說,道理是一樣的。在某些情況下,將數(shù)據(jù)庫設(shè)置為只讀狀態(tài),即使黑客對其發(fā)起攻擊,也無法修改其內(nèi)容。例如,黑客無法在其中插入一句話木馬等,在一定程度上可以提高數(shù)據(jù)庫的安全性。
對于只讀數(shù)據(jù)庫來說,其實際上只能提供數(shù)據(jù)查詢服務(wù),無法寫入或者更改數(shù)據(jù)。在Microsoft SQL Server Management Studio主界面左側(cè)選擇某個數(shù)據(jù)庫(例如“master”),在其屬性窗口左側(cè)的“選擇頁”欄中點擊“選項”項,在右側(cè)窗口中的“其它選項”列表中選擇“狀態(tài)”欄中的“數(shù)據(jù)庫為只讀”項(如圖3所示),將其值設(shè)置為“True”,在“狀態(tài)”欄中選擇“限制訪問”項,將其值設(shè)置為“SINGLE_USER”項,表示只允許單用戶訪問,點擊確定按鈕,就可以將該數(shù)據(jù)庫設(shè)置為只讀狀態(tài)。
保護數(shù)據(jù)最實用的方法是對其進行加密處理,這樣,即使黑客得到數(shù)據(jù),也無法了解其實際內(nèi)容。
在老版本的SQL Server中,并沒有提供數(shù)據(jù)加密功能,使用者只能借助于第三方的加密工具,對傳輸?shù)臄?shù)據(jù)進行加密處理。在SQL Server 2005中,已經(jīng)提供了強悍的數(shù)據(jù)加密功能,可以有力地保護數(shù)據(jù)的安全。
當(dāng)然,數(shù)據(jù)的加密和解密需要消耗一定的系統(tǒng)資源,因此最好的辦法是僅僅對機密的數(shù)據(jù)進行加密,對于一般的數(shù)據(jù)無需進行加密。數(shù)據(jù)加密離不開密鑰,只有使用密鑰才可以操作加密數(shù)據(jù)。
在 M i c r o s o f t S Q L S e r v e r M a n a g e m e n t Studio主界面左側(cè)選擇某個數(shù)據(jù)庫(例如“master”),在其右鍵菜單中點擊“新建查詢”項,在右側(cè)窗口的標記框中逐行輸入“CREATE Table dbo.PerforSale”、“BianHao i n t”、“ D e p a r t N a m e nvarchar(50)”、“SaleTg varbinary(500)”、“Go” 之后執(zhí)行這些語句,創(chuàng)建一個 名 為“PerforSale” 的數(shù)據(jù)表,其中包含三個字段,分別表示用來存儲編號、姓名和統(tǒng)計數(shù)字。執(zhí)行“CREATE MASTER K R Y E N C R Y P T I O N B Y P A S S W O R D='password'”語 句,當(dāng) 出現(xiàn)“命令已成功完成”的提示后,完成數(shù)據(jù)庫主密鑰的創(chuàng)建操作,這里假設(shè)為“password”。一般來說,一個數(shù)據(jù)庫只能有一個主密鑰,如果需要刪除主密鑰,可以執(zhí)行“ALTER MASTER K E Y R E G E N E R A T E WITH ENCRYPTION BY PASSWIRD='password'”之類的語句來實現(xiàn)。
當(dāng)創(chuàng)建了主密鑰之后,還需要創(chuàng)建加密密鑰。SQL Server支持多種加密方式以及加密算法。例如其支持對稱式加密、非對稱式加密、數(shù)字證書等,對于對稱式加密來說,加解密使用的是同一個密鑰,加密算法包括AES、RC4等。對于非對稱式加密方法來說,采用的是公鑰和私鑰模式,即使用公鑰加密數(shù)據(jù),使用私鑰解密。這種加密方式安全性很高,在實際中使用很廣泛,其加密算法包括RSA等,支持的密鑰強度很高。數(shù)字證書其實就是一種非對稱加密方法,用戶需要在本機中安裝對應(yīng)的證書,完成數(shù)據(jù)的解密操作。
例如在查詢窗口中輸入“CREATE SYMMETRIC K R Y s y m_S a l e T g WITH ALGORITHM=AES_192 ENCRYPTION B Y P A S S W O R D='passwordaes'”語句,表示創(chuàng)建的目標數(shù)據(jù)表中使用對稱式加密方式,采用了AES加密算法,密鑰長度為192位,密 鑰 為“passwordaes”。 當(dāng)需要查詢密鑰信息時,可以執(zhí) 行“SELECT*FROM sys.symmetric_keys WHERE[name]='sym_SaleTg'”語句,在查詢結(jié)果中可以顯示詳細的密鑰信息。在使用對稱式加密方式加密特定的數(shù)據(jù)列之前,需要將其顯式打開。執(zhí)行“OPEN SYSMMETRIC KEY sym_SaleTg DECRYPTION BY P ASSWORD='passwordaes'”語句,打開對稱式密鑰。
之后可以在名為“PerforSale” 的 表中插入加密字段,例如執(zhí) 行“INSERT INTO PerforSale VALUES(1,'la oli',EncryptionbyKey(KEY_GUID('sym_SaleTg'),'9000'))”語句,在該表中插入一行數(shù)據(jù),其中的序號列為1,名稱列內(nèi)容為“l(fā)aoli”,統(tǒng)計數(shù)據(jù)字段為9000,對統(tǒng)計字段使用了密鑰進行了加密處理。
當(dāng)然,您可以根據(jù)需要,輸入多行數(shù)據(jù),分別對第三個字段進行加密。
當(dāng)執(zhí)行完畢后,執(zhí)行“SELECT*FROM PerforSale”語句,查詢“PerforSale”表的內(nèi)容,發(fā)現(xiàn)其中所有行中的第三個字段內(nèi)容變成雜亂的二進制數(shù)據(jù),原本的數(shù)值無法正常顯示。當(dāng)加密完畢后,執(zhí)行“CLOSE SYMMRTRIC KEY sym_SaleTg”語句,關(guān)閉該對稱式密鑰。當(dāng)執(zhí)行“SELECT*FROM sys.openkeys”語 句后,發(fā)現(xiàn)密鑰信息已經(jīng)無法顯示了。
對于加密的數(shù)據(jù),在查看其真實內(nèi)容時,必須進行解密處理。首先必須執(zhí)行“OPEN SYSMMETRIC KEY sym_SaleTg DECRYPTION BY P ASSWORD='passwordaes'”語句,顯示打開該對稱式加密密鑰。之后執(zhí)行“SELECT Bi anHao,DepartName,CAST(DecryptBykey(SaleTg) AS VARCHAR(20) AS SaleTg FROM PerforSale)”語句,就可以在名為“PerforSale”表中讀取所有的數(shù)據(jù)行,并對其中的名為“SaleTg”的列中讀取加密數(shù)據(jù),并對其進行解密,之后在查詢結(jié)果中就可以瀏覽所有的數(shù)據(jù)了,可以看到,原本無法正常顯示的內(nèi)容可以正常顯示了。當(dāng)執(zhí)行了“CLOSE SYMMETRIC KEY sym_SaleTg”語句,關(guān)閉了對稱式密鑰后,再執(zhí)行“SELECT*FROM PerforSale”語句,來查詢該數(shù)據(jù)表的內(nèi)容后,發(fā)現(xiàn)對應(yīng)列已經(jīng)處于加密狀態(tài)了。
圖4 管理服務(wù)和連接等外圍應(yīng)用屬性
圖5 外圍應(yīng)用配置器使用界面
對于一個嚴密的安全系統(tǒng)來說,不僅僅要保護核心數(shù)據(jù)的安全,而且不能在周邊配置上出現(xiàn)任何問題,否則只要出現(xiàn)一個安全漏洞,就會對整個系統(tǒng)造成威脅。例如,對于Windows來說,即使能夠為其打上了各種補丁,將其核心部分保護得很完美。但是,系統(tǒng)畢竟有眾多的外圍組件組成,其中的某個組件(例如IIS權(quán)限配置不當(dāng)?shù)龋┚蜁缓诳蛺阂饫茫M而突破防御網(wǎng)侵入系統(tǒng)。對應(yīng)地,SQL Server不僅是只包含數(shù)據(jù)庫,其實在其中還提供了很多的功能組件。
如果這些組件存在安全漏洞或者配置不當(dāng)?shù)脑?,就很容?dǎo)致黑客采取迂回進攻的方法,從外圍打開突破口威脅到數(shù)據(jù)庫安全。因此,對于使用不到的組件,盡可能將其禁用或者停用,盡可能降低在數(shù)據(jù)庫外圍存在的安全隱患,不給黑客以可乘之機。利用SQL Server提供的外圍應(yīng)用配置器(簡稱SAC),就可以對和SQL Server相關(guān)的功能組件、服務(wù)、遠程連接等對象執(zhí)行禁用、停止或者開啟等操作。
在SQL Server的配置工具中啟動“SQL Server外圍應(yīng)用配置器”程序,在其主界面中的“配置外圍應(yīng)用”欄中顯示“l(fā)ocalhost”內(nèi)容,說明其默認情況下可以管理本地主機中安裝的SQL Server數(shù)據(jù)庫系統(tǒng)。如果需要管理別的數(shù)據(jù)庫服務(wù)器,可以點擊“更改計算機”鏈接,在選擇計算機窗口中選擇“遠程計算機”項,輸入目標主機的IP地址,就可以連接到對應(yīng)的主機上。在SAC主界面中點擊“服務(wù)和連接的外圍應(yīng)用配置器”鏈接,可以對與SQL Server相關(guān)的服務(wù)、遠程連接等對象進行管理。
對于服務(wù)來說,可以調(diào)整其運行狀態(tài),包括自動(使其可以自動跟隨系統(tǒng)啟動)、手動(在系統(tǒng)啟動時不能自動運行,需要用戶手工啟動)和禁止(禁止該服務(wù)運行)等。這些服務(wù)和組件包括數(shù)據(jù)庫引擎服務(wù)、數(shù)據(jù)庫引擎遠程連接、Analysis Service服 務(wù)、Analysis Service遠程連接、Reporting Service服務(wù)、SQL Server Agent服務(wù)、Full-text Service服 務(wù)、Notification Service實例服務(wù)、Integration Service服 務(wù)、SQL Server Browser服務(wù)等。
打開SAC的服務(wù)和連接的外圍應(yīng)用配置窗口(如圖4所示),在其左側(cè)顯示所有的服務(wù)或者組件,您可以根據(jù)需要,靈活地控制這些服務(wù)的運行狀態(tài)。例如選擇“Anlysis Service”服務(wù),在右側(cè)的“啟動類型”列表中選擇其啟動類型,包括自動、手動、禁用等。在“服務(wù)狀態(tài)”欄中顯示“正在運行”,說明該服務(wù)處于激活狀態(tài)。點擊“停止”按鈕,可以結(jié)束其運行狀態(tài)。當(dāng)然,以后可以點擊“啟動”按鈕,激活該服務(wù)。對于遠程連接項目,也可以靈活控制其狀態(tài)。例如選 擇“Database Engine”-“MSSQLSERVER”-“遠程連接”項,在右側(cè)窗口可以更改其連接方式。包括僅限本地連接或者本地連接和遠程連接。對于后者,還可以選擇僅使用TCP/IP,僅使用命令管道,同時使用TCP/IP和命令管道等。
圖6 執(zhí)行數(shù)據(jù)庫備份操作
在SAC主界面中點擊“功能的外圍應(yīng)用配置器”鏈接,在打開的管理窗口(如圖5所示)中可以啟用或者禁用多個數(shù)據(jù)庫引 擎、Analysis Service、Reporting Services等組件的功能,合理地設(shè)置其運行狀態(tài),可以有效提高SQL Server的安全性。例如,在該管理窗口左側(cè)打開“MSSQLSERVER”-“Database Engine” 項,在其下可以進行即席分布式查詢、CLR(即公共語言運行時)集成、DAC(即專用管理員連接)、數(shù)據(jù)庫郵件、本機XML Web服務(wù)、OLE自 動 化、Service Broker、SQL郵件、Web助手、XP_cmdshell等。 在默認情況下,在新安裝的程序中幾乎都禁用這些外圍組件。例如,對于XP_cmdshell存儲過程來說,在黑客入侵數(shù)據(jù)庫時,是黑客最常用的對象。一旦黑客獲得了管理員密碼,就可以通過該存儲過程,對系統(tǒng)執(zhí)行各種滲透和破壞操作。選 擇“MSSQLSERVER”-“Database Engine”-“xp_cmdshell”項,在右側(cè)窗口中選擇“啟用xp_cmdshell”項,就可以激活xp_cmdshell存儲過程。反之則禁用該存儲過程。
俗話說,有備則無患。在SQL Server數(shù)據(jù)庫中一般都存儲有很多重要數(shù)據(jù),如果不及時進行備份,一旦因為誤操作或者黑客入侵等原因,就會造成數(shù)據(jù)丟失的嚴重后果。備份數(shù)據(jù)庫,實際上就是將其中所有的數(shù)據(jù)庫、數(shù)據(jù)表、用戶定義對象、數(shù)據(jù)、存儲過程、視圖、事務(wù)日志等對象完整的備份出來,并存儲在安全的位置。在SQL Server中提供了完善的數(shù)據(jù)備份功能。例如,使用完全數(shù)據(jù)備份功能,可以將數(shù)據(jù)庫中的所有內(nèi)容(包括系統(tǒng)表、索引、用戶數(shù)據(jù)等等)以及全部的數(shù)據(jù)文件全部復(fù)制出來。這種備份方法很徹底,但是對于大型數(shù)據(jù)庫來說,需要花費較長的時間,并且備份文件需要占用較大的存儲空間。
在 S Q L S e r v e r management Studio窗口左側(cè)選擇目標數(shù)據(jù)庫,在其右鍵菜單上點擊“任務(wù)”-“備份”項,在彈出窗口(如圖6所示)右側(cè)的“備份類型”列表中選擇“完整”項,在其下選擇“數(shù)據(jù)庫”項。在“名稱”欄中輸入備份項的名稱,在其下輸入具體的說明信息。將備份集的過期時間設(shè)置為0,表示永不過期。在“目標”欄中點擊“添加”按鈕,選擇備份文件存儲路徑和備份文件名。之后點擊確定按鈕,執(zhí)行數(shù)據(jù)庫的備份操作。
當(dāng)數(shù)據(jù)庫出現(xiàn)問題需要恢復(fù)時,可以在SQL Server management Studio窗口左側(cè)選擇目標數(shù)據(jù)庫,在其右鍵菜單中單機“任務(wù)”-“還原”-“數(shù)據(jù)庫”項,在彈出窗口中保持默認設(shè)置,選擇“源設(shè)備”項,點擊瀏覽按鈕,選擇之前的備份文件(其后綴為“.bak”),點擊確定按鈕,返回數(shù)據(jù)庫還原窗口,在其左側(cè)選擇“選項”項,在右側(cè)窗口中選擇“覆蓋現(xiàn)有的數(shù)據(jù)庫”項,表示還原操作將覆蓋現(xiàn)有的數(shù)據(jù)庫極其相關(guān)文件。選擇“保留復(fù)制設(shè)置”項,表示將數(shù)據(jù)庫還原到別的服務(wù)器時,將保留復(fù)制設(shè)置信息。選擇“還原每個備份之前進行提示”項,表示在還原過程中會根據(jù)需要要求管理員確認操作。選擇“限制訪問還原的數(shù)據(jù)庫”項,表示還原的數(shù)據(jù)庫僅限于db_owner、dbcreator、sysadmin等用戶使用。在“將數(shù)據(jù)庫文件還原為”欄中可以設(shè)置文件還原的目標文件夾,默認為數(shù)據(jù)庫原始文件名。在對應(yīng)的“還原為”列中點擊瀏覽按鈕,可以更改數(shù)據(jù)庫文件路徑和文件名信息,其余的選項保持默認,點擊確定按鈕,執(zhí)行數(shù)據(jù)庫的還原操作。
為了提高備份的靈活性,可以使用SQL Server提供的維護計劃向?qū)Чδ埽瑢?shù)據(jù)庫和事務(wù)日志執(zhí)行自動備份操作,在此期間,還可以實現(xiàn)數(shù)據(jù)庫和事務(wù)日志的完整性檢查。當(dāng)然,必須保證SQL Server代理服務(wù)處于運行狀態(tài)。在SQL Server management Studio窗口左側(cè)選擇目標服務(wù)器,在其下選擇“管理”-“維護計劃”項,在彈出的向?qū)Ы缑嬷悬c擊下一步按鈕,在“選擇計劃屬性”窗口中輸入本計劃的名稱,選擇“整個計劃統(tǒng)籌安排或無計劃”項,點擊“更改”按鈕,在彈出窗口中的“計劃類型”列表中選擇“重復(fù)執(zhí)行”項。選擇“已啟用”項,在“執(zhí)行”列表中選擇“每天”項,在“執(zhí)行間隔”欄設(shè)置為“1”,單位為天。選擇“執(zhí)行一次,時間為”項,在其右側(cè)具體的時間點,例如“01:30:00”,在每天凌晨1點30分執(zhí)行依次數(shù)據(jù)庫備份任務(wù)。
在“開始日期”列表中選擇開始執(zhí)行定時備份操作的起始日期,選擇“結(jié)束日期”項,可以設(shè)置結(jié)束該任務(wù)的終止日期。如果選擇“無結(jié)束日期”項,表示持續(xù)不斷的執(zhí)行本任務(wù)。點擊確定按鈕,保存計劃任務(wù)信息。在下一步窗口中顯示所有的維護任務(wù),這里選擇“備份數(shù)據(jù)庫(完整)”項。當(dāng)然,也可以選擇“備份數(shù)據(jù)庫(差異)”,“備份數(shù)據(jù)庫(事務(wù)日志)”等項??梢酝瑫r選擇多個維護任務(wù)。點擊下一步按鈕,在數(shù)據(jù)庫列表中選擇需要備份的數(shù)據(jù)庫,并為之配置備份參數(shù),包括保存路徑、備份過期時間等等。點擊下一步按鈕,選擇“將報告寫入文本文件”項,點擊瀏覽按鈕,可以設(shè)置報告文件存儲路徑。在下一步窗口中顯示本計劃任務(wù)的詳細信息,點擊完成按鈕,完成本自動備份項目的創(chuàng)建操作。這樣,當(dāng)每天到達預(yù)設(shè)的時間后,SQL Server就會自動執(zhí)行目標數(shù)據(jù)庫的備份操作了。