當前位置:首頁 » 編程語言 » sqlserver的安全配置

sqlserver的安全配置

發布時間: 2022-08-17 09:37:36

sqlserver有哪些安全策略

Microsoft建立了一種既靈活又強大的安全管理機制,它能夠對用戶訪問SQL Server伺服器系統和資料庫的安全進行全面地管理。按照本文介紹的步驟,你可以為SQL Server 7.0(或2000)構造出一個靈活的、可管理的安全策略,而且它的安全性經得起考驗。

一、驗證方法選擇
本文對驗證(authentication)和授權(authorization)這兩個概念作不同的解釋。驗證是指檢驗用戶的身份標識;授權是指 允許用戶做些什麼。在本文的討論中,驗證過程在用戶登錄SQL Server的時候出現,授權過程在用戶試圖訪問數據或執行命令的時候出現。
構造安全策略的第一個步驟是確定SQL Server用哪種方式驗證用戶。SQL Server的驗證是把一組帳戶、密碼與Master資料庫Sysxlogins表中的一個清單進行匹配。Windows NT/2000的驗證是請求域控制器檢查用戶身份的合法性。一般地,如果伺服器可以訪問域控制器,我們應該使用Windows NT/2000驗證。域控制器可以是Win2K伺服器,也可以是NT伺服器。無論在哪種情況下,SQL Server都接收到一個訪問標記(Access Token)。訪問標記是在驗證過程中構造出來的一個特殊列表,其中包含了用戶的SID(安全標識號)以及一系列用戶所在組的SID。正如本文後面所介紹 的,SQL Server以這些SID為基礎授予訪問許可權。注意,操作系統如何構造訪問標記並不重要,SQL Server只使用訪問標記中的SID。也就是說,不論你使用SQL Server 2000、SQL Server 7.0、Win2K還是NT進行驗證都無關緊要,結果都一樣。
如果使用SQL Server驗證的登錄,它最大的好處是很容易通過Enterprise Manager實現,最大的缺點在於SQL Server驗證的登錄只對特定的伺服器有效,也就是說,在一個多伺服器的環境中管理比較困難。使用SQL Server進行驗證的第二個重要的缺點是,對於每一個資料庫,我們必須分別地為它管理許可權。如果某個用戶對兩個資料庫有相同的許可權要求,我們必須手工設 置兩個資料庫的許可權,或者編寫腳本設置許可權。如果用戶數量較少,比如25個以下,而且這些用戶的許可權變化不是很頻繁,SQL Server驗證的登錄或許適用。但是,在幾乎所有的其他情況下(有一些例外情況,例如直接管理安全問題的應用),這種登錄方式的管理負擔將超過它的優 點。
二、Web環境中的驗證
即使最好的安全策略也常常在一種情形前屈服,這種情形就是在Web應用中使用SQL Server的數據。在這種情形下,進行驗證的典型方法是把一組SQL Server登錄名稱和密碼嵌入到Web伺服器上運行的程序,比如ASP頁面或者CGI腳本;然後,由Web伺服器負責驗證用戶,應用程序則使用它自己的 登錄帳戶(或者是系統管理員sa帳戶,或者為了方便起見,使用Sysadmin伺服器角色中的登錄帳戶)為用戶訪問數據。
這種安排有幾個缺點,其中最重要的包括:它不具備對用戶在伺服器上的活動進行審核的能力,完全依賴於Web應用程序實現用戶驗證,當SQL Server需要限定用戶許可權時不同的用戶之間不易區別。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四種方法驗證用戶。第一種方法是為每一個網站和每一個虛擬目錄創建一個匿名用戶的NT帳戶。此後,所有應用程序登錄SQL Server時都使用該安全環境。我們可以通過授予NT匿名帳戶合適的許可權,改進審核和驗證功能。
第二種方法是讓所有網站使用Basic驗證。此時,只有當用戶在對話框中輸入了合法的帳戶和密碼,IIS才會允許他們訪問頁面。IIS依靠一個NT 安全資料庫實現登錄身份驗證,NT安全資料庫既可以在本地伺服器上,也可以在域控制器上。當用戶運行一個訪問SQL Server資料庫的程序或者腳本時,IIS把用戶為了瀏覽頁面而提供的身份信息發送給伺服器。如果你使用這種方法,應該記住:在通常情況下,瀏覽器與服 務器之間的密碼傳送一般是不加密的,對於那些使用Basic驗證而安全又很重要的網站,你必須實現SSL(Secure Sockets Layer,安全套接字層)。
在客戶端只使用IE 5.0、IE 4.0、IE 3.0瀏覽器的情況下,你可以使用第三種驗證方法。你可以在Web網站上和虛擬目錄上都啟用NT驗證。IE會把用戶登錄計算機的身份信息發送給IIS,當 該用戶試圖登錄SQL Server時IIS就使用這些登錄信息。使用這種簡化的方法時,我們可以在一個遠程網站的域上對用戶身份進行驗證(該遠程網站登錄到一個與運行著Web 伺服器的域有著信任關系的域)。
最後,如果用戶都有個人數字證書,你可以把那些證書映射到本地域的NT帳戶上。個人數字證書與伺服器數字證書以同樣的技術為基礎,它證明用戶身份標 識的合法性,所以可以取代NT的Challenge/Response(質詢/回應)驗證演算法。Netscape和IE都自動在每一個頁面請求中把證書信 息發送給IIS。IIS提供了一個讓管理員把證書映射到NT帳戶的工具。因此,我們可以用數字證書取代通常的提供帳戶名字和密碼的登錄過程。
由此可見,通過NT帳戶驗證用戶時我們可以使用多種實現方法。即使當用戶通過IIS跨越Internet連接SQL Server時,選擇仍舊存在。因此,你應該把NT驗證作為首選的用戶身份驗證辦法。
三、設置全局組
構造安全策略的下一個步驟是確定用戶應該屬於什麼組。通常,每一個組織或應用程序的用戶都可以按照他們對數據的特定訪問要求分成許多類別。例如,會 計應用軟體的用戶一般包括:數據輸入操作員,數據輸入管理員,報表編寫員,會計師,審計員,財務經理等。每一組用戶都有不同的資料庫訪問要求。

② 如何防止SQLserver伺服器被黑

一、基本安全設定:
(1)文件系統的設定 windows2000server 支持多種文件系統,最安全的要數NTFS文件系統,如果你的windows2000server要用作伺服器,最好將所有的分區都格式化為NTFS文件系統,fat32是不能用的。
(2)補丁(pack) 目前windows2000已經到sp4了,這個大補丁一定要裝的,安裝sp4後再到網路上升級,將微軟提供的各種重要系統安全更新全部都升級,不要怕麻煩,這是防病毒和黑客攻擊的非常重要安全設置步驟。
(3)帳號安全帳號是windows2000server的重要的安全保證,要注意區分一些工作組的許可權: administrators是系統管理員組,administrator是系統默認的管理帳號,administrator最好設置一個復雜的密碼,復雜到什麼程度呢?簡單的說,自己都要記不住這個密碼,這個密碼可以是字元、數字、符號、大小寫的組合(如:AGgF!452KhtUN),密碼不要讓別人猜得到,不要用自己得電話號碼啦之類的東西,最好在筆記本上將密碼設定好後再設置,設好密碼後妥善保管記錄密碼的筆記本,每隔一段時間更改自己的密碼 guest帳號最好禁止使用,如果沒有必要,不要添加其他的系統管理員帳號。
(4)關閉不必要的服務在服務中將一些不常用的服務關閉(比如列印、遠程注冊表操作,信息發送等不必要的服務)。
(5)網路協議如果沒有其他的用途,windows2000server只需要安裝tcp/ip協議,其他不必要的協議統統刪除。(6)如果沒必要,IIS一定不要安裝(如果需要安裝iis,那麼看後面的設置) IIS是windows2000server中最不安全的組件,不裝IIS,windows2000將是很安全的。
(7)默認共享的刪除 windows2000server默認的共享有以下幾種 c$ d$ e$ ..... IPC$ ADMIN$ 這些默認共享一定要關,否者hk利用簡單的Net use命令就可以將你的伺服器黑掉下面提供簡單的關閉這些共享的方法 A、建立一個批處理文件,如a.bat B、在該批處理文件中添加下面的語句 net share c$ /del (這是取消c盤的默認共享,同理 net share d$ /del 是取消d盤的共享,你有多少個盤符,就編多少個以上的語句) net share ipc$/del (刪除ipc默認共享) net share admin$ /del (刪除 admin默認共享) C 、將以上的語句添加完後,將該文件放入開始菜單中程序中啟動文件夾中,讓windows2000server每次啟動都將默認的共享刪除(7)CMD的設置 cmd.exe是windows2000中非常重要的文件,很多漏洞都是要*調用該個文件,該文件在windows2000server所在目錄的system32中,我們需要對其進行設定 A、將該文件從system32中拷貝出來放在其他地方,將原來的文件刪除 B、將拷貝出來的文件進行許可權設定,只允許administrator訪問,不允許其他任何的工作組或用戶訪問該文件。
(8)windows2000server終端服務(默認3389埠) windows2000server提供了遠程終端服務,此服務方便了網路管理員對伺服器的遠程管理,但是,該服務也為黑客提供了非常危險的攻擊,網路黑客口中的所謂跳板(肉雞)絕大部分都是利用該功能進行自我隱蔽的攻擊。一旦系統管理員的密碼被破解,而該伺服器又提供終端服務,黑客就可以完全控制了該伺服器,不但伺服器的各種資料會完全暴露,而且黑客還會利用這台伺服器去攻擊其他的伺服器,因此該服務除非你覺得自己的伺服器足夠安全,否則最好不要打開,特別是暴露在互連網路中的伺服器,打開該功能一定要小心謹慎。 A、如何知道自己的終端服務是否打開?終端服務需要安裝,我們可以通過控制面板中的添加/刪除程序中的添加/刪除windows組件來安裝,在windows組件向導列表中最下面有兩個組件,一個是「終端服務」,一個是「終端服務授權」,我們只需要安裝「終端服務」這個組件就可以將該功能啟用,一旦啟用了該功能,默認的情況下,我們的tcp3389埠就會打開。所以,我們看看這個地方,如果你的組件「終端服務」前面打了勾,就表明你已經打開了該服務。有些黑客手段很高明,一旦控制了你的計算機後,可以遠程打開該服務,這種情況下,我們最好檢查windows2000server啟用了哪些服務,如何檢查呢?打開windows2000server的服務管理(開始菜單——程序——管理工具——服務)。在服務列表中檢查Terminal Services這項服務的狀態,看看如果該服務處於「 禁用」狀態,說明該服務沒打開,如果該服務處於「已啟動」狀態,說明該服務已經打開。 B、如何關閉該服務!第一步,通過控制面板中的添加/刪除程序中的添加/刪除windows組件來將該服務組件刪除第二步,在服務中將Terminal Services服務禁用注意:需要經常檢查該服務是否被非法啟動,如果你在你沒有啟動該服務的情況下你發現它已打開,非常不幸,你的伺服器已經被黑,成為了別人的跳板(肉雞)最好的解決方法是重作伺服器系統,不要以為關閉該服務就行了。
(9)telnet服務(默認23埠)相對於3389來講,telnet服務更不容易引起管理員的注意,該服務以前是UNIX和Linux類系統提供的遠程管理終端服務,windows2000server也提供了,它也是一個終端服務,只不過telnet服務是字元界面,而3389服務是圖形界面,二者都能完全遠程式控制制伺服器的所有功能。我以前在利用肉雞的時候,一般都不用3389,為什麼呢?該服務速度慢,我一般都是打開肉雞的telnet服務,速度非常快,功能也很全面,又不容易被發覺 A、如何知道自己的telnet服務是否打開?在windows2000server控制面板——管理工具中有一項「Telnet 伺服器管理」(對應的文件是system32中的tlntadmn.exe),這就是該服務的開關,我們可以利用該程序配置我們的telnet服務。打開開始菜單——程序——管理工具——服務,在服務列表中有該服務對應的一項「Telnet」,默認的情況下,該服務狀態是「手動」,如果,該服務是「已啟動」狀態,說明該服務已經啟動了,你可以用以下命令連接在windows(98/2000/xp/2003)字元模式下輸入: telnet 伺服器的IP地址如果出現了登陸界面,非常不幸,你的telnet服務真的已開,如果不是你開的,非常不幸,你被黑了,你可能成為了肉雞。 B、如何關閉該服務!打開開始菜單——程序——管理工具——服務,在服務中將telnet服務禁用建議:最好將system32中的tlntadmn.exe拷貝出來放到其他文件夾中並改名,並將該文件從system32中刪除。隨時檢查telnet服務的狀態,如果該服務是「已啟動」狀態,而又不是你啟動的,最好重新安裝伺服器系統。最好隨時掃描你的伺服器所開的埠,如果23埠已開或有一些不知名的埠已開(因為黑客很可能會將提供該服務的埠改為其他的埠來逃避檢查),用telnet命令測試一下,看看能不能連接。附:telnet命令格式 telnet ip地址埠如:telnet 192.168.1.1 (連接伺服器192.168.1.1的默認23埠)如:telnet 192.168.1.1555 (連接伺服器192.168.1.1的555埠) SQL Server 2000的安全配置在進行SQL Server 2000資料庫的安全配置之前,首先你必須對操作系統進行安全配置,保證你的操作系統處於安全狀態。然後對你要使用的操作資料庫軟體(程序)進行必要的安全審核,比如對ASP、PHP等腳本,這是很多基於資料庫的WEB應用常出現的安全隱患,對於腳本主要是一個過濾問題,需要過濾一些類似 , 『 @ / 等字元,防止破壞者構造惡意的SQL語句。接著,安裝SQL Server2000後請打上補丁sp1以及最新的sp2。 1、使用安全的密碼策略我們把密碼策略擺在所有安全配置的第一步,請注意,很多資料庫帳號的密碼過於簡單,這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa帳號的密碼寫於應用程序或者腳本中。健壯的密碼是安全的第一步!SQL Server2000安裝的時候,如果是使用混合模式,那麼就需要輸入sa的密碼,除非你確認必須使用空密碼。這比以前的版本有所改進。同時養成定期修改密碼的好習慣。資料庫管理員應該定期查看是否有不符合密碼要求的帳號。比如使用下面的SQL語句:Use master Select name,Password from syslogins wherepassword is null
2、使用安全帳號策略:由於SQL Server不能更改sa用戶名稱,也不能刪除這個超級用戶,所以,我們必須對這個帳號進行最強的保護,當然,包括使用一個非常強壯的密碼,最好不要在資料庫應用中使用sa帳號,只有當沒有其它方法登錄到 SQL Server 實例(例如,當其它系統管理員不可用或忘記了密碼)時才使用 sa。建議資料庫管理員新建立個擁有與sa一樣許可權的超級用戶來管理資料庫。安全的帳號策略還包括不要讓管理員許可權的帳號泛濫。SQL Server的認證模式有Windows身份認證和混合身份認證兩種。如果資料庫管理員不希望操作系統管理員來通過操作系統登陸來接觸資料庫的話,可以在帳號管理中把系統帳號「BUILTIN\Administrators」刪除。不過這樣做的結果是一旦sa帳號忘記密碼的話,就沒有辦法來恢復了。很多主機使用資料庫應用只是用來做查詢、修改等簡單功能的,請根據實際需要分配帳號,並賦予僅僅能夠滿足應用要求和需要的許可權。比如,只要查詢功能的,那麼就使用一個簡單的public帳號能夠select就可以了。
3、加強資料庫日誌記錄:審核資料庫登錄事件的「失敗和成功」,在實例屬性中選擇「安全性」,將其中的審核級別選定為全部,這樣在資料庫系統和操作系統日誌裡面,就詳細記錄了所有帳號的登錄事件。請定期查看SQL Server日誌檢查是否有可疑的登錄事件發生,或者使用DOS命令。findstr /C:"登錄" d:\Microsoft SQL Server\MSSQL\LOG\*.*
4、管理擴展存儲過程:對存儲過程進行大手術,並且對帳號調用擴展存儲過程的許可權要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而SQL Server的這么多系統存儲過程只是用來適應廣大用戶需求的,所以請刪除不必要的存儲過程,因為有些系統的存儲過程能很容易地被人利用起來提升許可權或進行破壞。如果你不需要擴展存儲過程xp_cmdshell請把它去掉。使用這個SQL語句:use master sp_dropextendedproc xp_cmdshellxp_cmdshell是進入操作系統的最佳捷徑,是資料庫留給操作系統的一個大後門。如果你需要這個存儲過程,請用這個語句也可以恢復過來。sp_addextendedproc xp_cmdshell, xpsql70.dll 如果你不需要請丟棄OLE自動存儲過程(會造成管理器中的某些特徵不能使用),這些過程包括如下:Sp_OACreateSp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty Sp_OAMethod Sp_OASetProperty Sp_OAStop 去掉不需要的注冊表訪問的存儲過程,注冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,如下:Xp_regaddmultistring Xp_regdeletekeyXp_regdeletevalue Xp_regenumvaluesXp_regread Xp_regremovemultistring Xp_regwrite 還有一些其他的擴展存儲過程,你也最好檢查檢查。在處理存儲過程的時候,請確認一下,避免造成對資料庫或應用程序的傷害。
5、使用協議加密:SQL Server 2000使用的Tabular Data Stream協議來進行網路數據交換,如果不加密的話,所有的網路傳輸都是明文的,包括密碼、資料庫內容等等,這是一個很大的安全威脅。能被人在網路中截獲到他們需要的東西,包括資料庫帳號和密碼。所以,在條件容許情況下,最好使用SSL來加密協議,當然,你需要一個證書來支持。
6、不要讓人隨便探測到你的TCP/IP埠:默認情況下,SQL Server使用1433埠監聽,很多人都說SQL Server配置的時候要把這個埠改變,這樣別人就不能很容易地知道使用的什麼埠了。可惜,通過微軟未公開的1434埠的UDP探測可以很容易知道SQL Server使用的什麼TCP/IP埠了。不過微軟還是考慮到了這個問題,畢竟公開而且開放的埠會引起不必要的麻煩。在實例屬性中選擇TCP/IP協議的屬性。選擇隱藏 SQL Server 實例。如果隱藏了 SQL Server 實例,則將禁止對試圖枚舉網路上現有的 SQL Server 實例的客戶端所發出的廣播作出響應。這樣,別人就不能用1434來探測你的TCP/IP埠了(除非用Port Scan)。
7、修改TCP/IP使用的埠:請在上一步配置的基礎上,更改原默認的1433埠。在實例屬性中選擇網路配置中的TCP/IP協議的屬性,將TCP/IP使用的默認埠變為其他埠. 9、拒絕來自1434埠的探測由於1434埠探測沒有限制,能夠被別人探測到一些資料庫信息,而且還可能遭到DOS攻擊讓資料庫伺服器的CPU負荷增大,所以對Windows 2000操作系統來說,在IPSec過濾拒絕掉1434埠的UDP通訊,可以盡可能地隱藏你的SQL Server。10、對網路連接進行IP限制SQL Server 2000資料庫系統本身沒有提供網路連接的安全解決辦法,但是Windows 2000提供了這樣的安全機制。使用操作系統自己的IPSec可以實現IP數據包的安全性。請對IP連接進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的埠連接,把來自網路上的安全威脅進行有效的控制。關於IPSec的使用請參看:http://www.microsoft.com/china/technet/security/ipsecloc.asp 上面主要介紹的一些SQL Server的安全配置,經過以上的配置,可以讓SQL Server本身具備足夠的安全防範能力。當然,更主要的還是要加強內部的安全控制和管理員的安全培訓,而且安全性問題是一個長期的解決過程,還需要以後進行更多的安全維護一、概述在應用系統中,資料庫往往是最核心的部分,一旦資料庫毀壞或損壞,將會帶來巨大的損失,所以資料庫的管理越來越重要。我們在做資料庫管理與維護工作中,不可避免會出現各種各樣的錯誤,本文針對資料庫的日誌文件丟失時如何利用MDF文件恢復資料庫的方法進行了研究。二、資料庫的恢復當資料庫的主數據MDF文件完好無損時,在丟失了LDF文件的情況下,如何利用MDF文件恢復資料庫?我們把SQL Server的日誌文件分為兩類:一類是無活動事務的日誌,另一類是含活動事務的日誌,根據不同的日誌,採取不同的方法來恢復資料庫。
1. 無活動事務的日誌恢復:無活動事務的日誌丟失時,我們很容易利用MDF文件直接恢復資料庫,具體方法如下:
①.分離被質疑的資料庫,可用企業管理器中的"分離資料庫工具",或者用存儲過程sp_detach_db分離資料庫;②利用MDF文件附加資料庫生成新的日誌文件,可用企業管理器中的"附加資料庫"的工具,或者用存儲過程sp_attach_single_file_db附加資料庫。如果資料庫的日誌文件中含有活動事務,利用此方法就不能恢復資料庫。
2. 含活動事務的日誌恢復:含有活動事務的日誌丟失時,利用上述方法就會出現"資料庫和日誌文件不符合,不能附加資料庫"。對於這種情況下,我們採用如下方法:
①新建同名資料庫AAA,並設它為緊急模式•停止SQL Server伺服器;•把資料庫主數據MDF文件移走;•啟SQL Server伺服器,新建一個同名的資料庫AAA;•停止SQL Server伺服器,把移走的MDF文件再覆蓋回來;•啟動SQL Server伺服器,把AAA設為緊急模式,不過默認情況下,系統表是不能隨便修改的,必須首先設置一下使其能被修改,運行以下語句即可: Use Master Gosp_configure 』allow updates』,1 reconfigure with override Go 接著運行以下語句,把AAA資料庫設為緊急模式,即把Sysdatabases表中AAA資料庫的status屬性設為』37268』,就表示把AAA資料庫處於緊急模式。 updatesysdatabases set status=32768 where hame=』AAA』如果沒有報告什麼錯誤,就可以進行以下操作。
②設置資料庫AAA為單用戶模式,並檢查資料庫•重啟SQL Server伺服器;•把資料庫AAA設為單用戶模式Sp_dboption 』AAA』, 』single user』, 』true』 •運行以下語句,檢查資料庫AAA DBCCCHECKDB(』AAA』) 如果沒有什麼大的問題就可以把資料庫的狀態改回去。
③還原資料庫的狀態運行以下語句,就可以把資料庫的狀態還原: update sysdatabases set status=28 wherename=』AAA』 sp_configure 』allow updates』,0 reconfigure with override Go 如果沒有什麼大的問題,刷新一下資料庫,資料庫AAA又會出現在你面前,但目前恢復工作還沒有做完,此時的資料庫仍不能工作,還要進行下面的處理,才能真正恢復。④利用DTS的導入導出向導,把資料庫AAA導入到一個新建資料庫BBB中•新建一個資料庫BBB; •右擊BBB,選擇IMPORT功能,打開導入向導;•目標源選擇"在SQL Server資料庫之間復制對象和資料庫",這樣可以把表結構,數據

③ 如何配置sqlserver 設置遠程訪問

er】遠程訪問資料庫進行配置

團隊間開發,需要使用同一個資料庫伺服器,所以大家必須都可以使用IP地址來訪問資料庫。

通常訪問資料庫的方式,有三種

1、直接訪問本地資料庫,在伺服器名稱里,輸入「 . " ,這個圓點。

右擊資料庫實例→點擊屬性→點擊安全

設置為SQLServer和windows認證即可

④ 如何配置sqlserver 以允許遠程連接

1、打開Navicat,右鍵點擊左邊的空白地方,然後創建一個連接,選擇sql server類型。

⑤ 如何保證SQLServer資料庫安全

目前,針對SQL Server資料庫的應用級入侵已經變得越來越肆無忌憚,像SQL注入、跨站點腳本攻擊和未經授權的用戶訪問等。所有這些入侵都有可能繞過前台安全系統並對資料庫系統攻擊。對於資料庫管理來說,保護數據不受內部和外部侵害是一項重要的工作。SQL Server 正日益廣泛的使用於各部門內外,作為資料庫系統管理員,需要深入的理解SQL Server的安全性控制策略,以實現管理安全性的目標。那麼,如何確保SQL Server資料庫的安全性呢,我們可以從以下兩方面考慮。it培訓機構
首先、採取業界已存在的且比較成熟的資料庫審計解決方案來實現
實時記錄用戶對資料庫系統的所有操作(如:插入、刪除、更新、用戶自定義操作等),並還原SQL操作命令包括源IP地址、目的IP地址、訪問時間、用戶名、資料庫操作類型、資料庫表名、欄位名等,如此,可實現對資料庫安全事件准確全程跟蹤定位。
實時檢查資料庫不安全配置、資料庫潛在弱點、資料庫用戶弱口令、資料庫軟體補丁層次、資料庫潛藏木馬等。
進行全方位的多層(應用層、中間層、資料庫層)的訪問審計,通過多層業務審計,實現數據操作原始訪問者的精確定位。
針對於資料庫的操作行為進行實時檢測,並預設置風險控制策略,結合對資料庫活動的實時監控信息,進行特徵檢測,任何嘗試性的攻擊操作都將被檢測到並進行阻斷或告警;並支持通過郵件、簡訊、SYSLOG、SNMP、屏幕等方式告警。
其次、制定相關的資料庫管理流程
不同的人員對資料庫的操作職責不一樣,所有人員對資料庫的操作均需要事前審批,對一些非常重要的操作需要二級以上審批。申請操作時,需明確在什麼人,什麼時間,因為何事,對哪個資料庫(或表),進行什麼樣的操作,可能有什麼樣的風險及採取的補救措施等。
資料庫數據的丟失以及資料庫被非法用戶的侵入使得資料庫管理員身心疲憊不堪,資料庫安全性問題對於資料庫管理員來說簡直就是噩夢。對於資料庫數據的安全問題。本文對圍繞資料庫的安全性問題提出了一些安全性策略,希望對資料庫管理員有所幫助。

⑥ 當SQLServer不能被訪問時如何設置防火牆

需要配置Windows防火牆,允許SQLServer的遠程連接。
具體操作過程為:
1、首先是要檢查SQLServer資料庫伺服器中是否允許遠程鏈接。
2、為微軟SQL伺服器(MSSQLServer)配置相應協議。
3、檢查SQL伺服器防火牆設置(快捷步驟-直接關閉防火牆(不安全))

⑦ sqlserver 安全配置在哪

sqlserver 安全配置在哪
MSSQL Server 2008的身份驗證模式有兩種:一種是Windows 身份驗證模式, 另一種是SQL Server和Windows身份驗證模式(即混合模式)。對大多數資料庫伺服器來說,有SQL Server身份驗證就足夠了,只可惜目前的伺服器身份驗證模式里沒有這個選項,所以我們只能選擇同時帶有SQL Server和Windows身份驗證的模式(混合模式)。

⑧ 如何提高SQL Server的安全性控制

SQLServer2000的安全配置在進行SQLServer2000資料庫的安全配置之前,首先你必須對操作系統進行安全配置,保證你的操作系統處於安全狀態。然後對你要使用的操作資料庫軟體(程序)進行必要的安全審核,比如對ASP、PHP等腳本,這是很多基於資料庫的WEB應用常出現的安全隱患,對於腳本主要是一個過濾問題,需要過濾一些類似,『;@/等字元,防止破壞者構造惡意的SQL語句。接著,安裝SQLServer2000後請打上補丁sp1,sp2以及最新的sp3,sp4。在做完上面三步基礎之後,我們再來討論SQLServer的安全配置。1、使用安全的密碼策略我們把密碼策略擺在所有安全配置的第一步,請注意,很多資料庫帳號的密碼過於簡單,這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa帳號的密碼寫於應用程序或者腳本中。健壯的密碼是安全的第一步!SQLServer2000安裝的時候,如果是使用混合模式,那麼就需要輸入sa的密碼,除非你確認必須使用空密碼。這比以前的版本有所改進。同時養成定期修改密碼的好習慣。資料庫管理員應該定期查看是否有不符合密碼要求的帳號。比如使用下面的SQL語句:UsemasterSelectname,、使用安全的帳號策略由於SQLServer不能更改sa用戶名稱,也不能刪除這個超級用戶,所以,我們必須對這個帳號進行最強的保護,當然,包括使用一個非常強壯的密碼,最好不要在資料庫應用中使用sa帳號,只有當沒有其它方法登錄到SQLServer實例(例如,當其它系統管理員不可用或忘記了密碼)時才使用sa。建議資料庫管理員新建立個擁有與sa一樣許可權的超級用戶來管理資料庫。安全的帳號策略還包括不要讓管理員許可權的帳號泛濫。SQLServer的認證模式有Windows身份認證和混合身份認證兩種。如果資料庫管理員不希望操作系統管理員來通過操作系統登陸來接觸資料庫的話,可以在帳號管理中把系統帳號「BUILTIN\Administrators」刪除。不過這樣做的結果是一旦sa帳號忘記密碼的話,就沒有法來恢復了。很多主機使用資料庫應用只是用來做查詢、修改等簡單功能的,請根據實際需要分配帳號,並賦予僅僅能夠滿足應用要求和需要的許可權。比如,只要查詢功能的,那麼就使用一個簡單的public帳號能夠select就可以了。3、加強資料庫日誌的記錄審核資料庫登錄事件的「失敗和成功」,在實例屬性中選擇「安全性」,將其中的審核級別選定為全部,這樣在資料庫系統和操作系統日誌裡面,就詳細記錄了所有帳號的登錄事件。請定期查看SQLServer日誌檢查是否有可疑的登錄事件發生,或者使用DOS命令。findstr/C:"登錄"d:\MicrosoftSQLServer\MSSQL\LOG\*.*4、管理擴展存儲過程對存儲過程進行大手術,並且對帳號調用擴展存儲過程的許可權要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而SQLServer的這么多系統存儲過程只是用來適應廣大用戶需求的,所以請刪除不必要的存儲過程,因為有些系統的存儲過程能很容易地被人利用起來提升許可權或進行破壞。如果你不需要擴展存儲過程xp_cmdshell請把它去掉。使用這個SQL語句:usemastersp_dropextendedproc'xp_cmdshell'xp_cmdshell是進入操作系統的最佳捷徑,是資料庫留給操作系統的一個大後門。如果你需要這個存儲過程,請用這個語句也可以恢復過來。sp_addextendedproc'xp_cmdshell','xpsql70.dll'如果你不需要請丟棄OLE自動存儲過程(會造成管理器中的某些特徵不能使用),這些過程包括如下:Sp_OACreateSp_OADestroySp_OAGetErrorInfoSp_OAGetPropertySp_OAMethodSp_OASetPropertySp_OAStop去掉不需要的注冊表訪問的存儲過程,注冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,如下:Xp_regaddmultistringXp_regdeletekeyXp_regdeletevalueXp_regenumvaluesXp_regreadXp_regremovemultistringXp_regwrite還有一些其他的擴展存儲過程,你也最好檢查檢查。在處理存儲過程的時候,請確認一下,避免造成對資料庫或應用程序的傷害。5、使用協議加密SQLServer2000使用的TabularDataStream協議來進行網路數據交換,如果不加密的話,所有的網路傳輸都是明文的,包括密碼、資料庫內容等等,這是一個很大的安全威脅。能被人在網路中截獲到他們需要的東西,包括資料庫帳號和密碼。所以,在條件容許情況下,最好使用SSL來加密協議,當然,你需要一個證書來支持。6、不要讓人隨便探測到你的TCP/IP埠默認情況下,SQLServer使用1433埠監聽,很多人都說SQLServer配置的時候要把這個埠改變,這樣別人就不能很容易地知道使用的什麼埠了。可惜,通過微軟未公開的1434埠的UDP探測可以很容易知道SQLServer使用的什麼TCP/IP埠了。不過微軟還是考慮到了這個問題,畢竟公開而且開放的埠會引起不必要的麻煩。在實例屬性中選擇TCP/IP協議的屬性。選擇隱藏SQLServer實例。如果隱藏了SQLServer實例,則將禁止對試圖枚舉網路上現有的SQLServer實例的客戶端所發出的廣播作出響應。這樣,別人就不能用1434來探測你的TCP/IP埠了(除非用PortScan)。7、修改TCP/IP使用的埠請在上一步配置的基礎上,更改原默認的1433埠。在實例屬性中選擇網路配置中的TCP/IP協議的屬性,將TCP/IP使用的默認埠變為其他埠.9、拒絕來自1434埠的探測由於1434埠探測沒有限制,能夠被別人探測到一些資料庫信息,而且還可能遭到DOS攻擊讓資料庫伺服器的CPU負荷增大,所以對Windows2000操作系統來說,在IPSec過濾拒絕掉1434埠的UDP通訊,可以盡可能地隱藏你的SQLServer。10、對網路連接進行IP限制SQLServer2000資料庫系統本身沒有提供網路連接的安全解決法,但是Windows2000提供了這樣的安全機制。使用操作系統自己的IPSec可以實現IP數據包的安全性。請對IP連接進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的埠連接,把來自網路上的安全威脅進行有效的控制。

⑨ SQLServer安全規劃全攻略的設置全局組

構造安全策略的下一個步驟是確定用戶應該屬於什麼組。通常,每一個組織或應用程序的用戶都可以按照他們對數據的特定訪問要求分成許多類別。例如,會計應用軟體的用戶一般包括:數據輸入操作員,數據輸入管理員,報表編寫員,會計師,審計員,財務經理等。每一組用戶都有不同的資料庫訪問要求。
控制數據訪問許可權最簡單的方法是,對於每一組用戶,分別地為它創建一個滿足該組用戶許可權要求的、域內全局有效的組。我們既可以為每一個應用分別創建組,也可以創建適用於整個企業的、涵蓋廣泛用戶類別的組。
然而,如果你想要能夠精確地了解組成員可以做些什麼,為每一個應用程序分別創建組是一種較好的選擇。例如,在前面的會計系統中,我們應該創建Data Entry Operators、Accounting Data Entry Managers等組。請記住,為了簡化管理,最好為組取一個能夠明確表示出作用的名字。
除了面向特定應用程序的組之外,我們還需要幾個基本組。基本組的成員負責管理伺服器。按照習慣,我們可以創建下面這些基本組:SQL Server Administrators,SQL Server Users,SQL Server Denied Users,SQL Server DB Creators,SQL Server Security Operators,SQL Server Database Security Operators,SQL Server Developers,以及 DB_Name Users(其中DB_Name是伺服器上一個資料庫的名字)。當然,如果必要的話,你還可以創建其他組。
創建了全局組之後,接下來我們可以授予它們訪問SQL Server的許可權。首先為SQL Server Users創建一個NT驗證的登錄並授予它登錄許可權,把Master資料庫設置為它的默認資料庫,但不要授予它訪問任何其他資料庫的許可權,也不要把這個登錄帳戶設置為任何伺服器角色的成員。
接著再為SQL Server Denied Users重復這個過程,但這次要拒絕登錄訪問。在SQL Server中,拒絕許可權始終優先。創建了這兩個組之後,我們就有了一種允許或拒絕用戶訪問伺服器的便捷方法。
為那些沒有直接在Sysxlogins系統表裡面登記的組授權時,我們不能使用Enterpris Managr,因為Enterprise Manager只允許我們從現有登錄名字的列表選擇,而不是域內所有組的列表。要訪問所有的組,請打開Query Analyzer,然後用系統存儲過程sp_addsrvrolemember以及sp_addrolemember進行授權。
對於操作伺服器的各個組,我們可以用sp_addsrvrolemember存儲過程把各個登錄加入到合適的伺服器角色:SQL Server Administrators成為Sysadmins角色的成員,SQL Server DB Creators成為Dbcreator角色的成員,SQL Server Security Operators成為Securityadmin角色的成員。
注意sp_addsrvrolemember存儲過程的第一個參數要求是帳戶的完整路徑。例如,BigCo域的JoeS應該是bigcojoes(如果你想用本地帳戶,則路徑應該是server_namejoes)。
要創建在所有新資料庫中都存在的用戶,你可以修改Model資料庫。為了簡化工作,SQL Server自動把所有對Model資料庫的改動復制到新的資料庫。只要正確運用Model資料庫,我們無需定製每一個新創建的資料庫。另外,我們可以用sp_addrolemember存儲過程把SQL Server Security Operators加入到db_securityadmin,把SQL Server Developers加入到db_owner角色。
注意我們仍然沒有授權任何組或帳戶訪問資料庫。事實上,我們不能通過Enterprise Manager授權資料庫訪問,因為Enterprise Manager的用戶界面只允許我們把資料庫訪問許可權授予合法的登錄帳戶。
SQL Server不要求NT帳戶在我們把它設置為資料庫角色的成員或分配對象許可權之前能夠訪問資料庫,但Enterprise Manager有這種限制。盡管如此,只要我們使用的是sp_addrolemember存儲過程而不是Enterprise Manager,就可以在不授予域內NT帳戶資料庫訪問許可權的情況下為任意NT帳戶分配許可權。
到這里為止,對Model資料庫的設置已經完成。但是,如果你的用戶群體對企業范圍內各個應用資料庫有著類似的訪問要求,你可以把下面這些操作移到Model資料庫上進行,而不是在面向特定應用的資料庫上進行。

⑩ 與SQL SERVER 安全控制相關的幾點說明

與SQL SERVER安全控制相關的幾點說明

(一)幾個基本術語

身份驗證(Authentication)是指通過提交伺服器評估的憑據以登錄到主體請求訪問的 SQL Server 的過程。身份驗證可以確定接受身份驗證的用戶或進程的標識。

用戶、賬戶、賬號、登錄名、[資料庫]用戶名
用戶是指能夠在SQL Server安全機制下,訪問資料庫對象中的數據的操作員或客戶。用戶若要訪問資料庫對象,必須獲得資料庫管理員(DBA)分配的賬號和密碼。從SQL Server管理系統的角度來看,用戶就是一組匹配的賬戶和密碼。
賬戶和賬號是一個概念的不同說法,在伺服器中的賬戶又叫登錄名(Login Name),因此訪問伺服器也稱為登錄伺服器。伺服器的登錄名可以映射到資料庫中成為[資料庫]用戶名(User Name)。一個登錄名可以映射多個資料庫用戶,而一個用戶只能映射一個登錄名。
連接或登錄SQL Server伺服器時是用的登錄名而非用戶名登錄的,程序裡面的連接字元串中的用戶名也是指登錄名。
通常用戶名與登錄名相同(不是強制相同,但為了一目瞭然通常都在創建用戶名時使用與登錄名相同的名字)。
提示:登錄名(Login Name)和用戶名(User Name)是兩個不同的概念:
登錄名:伺服器方的一個實體,登錄名只能進入SQL Server伺服器,但是不能讓用戶訪問伺服器中的資料庫資源。
用戶名:一個或多個登錄對象在資料庫中的映射,可以對用戶對象進行授權,以便為登錄對象提供對資料庫的訪問許可權。
登錄名作用於它所在的伺服器。每個登錄名的定義存放在master系統資料庫的syslogins表中。
用戶名作用於它所在的資料庫。用戶定義信息存放在每個資料庫的sysusers表中。用登錄名登錄到SQL Server後,在訪問操作各個資料庫時,SQL Server會自動查詢此資料庫中是否存在與此登錄名關聯的用戶名,若存在就使用此用戶的許可權訪問此資料庫,若不存在就是用guest用戶訪問此資料庫(guest是一個特殊的用戶名,後面會講到)。

SQL身份驗證:適合於非windows平台的用戶或Internet用戶,需要提供賬戶和密碼。
Windows身份驗證:適合於windows平台用戶,利用Windows賬戶和windows集成驗證,不需要提供密碼。
用戶想要操作資料庫的某個對象(如某張表)需要過三關:
第一關:我們需要登錄到SQL Server系統,即需要登錄賬戶;
第二關:我們需要訪問某個資料庫,即需要該資料庫的用戶賬戶;
第三關:我們需要訪問資料庫中的某個對象(如某張表),需要有該對象的許可權。

主體(principal)是可被授予對安全資源的訪問許可權的實體(例如登錄名、用戶、進程、組或角色)。主體可以是主體的集合(比如資料庫角色或Windows組)或不可分割的主體(比如本地登錄或域登錄)。每個主體都具有一個 ID (identification)和一個安全 ID (SID)。
⊙ Windows級別的主體:Windows組、Windows域登錄名、Windows本地登錄名。
⊙ SQL Server級的主體:伺服器角色、SQLServer登錄名。
⊙資料庫級的主體:資料庫角色、資料庫用戶、應用程序角色。

上下文切換 (context switch),更改檢查執行語句或執行操作的許可權時所依據的標識。

伺服器(server)
1)指安裝了SQL SERVER的計算機。2)指SQL Server實例——計算機上運行的 SQLServer的副本。3)指為用戶提供服務的計算機軟體或組件。
需要根據上下文理解。

注冊伺服器
注冊伺服器使您可以存儲伺服器連接信息(伺服器的類型、伺服器的名稱、登錄到伺服器時使用的身份驗證的類型等),以供將來連接時使用——下次連接該伺服器時,不需要重新輸入登錄信息。
SQLServer 2000在SQL Server企業管理器中注冊伺服器,才能使用 SQL Server企業管理器來管理這些伺服器。從SQLServer 2005始,在 SQL ServerManagement Studio 中注冊伺服器,才能使用 SQL Server Management Studio 來管理這些伺服器。
在 Microsoft SQL Server中,可以注冊以下類型的伺服器:SQLServer資料庫引擎、Analysis Services、Reporting Services、IntegrationServices和 SQL Server Compact 3.5SP1。

(二)SQL Server實例(SQL Server instance)
SQLServer實例(SQL Server instance),簡稱實例 (instance),是計算機上運行的SQLServer 的副本。同一台計算機上可以安裝運行的多個 SQLServer副本。每個SQL Server實例都包含資料庫引擎、Analysis Services和 ReportingServices的 SQL Server,每個SQL Server資料庫實例各有一套不為其他實例共享的系統及用戶資料庫。
資料庫引擎是用於存儲、處理和保護數據的核心服務。利用資料庫引擎可控制訪問許可權並快速處理事務。
實例又分為「默認實例」(default instance)和「命名實例」(namedinstance),如果在一台計算機上安裝第一個SQLSERVER,命名設置保持默認的話,那這個實例就是默認實例。默認實例與安裝計算機具有相同名稱。命名實例指安裝SQL Server時給定了名稱,可以安裝多個命名實例,給定名稱是為了與同一台計算機上的其他命名實例和默認實例區分開。

SQLServer應用程序可以通過僅指定伺服器名稱而連接到 SQLServer的默認實例。SQL Server應用程序在連接到伺服器上的某個命名實例時必須既指定伺服器名稱又指定實例名稱,計算機名稱\實例名稱。
一台計算機上最多隻有一個默認實例,也可以沒有默認實例,默認實例名與計算機名相同。如果要訪問本機上的默認SQL伺服器實例,使用計算機名、(local)、localhost、127.0.0.1、.、本機IP地址,都可以達到相同的目的。但如果要訪問非本機的SQL伺服器,那就必須使用計算機名稱\實例名稱。

默認實例和命名實例的區別:
1、服務中服務名稱的區別:
(1)默認實例:MSSQLSERVER。
(2)有名命名實例:實列名為benet,在服務中的名稱是MSSQL$BENET。
註:如果你有多個實例的時候會在服務中出現多個服務名稱。
2、連接到查詢分析器或探查器的時候區別:
(1)默認實例可以使用:「.」(點)、「(local)」、「計算機名稱」。
(2)實例名稱:計算機名pcname,實例名benet,連接時使用的名稱是pcname\benet。

(三)安全對象和許可權

安全對象(Securable),可以通過許可權得到保護的實體。是SQLServer資料庫引擎授權系統控制對其進行訪問的資源。如表、視圖、觸發器等。
SQLServer中將安全對象分為三個層次,分別為:
⊙伺服器層級,包含的安全對象:端點、登錄、伺服器角色、資料庫。
⊙資料庫層級,包含的安全對象:用戶、資料庫角色、應用程序角色、程序集、消息類型、路由、服務、遠程服務綁定、全文目錄、證書、非對稱密鑰、對稱密鑰、約定、架構。
⊙構架(SCHEMA)層級,包含的安全對象:類型、XML架構集合、對象(函數、過程、同義詞、表、視圖)
這三個層級是從上到下包含的,級別從高到低。

說明:端點(endpoint)為伺服器級安全對象。Microsoft SQL Server 2005 中的連接管理基於「端點」。一個端點就是一個SQL Server對象,它能夠使 SQL Server在網路中通信。對於資料庫鏡像,伺服器實例需要有自己專用的「資料庫鏡像端點」。此端點用途特殊,專門用於接收來自其他伺服器實例的資料庫鏡像連接。

許可權 (permission),與對象關聯的規則,用來規定哪些用戶可以獲得該對象的訪問許可權以及方式如何。對安全對象的訪問通過授予或拒絕許可權進行控制。
許可權可以明確用戶能夠使用哪些資料庫對象,並對它們進行何種操作。用戶在資料庫內的許可權取決於用戶賬號的許可權和該用戶所屬的角色的許可權。
提示:在設置許可權時,尤其要注意許可權在安全對象上的繼承關系。對於高級別安全對象上設置的許可權,會被自動繼承到低級別安全對象上。
理解許可權的繼承和許可權的覆蓋會在設置許可權時減少很多問題,最佳方法是統籌規劃,上機驗證。

(四)架構(schema)
架構是指包含表、視圖、過程等的容器。它位於資料庫內部,而資料庫位於伺服器內部。這些實體就像嵌套框放置在一起。伺服器是最外面的框,而架構是最裡面的框。架構包含表、視圖、過程、函數、同義詞、類型、隊列、XML架構集合等安全對象。

注意:
在 SQL Server 2000和早期版本中,資料庫可以包含一個名為「架構」的實體, SQL Server 2000包含 CREATE SCHEMA語句,但此實體實際上是所有者(創建對象時的用戶)。在 SQL Server 2005 開始,架構既是一個容器,又是一個命名空間。任何用戶都可以擁有架構,並且架構所有權可以轉移。從 SQL Server 2005開始,每個用戶都擁有一個默認架構。可以使用 CREATE USER或 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將使用 dbo作為默認架構。

在SQL Server 2000中,DataBaseName.dbo.TableName解釋為:資料庫名.所有者.表名。
從 SQL Server 2005開始,DataBaseName.dbo.TableName解釋為:資料庫名.架構名.表名。

在SQL Server 2000中,資料庫對象全稱是server_name.[database_name].[owner_name].object_name
從SQL Server 2005始,資料庫對象全稱是server_name.[database_name].[schema_name].object_name
在SQL SERVER2000或以前版本中創建一個對象,對象必須要有一個所有者(owner)。對象是如何屬於某個所有者的呢?這依賴於創建對象時的用戶。您不能取消對象所有者(object owner)的特權(privileges)。對象所有者可以執行任何與對象有關的操作(例如 INSERT、UPDATE、DELETE、SELECT或 EXECUTE),也可以管理對象的許可權。
從2005/2008後,一個我們必須重新認識的情況是對象不再有所有者(owner)。架構包含對象,架構有所有者。

在2005前(如SQL Server 2000中),沒有架構的概念,只有用戶的概念,那時候DBO是默認用戶。到了2005,有了架構概念,但是為了向後兼容,保留了DBO,並且把DBO作為默認架構,在不指定架構的情況下,默認為dbo,「默認架構」的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2005 中,每個用戶都有一個默認架構,用於指定伺服器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER和 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將把 DBO作為其默認架構。

(五)dbo
dbo既是默認架構,也是默認用戶。在SQL Server 2000中,dbo作為默認用戶。在SQL Server2005中,dbo既作為默認用戶,也作為默認架構(如圖)。

dbo作為默認用戶,dbo (DataBase Owner,資料庫的所有者,擁有資料庫中的所有對象),每個資料庫都有dbo, sysadmin伺服器角色的成員自動映射成dbo,無法刪除 dbo用戶,且此用戶始終出現在每個資料庫中。通常,登錄名sa映射為庫中的用戶dbo。另外,固定伺服器角色 sysadmin的任何成員都映射到每個資料庫內稱為 dbo的一個特殊用戶上。由固定伺服器角色sysadmin的任何成員創建的任何對象都自動屬於 dbo。由固定伺服器角色 sysadmin的任何成員或 dbo用戶創建的任何對象都自動屬於dbo,由任何其他用戶(包括 db_owner固定資料庫角色成員)創建的對象,屬於創建該對象的用戶,而不是 dbo,用創建該對象的用戶名限定。例如:
如果用戶 Andrew是固定伺服器角色sysadmin的成員,並創建表 T1,則表 T1屬於 dbo,並以 dbo.T1而不是 Andrew.T1進行限定。相反,如果 Andrew不是固定伺服器角色sysadmin的成員,而只是固定資料庫角色 db_owner的成員,並創建表 T1,則 T1屬於 Andrew,並限定為Andrew.T1。該表屬於 Andrew,因為該成員沒有將表限定為dbo.T1。

dbo作為默認架構,在不指定架構的情況下,默認為dbo,「默認架構」的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2005 中,每個用戶都有一個默認架構,用於指定伺服器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER和 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將把 DBO作為其默認架構。

(六)Guest用戶
guest用戶不需要映射到登錄名。這種用戶賬號是供資料庫中沒有明確授予許可權給已映射至認證用戶使用的。guest供那些已經成功登錄到SQL SERVER實例,但是卻沒有通過用戶訪問資料庫的許可權的登錄者使用的。

SQLSERVER 2000中guest用戶可以刪除;而2005/2008中是不能刪除的,卻可以取消CONNECT許可權,而且為安全起見,所有用戶定義的資料庫中預設情況下guest用戶的許可權都是被取消了的,可在除master和tempdb之外的任何資料庫中禁用Guest用戶。
在SQL SERVER 2000中,新建的資料庫中沒有Guest用戶,但可以添加它,也可刪除它,添加與刪除方法與普通資料庫相同。
在SQL Server 2005或以上版本中GUEST已經默認存在於每個資料庫中,但默認情況下,會在新資料庫中禁用GUEST用戶(在「對象資源管理器→安全性→登錄」節點中圖標上有禁用標識),我們可以通過以下語句啟用GUEST用戶:GRANT CONNECT TO GUEST 。當你決定不再想讓該資料庫被非資料庫授權的用戶以GUEST身份進行訪問時,可以再次將GUEST帳號禁用。值得一提的是,GUEST用戶在資料庫中不能被刪除,我們只能通過以下語句禁用GUEST用戶:REVOKE CONNECT FROMGUEST 。

在SQL SERVER 2000中,要允許guest用戶帳戶訪問資料庫,可以像添加其它資料庫用戶那樣添加它,如:
USE<Database Name>
GO
EXECsp_grantdbaccess 'guest'
GO

在SQL SERVER 2005中,允許guest用戶帳戶
USE<Database Name>
GO
GRANT CONNECT TO GUEST
GO

需要提醒的是,對於是否添加Guest用戶要謹慎權衡利弊。

--SQLServer 2000刪除guest用戶賬號
USE<Database Name>
GO
EXECsp_revokedbaccess 'guest'
GO

-- SQLServer 2005禁用guest用戶賬號
USE<Database Name>
GO
REVOKECONNECT FROM GUEST
GO

(七)sa登錄名
SQLServer的 sa登錄名是伺服器級的主體。默認情況下,該登錄名是在安裝實例時創建的。在 SQL Server 2005和 SQL Server2008中,sa的默認資料庫為 master。這是對早期版本的 SQLServer的行為的更改。

sa(system administrator系統管理員)是為向後兼容而提供的特殊登錄。sysadmin是一種角色。該角色能夠執行SQLServer上的任何操作。本質上,任何具有這種角色成員身份的人都是那個伺服器上的sa。這種伺服器角色的創建為微軟提供了某一天去除sa登錄的能力——實際上,聯機叢書把sa稱作本質上為遺留物的東西。

與以前版本不同,SQL Server 2008,即使是用混合模式安裝,sa也默認禁用。
注意,sa是一個默認的SQL Server登錄名,擁有操作SQL Server系統的所有許可權,該登錄名不能被刪除。當採用混合模式安裝Microsoft SQL Server系統之後,應該為sa指定一個密碼,應為 sa登錄分配一個強密碼(strongpassword)。

sa登錄名會映射到 sysadmin固定伺服器角色,它對整個伺服器有不能撤銷的管理憑據。如果攻擊者以系統管理員的身份獲取了訪問許可權,則可能造成的危害是無法預計的。

(八)其它幾個默認配置的的登錄(Logins)和用戶(Users)
默認配置的的登錄和用戶除了dbo用戶、Guest用戶、sa登錄,還有如下幾個:

Administrators組是一個特殊的登錄。administrator用戶默認administrators組的成員。
Administrators組實際名稱為BUILTIN\Administrators。早期版本,這個組的所有成員均為 sysadmin 角色的成員(這意味著Administrators組中的成員具有最高許可權),但可以從該角色中移除這些成員。與以前版本不同,SQL Server 2008默認情況下,本地 Windows組 BUILTIN\Administrators不再包含在新的 SQL Server 2008安裝上的 SQL Server的 sysadmin固定伺服器角色中。

提示:每個版本的 SQL Server都具有不同的安全功能,默認配置也不盡相同,後出的版本更有利於安全,但安全性和使用方便這兩種需求可能有矛盾的一面,最佳方法是上機了解驗證。

NETWORKSERVICE和SYSTEM登錄賬戶
NETWORKSERVICE和SYSTEM登錄賬戶,實際名稱為NT AUTHORITY\NETWORK SERVICE和NT AUTHORITY\SYSTEM,是否存在這些,依賴於伺服器的配置。如果配置了報表伺服器,將出現NETWORK SERVICE登錄賬戶。

INFORMATION_SCHEMA和sys用戶
INFORMATION_SCHEMA和sys又是SQL Server 預定義的架構(內置架構)名稱,它們與INFORMATION_SCHEMA和sys用戶具有相同的名稱。不能刪除,主要用於向後兼容性。可以使用INFORMATION_SCHEMA用戶和sys用戶訪問INFORMATION_SCHEMA和sys架構的系統視圖,獲取有關資料庫元數據信息。

(九)SQL Server中的角色
角色 (role),是SQL Server用來管理伺服器和資料庫許可權的,是安全帳戶的集合,在管理許可權時可以視為一個單元——作為分配許可權的單位。
SQLServer中的角色分為伺服器級別和資料庫級別角色。

◇伺服器級別角色
伺服器級別角色用於幫助管理伺服器上的許可權。伺服器角色的許可權作用域為伺服器范圍。可以將登錄名(Login Name)添加到伺服器角色。

符合許可權要求的用戶,可以將伺服器級主體(SQL Server登錄名、Windows帳戶和 Windows組)添加到伺服器級角色。固定伺服器角色的每個成員都可以將其他登錄名添加到該同一角色。

固定伺服器角色簡介:
1)sysadmin:系統管理員,角色成員可對SQLServer伺服器進行所有的管理工作,為最高管理角色。這個角色一般適合於資料庫管理員(DBA)。
2)securityadmin:安全管理員,角色成員可以管理登錄名及其屬性。可以授予、拒絕、撤銷伺服器級和資料庫級的許可權。另外還可以重置SQL Server登錄名的密碼。
3)serveradmin:伺服器管理員,角色成員具有對伺服器進行設置及關閉伺服器的許可權。
4)setupadmin:設置管理員,角色成員可以添加和刪除鏈接伺服器,並執行某些系統存儲過程。
5)processadmin:進程管理員,角色成員可以終止SQLServer實例中運行的進程。
6)diskadmin:用於管理磁碟文件。
7)dbcreator:資料庫創建者,角色成員可以創建、更改、刪除或還原任何資料庫。
8)bulkadmin:可執行BULK INSERT語句,但是這些成員對要插入數據的表必須有INSERT許可權。BULK INSERT語句的功能是以用戶指定的格式復制一個數據文件至資料庫表或視圖。
9)在sql server 2005 sp2(補丁)及以後版本,伺服器角色中還可以看到一個public角色。每個 SQL Server登錄名均屬於 public伺服器角色。 如果未向某個伺服器主體授予或拒絕對某個安全對象的特定許可權,該用戶將繼承授予該對象的 public角色的許可權。public伺服器角色默認擁有 VIEW ANY DATABASE(查看任何資料庫)許可權。[VIEW ANY DATABASE許可權控制是否顯示sys.databases和 sys.sysdatabases視圖以及 sp_helpdb系統存儲過程中的元數據(metadata)。]

從 SQL Server 2012開始,您可以創建用戶定義的伺服器角色,並將伺服器級許可權添加到用戶定義的伺服器角色。
每個版本的 SQL Server都具有不同的安全功能,版本越高,功能越強。

可以利用系統函數IS_SRVROLEMEMBER指示當前用戶的 SQLServer登錄名是否是固定伺服器角色的成員。
可以利用系統存儲過程sp_helpsrvrolemember返回有關 SQL Server 固定伺服器角色成員的信息。
--查詢 sysadmin固定伺服器角色的成員。
execsp_helpsrvrolemember 'sysadmin'

◇資料庫級別的角色
資料庫級別角色用於幫助管理資料庫中的許可權。資料庫級角色的許可權作用域為資料庫范圍。可以將[資料庫]用戶名(User Name)添加到資料庫角色。
SQLServer中有兩種類型的資料庫級角色:資料庫中預定義的「固定資料庫角色」和您可以創建的「靈活資料庫角色」(自定義資料庫角色)。

固定資料庫角色是在資料庫級別定義的,並且存在於每個資料庫中。 db_owner和db_securityadmin資料庫角色的成員可以管理固定資料庫角色成員身份。但是,只有db_owner資料庫角色的成員能夠向db_owner固定資料庫角色中添加成員。 msdb資料庫中還有一些特殊用途的固定資料庫角色。

符合許可權要求的用戶,可以向資料庫級角色中添加資料庫帳戶和其他 SQL Server角色。固定資料庫角色的每個成員都可向同一個角色添加其他登錄名。

固定資料庫角色簡介:
1)db_owner:資料庫所有者,這個資料庫角色的成員可執行資料庫的所有管理操作。
2)db_accessadmin:資料庫訪問許可權管理者,角色成員具有添加、刪除資料庫使用者、資料庫角色和組的許可權。
3)db_securityadmin:資料庫安全管理員,角色成員可管理資料庫中的許可權,如設置資料庫表的增加、刪除、修改和查詢等存取許可權。
4)db_ddladmin:資料庫DDL管理員,角色成員可增加、修改或刪除資料庫中的對象。
5)db_backupoperator:資料庫備份操作員,角色成員具有執行資料庫備份的許可權。
6)db_datareader:資料庫數據讀取者,角色成員可以從所有用戶表中讀取數據。
7)db_datawriter:資料庫數據寫入者,角色成員具有對所有用戶表進行增加、刪除、修改的許可權。
8)db_denydatareader:資料庫拒絕數據讀取者,角色成員不能讀取資料庫中任何錶的內容。
9)db_denydatawriter:資料庫拒絕數據寫入者,角色成員不能對任何錶進行增加、刪修、修改操作。
10)public:是一個特殊的資料庫角色,每個資料庫用戶都是public角色的成員,因此不能將用戶、組或角色指派為public角色的成員,也不能刪除public角色的成員。public資料庫角色默認的許可權很少[使用某些系統過程查看並顯示master資料庫中的信息;執行一些不需要一些許可權的語句(例如PRINT)]。

可以利用系統函數IS_MEMBER檢查當前用戶是否是資料庫角色或Windows域組的成員。
可以利用系統存儲過程sp_helprolemember顯示資料庫角色的成員。
可以利用系統存儲過程sp_helpuser報告有關當前資料庫中資料庫級主體的信息。
可以利用系統存儲過程sp_helprotect報告當前資料庫中某對象的用戶許可權或語句許可權的信息。

--查詢用戶擁有的資料庫角色
useyourdb
execsp_helpuser 'UserName'
go
--查詢用戶被賦予的許可權
useyourdb
execsp_helprotect @username = 'user name'

熱點內容
linux查看文件數 發布:2024-04-18 19:19:17 瀏覽:337
linux下qt編譯兩個小時 發布:2024-04-18 18:56:24 瀏覽:545
python27安裝庫 發布:2024-04-18 18:48:51 瀏覽:23
hashjava 發布:2024-04-18 18:40:48 瀏覽:173
c語言可以在 發布:2024-04-18 18:34:09 瀏覽:390
汽車如何配置導航 發布:2024-04-18 18:23:13 瀏覽:139
北大訪問學者 發布:2024-04-18 18:23:12 瀏覽:858
php寫入一行 發布:2024-04-18 17:57:01 瀏覽:860
控制網加密 發布:2024-04-18 17:36:49 瀏覽:124
android拍照源碼 發布:2024-04-18 17:18:49 瀏覽:412