時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
在我們關(guān)于SQL服務(wù)器安全系列的這文章里,我們的目標是向你提供安全安裝SQL服務(wù)器所需要的工具和信心,這樣的話,你有價值的數(shù)據(jù)就會受到保護,避免無意或者有意的破壞或者竊取。在本文里,我們會深入一些基礎(chǔ)的概念,在保護數(shù)據(jù)庫安全的時候,你需要利用下面這些概念:登錄、用戶、角色,以及組。確定誰在請求訪問數(shù)據(jù)或者SQL服務(wù)器里其他信息等看上去很簡單的過程,都需要用到所有這些概念。
登錄
登錄規(guī)定了哪些用戶能夠連接到安裝好的SQL服務(wù)器上——這不是某個特定的數(shù)據(jù)庫,而是而是整個服務(wù)器。登錄有兩種不同的形式:
Windows集成的登錄,它會授權(quán)特定的Windows用戶或者組使用它們的Windows信任書進行連接。
SQL服務(wù)器登錄,它會授權(quán)用戶使用由SQL服務(wù)器保存的用戶名和密碼進行連接。
你應(yīng)該使用哪一種?
Windows集成登錄肯定要比SQL服務(wù)器登錄更加高效和更方便,因為用戶只需要登錄一次——在網(wǎng)絡(luò)這一層。單獨登錄到服務(wù)器是沒有必要的,因為SQL服務(wù)器會自動地處理(在后臺)Windows登錄,從而允許到服務(wù)器的訪問。只有在服務(wù)器運行在Windows NT或者2000上的時候,對Windows登錄的支持才有效;安裝在Windows 98上的服務(wù)器必須要依賴SQL服務(wù)器登錄。如果你正在運行Windows 2000,而且最終需要支持原有的應(yīng)用程序,那么就要記住,SQL服務(wù)器登錄只有在混合模式下才可用。
設(shè)計上的考慮
在設(shè)計自己數(shù)據(jù)庫的時候,你需要考慮登錄的方法——而且要在你真正開始保證最終產(chǎn)品的安全之前。你應(yīng)該知道服務(wù)器使用的是哪種授權(quán)方式。那些還在Window 98上使用服務(wù)器的人可能現(xiàn)在就要考慮升級,如果安全是一個很重要的問題的話;那樣的話,他們就可以使用Windows集成的安全(策略)。
另外一個設(shè)計問題是知道誰擁有訪問權(quán),他們能夠訪問什么數(shù)據(jù),以及他們是否能夠?qū)ο蠛蛿?shù)據(jù)進行更改。你不用真的列出其名字;你只需要利用工具有效地幫助用戶就行了。最后,你應(yīng)該使用系統(tǒng)的存儲過程來管理安全。SQL服務(wù)器提供了兩種存儲過程,用于登錄的管理:
◆sp_addlogi——在使用SQL服務(wù)器驗證保護你服務(wù)器安全的時候要使用這個存儲過程。具體的說,這個存儲過程會創(chuàng)建一個新的SQL服務(wù)器登錄,它允許用戶使用SQL服務(wù)器驗證連接到SQL服務(wù)器的實例上。
◆sp_grantlogin——這個存儲過程允許Windows 2000的用戶或者組帳號使用Windows驗證連接到微軟的SQL服務(wù)器上。
只有sysadmin或者securityadmin固有服務(wù)器角色的成員能夠執(zhí)行這兩個存儲過程。
什么是系統(tǒng)存儲過程?
系統(tǒng)存儲過程是一個內(nèi)置的存儲過程,它能夠幫助你管理服務(wù)器。你可以在MSDN庫里找到一長串的系統(tǒng)存儲過程。SQL服務(wù)器文獻在線囊括了每個系統(tǒng)存儲過程的所有句法細節(jié)和使用示例。
用戶
登錄屬于服務(wù)器,而用戶則屬于數(shù)據(jù)庫。用戶ID會識別特定數(shù)據(jù)庫的特定用戶。而且,用戶對于數(shù)據(jù)庫來說是專門的——也就是說,Northwind數(shù)據(jù)庫里Fred這個用戶同公共數(shù)據(jù)庫里Fred那個用戶是不同的,盡管這兩個Fred可能和同一個登錄相關(guān)聯(lián)。
當你在數(shù)據(jù)庫里創(chuàng)建一個用戶的時候,你就將一個特定的登錄同這個用戶關(guān)聯(lián)起來了。對于這個數(shù)據(jù)庫而言,登錄具有這個用戶的權(quán)限。盡管登錄所用的ID不需要和用戶ID相同,但是在通常情況下,如果你保持這樣的慣例,那么事情就會更少讓人糊涂。如果登錄在數(shù)據(jù)庫里沒有相關(guān)聯(lián)的用戶,那么用戶能夠通過特殊的來賓用戶帳號連接到該數(shù)據(jù)庫。
特殊用戶
所有的用戶都不是數(shù)據(jù)庫里的常住人口,而且不能保證用戶帳號就是他們自己的。在希望用戶臨時訪問數(shù)據(jù)庫的時候,你可以使用來賓用戶帳號,它可以不使用常規(guī)的用戶帳號而登錄訪問服務(wù)器。來賓用戶的登錄必須擁有訪問數(shù)據(jù)庫的權(quán)限,而且數(shù)據(jù)庫必須設(shè)有來賓用戶帳號。一旦進了數(shù)據(jù)庫,來賓用戶會被限制到只能進行來賓用戶帳號所指定的活動。但是,來賓用戶帳號在一個剛剛創(chuàng)建的數(shù)據(jù)庫里不是缺省就存在的;(數(shù)據(jù)庫的)所有者或者系統(tǒng)管理員必須創(chuàng)建這樣一個帳號。
除了來賓用戶,你還需要考慮數(shù)據(jù)庫的所有者(DBO)。他是創(chuàng)建數(shù)據(jù)庫的用戶。數(shù)據(jù)庫的所有者或者系統(tǒng)管理員必須賦予(其他人)權(quán)限,才能讓他們在數(shù)據(jù)庫創(chuàng)建其它的對象。
為了向數(shù)據(jù)庫里添加數(shù)據(jù),你要運行sp_grantdbaccess。這個存儲過程會在數(shù)據(jù)庫里創(chuàng)建一個和指定登錄相對應(yīng)的用戶。只有sysadmin固有服務(wù)器角色、db_accessadmin角色,以及db_owner固有服務(wù)器角色的成員才能夠執(zhí)行sp_grantdbaccess。
角色
角色讓你將用戶集中到一起,以利于更簡單的管理。就像用戶一樣,角色也是數(shù)據(jù)庫的對象。例如,你可以在自己的采購數(shù)據(jù)庫里定義一個"銷售"角色,并讓所有的產(chǎn)品所有銷售人員都成為這個角色的成員。如果你隨后賦予這個"銷售"角色許可,那么這些許可會自動地應(yīng)用于該角色的所有成員上。此外,一個用戶可以是多個角色的成員。
有三種類型的角色:
◆公共——這個角色會為所有的用戶設(shè)置缺省的基本許可,所有的用戶都會被分配公共角色。
◆服務(wù)器——服務(wù)器角色適用于整個服務(wù)器。
◆數(shù)據(jù)庫——這些角色適用于專門的數(shù)據(jù)庫。
服務(wù)器和數(shù)據(jù)庫角色都有預(yù)先定義的類別,我們把它們列在表格A里。
?表格 A
角色的分配
有一些系統(tǒng)存儲過程是用于向數(shù)據(jù)庫添加角色和成員的。使用sp_addrole可以在數(shù)據(jù)庫里創(chuàng)建一個新的角色。然后,運行sp_addrolemember向角色添加用戶帳號。你不能創(chuàng)建固有的服務(wù)器角色;你只能夠在服務(wù)器這一層添加角色。只有sysadmin固有服務(wù)器角色、db_securityadmin角色,以及db_owner固有數(shù)據(jù)庫角色的成員才能夠執(zhí)行sp_addrole或者sp_addrolemember。
組
組向你提供了批量管理安全的第二種方式,而不需要一個用戶一個用戶地來管理。在SQL服務(wù)器里并不存在組。它們由操作系統(tǒng)來維護。組的使用可以讓你把SQL服務(wù)器的安全策略和整個企業(yè)的安全策略綁在一起。
例如,如果你有一個叫做"銷售"的Windows 2000組,它包含著你所有的銷售人員,你可以在SQL服務(wù)器里專門為這個組創(chuàng)建一個Windows登錄。這個"銷售"組的任何成員都會作為指定的登錄連接到SQL數(shù)據(jù)庫上(除非他們有自己單獨的優(yōu)先登錄)。你可以進一步將這個登錄同任何數(shù)據(jù)庫里的用戶相關(guān)聯(lián),然后賦予該用戶許可。組的任何成員都會在他們使用數(shù)據(jù)庫的時候獲得指定的許可。
管理策略
用戶管理的主要目標是雙重的。首先,你希望確保只有那些能夠獲得數(shù)據(jù)的用戶是真正需要使用數(shù)據(jù)的人。其次,你應(yīng)該盡力將用于用戶管理的精力降到最小。繁雜的策略要比直接的策略更少被人采用,否則就會導(dǎo)致安全的極大破壞。下面是你在用戶管理中可以采納的一些簡單指導(dǎo)方針:
在可能的情況下,盡量使用Windows集成安全。這會降低密碼維護和用戶創(chuàng)建所要的花費精力。它還會讓SQL服務(wù)器將登錄信息傳遞給已連接的服務(wù)器,這在分布式數(shù)據(jù)庫里很重要。
在可能的情況下,盡量在聚合這一層管理安全。不應(yīng)該為每個必須訪問你數(shù)據(jù)的單個人創(chuàng)建用戶,而應(yīng)該創(chuàng)建像"銷售"或者DataEntryUsers這樣的角色。然后你就可以通過添加和刪除角色的用戶來控制訪問,同時向角色分配許可。另外,你也可以在Windows層管理組成員,并向代表整個Windows組的用戶分配許可。
來賓用戶很危險,因為它會給你服務(wù)器上每個的登錄都賦予訪問數(shù)據(jù)庫的權(quán)限。不要在數(shù)據(jù)庫里創(chuàng)建來賓用戶,除非它要對所有的人都開放。
基本內(nèi)容
本篇文章里所討論的概念都是實現(xiàn)你SQL服務(wù)器安全的基本要素,它們一點也不簡單。理解每個登錄的工作方式離你確定自己整個(安全)策略還有很長的路要走。
關(guān)鍵詞標簽:SQL服務(wù)器
相關(guān)閱讀
熱門文章 淺談JSP JDBC來連接SQL Server 2005的方法 SqlServer2005對現(xiàn)有數(shù)據(jù)進行分區(qū)具體步驟 sql server系統(tǒng)表損壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系
人氣排行 配置和注冊O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠程備份(還原)SQL2000數(shù)據(jù)庫 SQL2000數(shù)據(jù)庫遠程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級到2000的正確操作步驟 sql server系統(tǒng)表損壞的解決方法 淺談JSP JDBC來連接SQL Server 2005的方法