久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么配置一個(gè)安全穩(wěn)定的SQL SERVER的數(shù)據(jù)庫

149次閱讀
沒有評論

共計(jì) 6116 個(gè)字符,預(yù)計(jì)需要花費(fèi) 16 分鐘才能閱讀完成。

本篇內(nèi)容介紹了“怎么配置一個(gè)安全穩(wěn)定的 SQL SERVER 的數(shù)據(jù)庫”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

一、首先你要確認(rèn)你的鑒別模式:
WIN NT 鑒別模式呢還是混合模式,其中混合模式包括 WIN NT 鑒別模式和 SQL SERVER 鑒別模式
實(shí)施鑒別模式的步驟
1、核實(shí)采用了可信連接
2、設(shè)置鑒別模式
3、關(guān)閉和重啟 MSSQLServer 服務(wù)程序
4、創(chuàng)建 WIN NT 分組和用戶
5、授權(quán) WIN NT 分組和用戶可存取 SQL Server
6、為用非可信任連接的用戶創(chuàng)建 SQL Server 登錄帳號

二、為用戶和角色分配登錄帳號
三、給角色分配登錄權(quán)
四、為用戶和角色分配許可權(quán)限

在改進(jìn) SQL Server 7.0 系列所實(shí)現(xiàn)的安全機(jī)制的過程中,Microsoft 建立了一種既靈活又強(qiáng)大的安全管理
機(jī)制,它能夠?qū)τ脩粼L問 SQL Server 服務(wù)器系統(tǒng)和數(shù)據(jù)庫的安全進(jìn)行全面地管理。按照本文介紹的步驟,你
可以為 SQL Server 7.0(或 2000)構(gòu)造出一個(gè)靈活的、可管理的安全策略,而且它的安全性經(jīng)得起考驗(yàn)。

一、驗(yàn)證方法選擇
本文對驗(yàn)證(authentication)和授權(quán)(authorization)這兩個(gè)概念作不同的解釋。驗(yàn)證是指檢驗(yàn)用戶
的身份標(biāo)識;授權(quán)是指允許用戶做些什么。在本文的討論中,驗(yàn)證過程在用戶登錄 SQL Server 的時(shí)候出現(xiàn),
授權(quán)過程在用戶試圖訪問數(shù)據(jù)或執(zhí)行命令的時(shí)候出現(xiàn)。
構(gòu)造安全策略的第一個(gè)步驟是確定 SQL Server 用哪種方式驗(yàn)證用戶。SQL Server 的驗(yàn)證是把一組帳戶、密
碼與 Master 數(shù)據(jù)庫 Sysxlogins 表中的一個(gè)清單進(jìn)行匹配。Windows NT/2000 的驗(yàn)證是請求域控制器檢查用戶身
份的合法性。一般地,如果服務(wù)器可以訪問域控制器,我們應(yīng)該使用 Windows NT/2000 驗(yàn)證。域控制器可以是
Win2K 服務(wù)器,也可以是 NT 服務(wù)器。無論在哪種情況下,SQL Server 都接收到一個(gè)訪問標(biāo)記(Access Token)。
訪問標(biāo)記是在驗(yàn)證過程中構(gòu)造出來的一個(gè)特殊列表,其中包含了用戶的 SID(安全標(biāo)識號)以及一系列用戶所
在組的 SID。正如本文后面所介紹的,SQL Server 以這些 SID 為基礎(chǔ)授予訪問權(quán)限。注意,操作系統(tǒng)如何構(gòu)造訪
問標(biāo)記并不重要,SQL Server 只使用訪問標(biāo)記中的 SID。也就是說,不論你使用 SQL Server 2000、SQL Server
7.0、Win2K 還是 NT 進(jìn)行驗(yàn)證都無關(guān)緊要,結(jié)果都一樣。
如果使用 SQL Server 驗(yàn)證的登錄,它最大的好處是很容易通過 Enterprise Manager 實(shí)現(xiàn),最大的缺點(diǎn)在于
SQL Server 驗(yàn)證的登錄只對特定的服務(wù)器有效,也就是說,在一個(gè)多服務(wù)器的環(huán)境中管理比較困難。使用 SQL
Server 進(jìn)行驗(yàn)證的第二個(gè)重要的缺點(diǎn)是,對于每一個(gè)數(shù)據(jù)庫,我們必須分別地為它管理權(quán)限。如果某個(gè)用戶
對兩個(gè)數(shù)據(jù)庫有相同的權(quán)限要求,我們必須手工設(shè)置兩個(gè)數(shù)據(jù)庫的權(quán)限,或者編寫腳本設(shè)置權(quán)限。如果用戶數(shù)
量較少,比如 25 個(gè)以下,而且這些用戶的權(quán)限變化不是很頻繁,SQL Server 驗(yàn)證的登錄或許適用。但是,在幾
乎所有的其他情況下(有一些例外情況,例如直接管理安全問題的應(yīng)用),這種登錄方式的管理負(fù)擔(dān)將超過它
的優(yōu)點(diǎn)。

二、Web 環(huán)境中的驗(yàn)證
即使最好的安全策略也常常在一種情形前屈服,這種情形就是在 Web 應(yīng)用中使用 SQL Server 的數(shù)據(jù)。在這
種情形下,進(jìn)行驗(yàn)證的典型方法是把一組 SQL Server 登錄名稱和密碼嵌入到 Web 服務(wù)器上運(yùn)行的程序,比如
ASP 頁面或者 CGI 腳本;然后,由 Web 服務(wù)器負(fù)責(zé)驗(yàn)證用戶,應(yīng)用程序則使用它自己的登錄帳戶(或者是系統(tǒng)管
理員 sa 帳戶,或者為了方便起見,使用 Sysadmin 服務(wù)器角色中的登錄帳戶)為用戶訪問數(shù)據(jù)。
這種安排有幾個(gè)缺點(diǎn),其中最重要的包括:它不具備對用戶在服務(wù)器上的活動進(jìn)行審核的能力,完全依
賴于 Web 應(yīng)用程序?qū)崿F(xiàn)用戶驗(yàn)證,當(dāng) SQL Server 需要限定用戶權(quán)限時(shí)不同的用戶之間不易區(qū)別。如果你使用的
是 IIS 5.0 或者 IIS 4.0,你可以用四種方法驗(yàn)證用戶。第一種方法是為每一個(gè)網(wǎng)站和每一個(gè)虛擬目錄創(chuàng)建一
個(gè)匿名用戶的 NT 帳戶。此后,所有應(yīng)用程序登錄 SQL Server 時(shí)都使用該安全環(huán)境。我們可以通過授予 NT 匿名
帳戶合適的權(quán)限,改進(jìn)審核和驗(yàn)證功能。
第二種方法是讓所有網(wǎng)站使用 Basic 驗(yàn)證。此時(shí),只有當(dāng)用戶在對話框中輸入了合法的帳戶和密碼,IIS
才會允許他們訪問頁面。IIS 依靠一個(gè) NT 安全數(shù)據(jù)庫實(shí)現(xiàn)登錄身份驗(yàn)證,NT 安全數(shù)據(jù)庫既可以在本地服務(wù)器
上,也可以在域控制器上。當(dāng)用戶運(yùn)行一個(gè)訪問 SQL Server 數(shù)據(jù)庫的程序或者腳本時(shí),IIS 把用戶為了瀏覽
頁面而提供的身份信息發(fā)送給服務(wù)器。如果你使用這種方法,應(yīng)該記住:在通常情況下,瀏覽器與服務(wù)器之
間的密碼傳送一般是不加密的,對于那些使用 Basic 驗(yàn)證而安全又很重要的網(wǎng)站,你必須實(shí)現(xiàn) SSL(Secure
Sockets Layer,安全套接字層)。
在客戶端只使用 IE 5.0、IE 4.0、IE 3.0 瀏覽器的情況下,你可以使用第三種驗(yàn)證方法。你可以在 Web
網(wǎng)站上和虛擬目錄上都啟用 NT 驗(yàn)證。IE 會把用戶登錄計(jì)算機(jī)的身份信息發(fā)送給 IIS,當(dāng)該用戶試圖登錄 SQL
Server 時(shí) IIS 就使用這些登錄信息。使用這種簡化的方法時(shí),我們可以在一個(gè)遠(yuǎn)程網(wǎng)站的域上對用戶身份進(jìn)
行驗(yàn)證(該遠(yuǎn)程網(wǎng)站登錄到一個(gè)與運(yùn)行著 Web 服務(wù)器的域有著信任關(guān)系的域)。
最后,如果用戶都有個(gè)人數(shù)字證書,你可以把那些證書映射到本地域的 NT 帳戶上。個(gè)人數(shù)字證書與服務(wù)
器數(shù)字證書以同樣的技術(shù)為基礎(chǔ),它證明用戶身份標(biāo)識的合法性,所以可以取代 NT 的 Challenge/Response
(質(zhì)詢 / 回應(yīng))驗(yàn)證算法。Netscape 和 IE 都自動在每一個(gè)頁面請求中把證書信息發(fā)送給 IIS。IIS 提供了一個(gè)
讓管理員把證書映射到 NT 帳戶的工具。因此,我們可以用數(shù)字證書取代通常的提供帳戶名字和密碼的登錄過
程。
由此可見,通過 NT 帳戶驗(yàn)證用戶時(shí)我們可以使用多種實(shí)現(xiàn)方法。即使當(dāng)用戶通過 IIS 跨越 Internet 連接
SQL Server 時(shí),選擇仍舊存在。因此,你應(yīng)該把 NT 驗(yàn)證作為首選的用戶身份驗(yàn)證辦法。

三、設(shè)置全局組
構(gòu)造安全策略的下一個(gè)步驟是確定用戶應(yīng)該屬于什么組。通常,每一個(gè)組織或應(yīng)用程序的用戶都可以按
照他們對數(shù)據(jù)的特定訪問要求分成許多類別。例如,會計(jì)應(yīng)用軟件的用戶一般包括:數(shù)據(jù)輸入操作員,數(shù)據(jù)
輸入管理員,報(bào)表編寫員,會計(jì)師,審計(jì)員,財(cái)務(wù)經(jīng)理等。每一組用戶都有不同的數(shù)據(jù)庫訪問要求。
控制數(shù)據(jù)訪問權(quán)限最簡單的方法是,對于每一組用戶,分別地為它創(chuàng)建一個(gè)滿足該組用戶權(quán)限要求的、
域內(nèi)全局有效的組。我們既可以為每一個(gè)應(yīng)用分別創(chuàng)建組,也可以創(chuàng)建適用于整個(gè)企業(yè)的、涵蓋廣泛用戶類
別的組。然而,如果你想要能夠精確地了解組成員可以做些什么,為每一個(gè)應(yīng)用程序分別創(chuàng)建組是一種較好
的選擇。例如,在前面的會計(jì)系統(tǒng)中,我們應(yīng)該創(chuàng)建 Data Entry Operators、Accounting Data Entry
Managers 等組。請記住,為了簡化管理,最好為組取一個(gè)能夠明確表示出作用的名字。
除了面向特定應(yīng)用程序的組之外,我們還需要幾個(gè)基本組。基本組的成員負(fù)責(zé)管理服務(wù)器。按照習(xí)慣,
我們可以創(chuàng)建下面這些基本組: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 是服務(wù)器上一個(gè)數(shù)據(jù)庫的名
字)。當(dāng)然,如果必要的話,你還可以創(chuàng)建其他組。
創(chuàng)建了全局組之后,接下來我們可以授予它們訪問 SQL Server 的權(quán)限。首先為 SQL Server Users 創(chuàng)建一
個(gè) NT 驗(yàn)證的登錄并授予它登錄權(quán)限,把 Master 數(shù)據(jù)庫設(shè)置為它的默認(rèn)數(shù)據(jù)庫,但不要授予它訪問任何其他數(shù)
據(jù)庫的權(quán)限,也不要把這個(gè)登錄帳戶設(shè)置為任何服務(wù)器角色的成員。接著再為 SQL Server Denied Users 重復(fù)
這個(gè)過程,但這次要拒絕登錄訪問。在 SQL Server 中,拒絕權(quán)限始終優(yōu)先。創(chuàng)建了這兩個(gè)組之后,我們就有
了一種允許或拒絕用戶訪問服務(wù)器的便捷方法。
為那些沒有直接在 Sysxlogins 系統(tǒng)表里面登記的組授權(quán)時(shí),我們不能使用 Enterpris Managr,因?yàn)?Enter-
prise Manager 只允許我們從現(xiàn)有登錄名字的列表選擇,而不是域內(nèi)所有組的列表。要訪問所有的組,請打開
Query Analyzer,然后用系統(tǒng)存儲過程 sp_addsrvrolemember 以及 sp_addrolemember 進(jìn)行授權(quán)。
對于操作服務(wù)器的各個(gè)組,我們可以用 sp_addsrvrolemember 存儲過程把各個(gè)登錄加入到合適的服務(wù)器
角色:SQL Server Administrators 成為 Sysadmins 角色的成員,SQL Server DB Creators 成為 Dbcreator 角
色的成員,SQL Server Security Operators 成為 Securityadmin 角色的成員。注意 sp_addsrvrolemember 存
儲過程的第一個(gè)參數(shù)要求是帳戶的完整路徑。例如,BigCo 域的 JoeS 應(yīng)該是 bigco/joes(如果你想用本地帳
戶,則路徑應(yīng)該是 server_name/joes)。
要?jiǎng)?chuàng)建在所有新數(shù)據(jù)庫中都存在的用戶,你可以修改 Model 數(shù)據(jù)庫。為了簡化工作,SQL Server 自動把
所有對 Model 數(shù)據(jù)庫的改動復(fù)制到新的數(shù)據(jù)庫。只要正確運(yùn)用 Model 數(shù)據(jù)庫,我們無需定制每一個(gè)新創(chuàng)建的數(shù)
據(jù)庫。另外,我們可以用 sp_addrolemember 存儲過程把 SQL Server Security Operators 加入到 db_security-
admin,把 SQL Server Developers 加入到 db_owner 角色。
注意我們?nèi)匀粵]有授權(quán)任何組或帳戶訪問數(shù)據(jù)庫。事實(shí)上,我們不能通過 Enterprise Manager 授權(quán)數(shù)
據(jù)庫訪問,因?yàn)?Enterprise Manager 的用戶界面只允許我們把數(shù)據(jù)庫訪問權(quán)限授予合法的登錄帳戶。SQL
Server 不要求 NT 帳戶在我們把它設(shè)置為數(shù)據(jù)庫角色的成員或分配對象權(quán)限之前能夠訪問數(shù)據(jù)庫,但 Enter-
prise Manager 有這種限制。盡管如此,只要我們使用的是 sp_addrolemember 存儲過程而不是 Enterprise
Manager,就可以在不授予域內(nèi) NT 帳戶數(shù)據(jù)庫訪問權(quán)限的情況下為任意 NT 帳戶分配權(quán)限。
到這里為止,對 Model 數(shù)據(jù)庫的設(shè)置已經(jīng)完成。但是,如果你的用戶群體對企業(yè)范圍內(nèi)各個(gè)應(yīng)用數(shù)據(jù)庫
有著類似的訪問要求,你可以把下面這些操作移到 Model 數(shù)據(jù)庫上進(jìn)行,而不是在面向特定應(yīng)用的數(shù)據(jù)庫上
進(jìn)行。

四、允許數(shù)據(jù)庫訪問
在數(shù)據(jù)庫內(nèi)部,與迄今為止我們對登錄驗(yàn)證的處理方式不同,我們可以把權(quán)限分配給角色而不是直接把
它們分配給全局組。這種能力使得我們能夠輕松地在安全策略中使用 SQL Server 驗(yàn)證的登錄。即使你從來沒
有想要使用 SQL Server 登錄帳戶,本文仍舊建議分配權(quán)限給角色,因?yàn)檫@樣你能夠?yàn)槲磥砜赡艹霈F(xiàn)的變化做
好準(zhǔn)備。
創(chuàng)建了數(shù)據(jù)庫之后,我們可以用 sp_grantdbaccess 存儲過程授權(quán) DB_Name Users 組訪問它。但應(yīng)該注意的
是,與 sp_grantdbaccess 對應(yīng)的 sp_denydbaccess 存儲過程并不存在,也就是說,你不能按照拒絕對服務(wù)器訪
問的方法拒絕對數(shù)據(jù)庫的訪問。如果要拒絕數(shù)據(jù)庫訪問,我們可以創(chuàng)建另外一個(gè)名為 DB_Name Denied Users
的全局組,授權(quán)它訪問數(shù)據(jù)庫,然后把它設(shè)置為 db_denydatareader 以及 db_denydatawriter 角色的成員。注
意 SQL 語句權(quán)限的分配,這里的角色只限制對對象的訪問,但不限制對 DDL(Data Definition Language,數(shù)
據(jù)定義語言)命令的訪問。
正如對登錄過程的處理,如果訪問標(biāo)記中的任意 SID 已經(jīng)在 Sysusers 系統(tǒng)表登記,SQL 將允許用戶訪問數(shù)
據(jù)庫。因此,我們既可以通過用戶的個(gè)人 NT 帳戶 SID 授權(quán)用戶訪問數(shù)據(jù)庫,也可以通過用戶所在的一個(gè)(或
者多個(gè))組的 SID 授權(quán)。為了簡化管理,我們可以創(chuàng)建一個(gè)名為 DB_Name Users 的擁有數(shù)據(jù)庫訪問權(quán)限的全局
組,同時(shí)不把訪問權(quán)授予所有其他的組。這樣,我們只需簡單地在一個(gè)全局組中添加或者刪除成員就可以增
加或者減少數(shù)據(jù)庫用戶。

五、分配權(quán)限
實(shí)施安全策略的最后一個(gè)步驟是創(chuàng)建用戶定義的數(shù)據(jù)庫角色,然后分配權(quán)限。完成這個(gè)步驟最簡單的方
法是創(chuàng)建一些名字與全局組名字配套的角色。例如對于前面例子中的會計(jì)系統(tǒng),我們可以創(chuàng)建 Accounting
Data Entry Operators、Accounting Data Entry Managers 之類的角色。由于會計(jì)數(shù)據(jù)庫中的角色與帳務(wù)處
理任務(wù)有關(guān),你可能想要縮短這些角色的名字。然而,如果角色名字與全局組的名字配套,你可以減少混亂,
能夠更方便地判斷出哪些組屬于特定的角色。
創(chuàng)建好角色之后就可以分配權(quán)限。在這個(gè)過程中,我們只需用到標(biāo)準(zhǔn)的 GRANT、REVOKE 和 DENY 命令。但
應(yīng)該注意 DENY 權(quán)限,這個(gè)權(quán)限優(yōu)先于所有其他權(quán)限。如果用戶是任意具有 DENY 權(quán)限的角色或者組的成員,
SQL Server 將拒絕用戶訪問對象。
接下來我們就可以加入所有 SQL Server 驗(yàn)證的登錄。用戶定義的數(shù)據(jù)庫角色可以包含 SQL Server 登錄以
及 NT 全局組、本地組、個(gè)人帳戶,這是它最寶貴的特點(diǎn)之一。用戶定義的數(shù)據(jù)庫角色可以作為各種登錄的通
用容器,我們使用用戶定義角色而不是直接把權(quán)限分配給全局組的主要原因就在于此。
由于內(nèi)建的角色一般適用于整個(gè)數(shù)據(jù)庫而不是單獨(dú)的對象,因此這里建議你只使用兩個(gè)內(nèi)建的數(shù)據(jù)庫角
色,即 db_securityadmin 和 db_owner。其他內(nèi)建數(shù)據(jù)庫角色,例如 db_datareader,它授予對數(shù)據(jù)庫里面所
有對象的 SELECT 權(quán)限。雖然你可以用 db_datareader 角色授予 SELECT 權(quán)限,然后有選擇地對個(gè)別用戶或組拒
絕 SELECT 權(quán)限,但使用這種方法時(shí),你可能忘記為某些用戶或者對象設(shè)置權(quán)限。一種更簡單、更直接而且不
容易出現(xiàn)錯(cuò)誤的方法是為這些特殊的用戶創(chuàng)建一個(gè)用戶定義的角色,然后只把那些用戶訪問對象所需要的權(quán)
限授予這個(gè)用戶定義的角色。

“怎么配置一個(gè)安全穩(wěn)定的 SQL SERVER 的數(shù)據(jù)庫”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-28發(fā)表,共計(jì)6116字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 合水县| 资兴市| 长子县| 澄迈县| 自贡市| 淮南市| 阿拉善盟| 博白县| 峨眉山市| 固阳县| 大竹县| 中卫市| 卢湾区| 宣恩县| 临桂县| 屏山县| 辛集市| 革吉县| 湖北省| 丹东市| 班戈县| 伊川县| 新密市| 英德市| 孝感市| 靖西县| 工布江达县| 仁化县| 吴江市| 乐东| 饶平县| 富川| 隆子县| 彩票| 鞍山市| 牙克石市| 浮梁县| 罗山县| 工布江达县| 古交市| 定襄县|