會員登錄 - 用戶注冊 - 網(wǎng)站地圖 Office中國(office-cn.net),專業(yè)Office論壇
當(dāng)前位置:主頁 > 技巧 > Access技巧 > DAO/ADO/ADP > 正文

關(guān)于 SQL Server 2000 身份驗(yàn)證與安全控制

時(shí)間:2003-12-28 06:37 來源:本站原創(chuàng) 作者:zhuyiwen… 閱讀:

 

關(guān)于 SQL Server 2000 身份驗(yàn)證與安全控制

SQL Server 2000 聯(lián)機(jī)叢書:

SQL Server 身份驗(yàn)證模式

  當(dāng) SQL Server 2000 在 Windows NT 或 Windows 2000 上運(yùn)行時(shí),sysadmin 固定服務(wù)器角色成員可以指定下面兩種身份驗(yàn)證模式之一:

  1. Windows 身份驗(yàn)證模式
    只進(jìn)行 Windows 身份驗(yàn)證。用戶不能指定 SQL Server 2000 登錄 ID。這是 SQL Server 2000 的默認(rèn)身份驗(yàn)證模式。不能為在 Windows 98 上運(yùn)行的 SQL Server 實(shí)例指定 Windows 身份驗(yàn)證模式,因?yàn)榇瞬僮飨到y(tǒng)不支持 Windows 身份驗(yàn)證。

    當(dāng)用戶通過 Windows NT 4.0 或 Windows 2000 用戶帳戶進(jìn)行連接時(shí),SQL Server 通過回叫 Windows NT 4.0 或 Windows 2000 以獲得信息,重新驗(yàn)證帳戶名和密碼。

    SQL Server 通過使用網(wǎng)絡(luò)用戶的安全特性控制登錄訪問,以實(shí)現(xiàn)與 Windows NT 4.0 或 Windows 2000 的登錄安全集成。用戶的網(wǎng)絡(luò)安全特性在網(wǎng)絡(luò)登錄時(shí)建立,并通過 Windows 域控制器進(jìn)行驗(yàn)證。當(dāng)網(wǎng)絡(luò)用戶嘗試連接時(shí),SQL Server 使用基于 Windows 的功能確定經(jīng)過驗(yàn)證的網(wǎng)絡(luò)用戶名。SQL Server 于是驗(yàn)證此人是否是如其所說的那個(gè)人,然后只基于網(wǎng)絡(luò)用戶名允許或拒絕登錄訪問,而不要求單獨(dú)的登錄名和密碼。

    登錄安全集成在 SQL Server 中任何受支持的網(wǎng)絡(luò)協(xié)議上運(yùn)行。

     

     說明 如果用戶試圖通過提供空白登錄名稱連接到 SQL Server 的實(shí)例,SQL Server 將使用 Windows 身份驗(yàn)證。此外,如果用戶試圖使用特定的登錄連接到配置為 Windows 身份驗(yàn)證模式的 SQL Server 實(shí)例,則將忽略該登錄并使用 Windows 身份驗(yàn)證。

    與 SQL Server 身份驗(yàn)證相比,Windows 身份驗(yàn)證有某些優(yōu)點(diǎn),主要是由于它與 Windows NT 4.0 和 Windows 2000 安全系統(tǒng)的集成。Windows NT 4.0 和 Windows 2000 安全系統(tǒng)提供更多的功能,如安全驗(yàn)證和密碼加密、審核、密碼過期、最短密碼長度,以及在多次登錄請求無效后鎖定帳戶。

    由于 Windows NT 4.0 和 Windows 2000 用戶和組只由 Windows NT 4.0 或 Windows 2000 維護(hù),因此當(dāng)用戶進(jìn)行連接時(shí),SQL Server 將讀取有關(guān)該用戶在組中的成員資格信息。如果對已連接用戶的可訪問權(quán)限進(jìn)行更改,則當(dāng)用戶下次連接到 SQL Server 實(shí)例或登錄到 Windows NT 4.0 或 Windows 2000 時(shí)(取決于更改的類型),這些更改會生效。

  2. 混合模式
    如果用戶在登錄時(shí)提供了 SQL Server 2000 登錄 ID,則系統(tǒng)將使用 SQL Server 身份驗(yàn)證對其進(jìn)行驗(yàn)證。如果沒有提供 SQL Server 2000 登錄 ID 或請求 Windows 身份驗(yàn)證,則使用 Windows 身份驗(yàn)證對其進(jìn)行身份驗(yàn)證。

    當(dāng)用戶用指定的登錄名稱和密碼從非信任連接進(jìn)行連接時(shí),SQL Server 通過檢查是否已設(shè)置 SQL Server 登錄帳戶,以及指定的密碼是否與以前記錄的密碼匹配,自己進(jìn)行身份驗(yàn)證。如果 SQL Server 未設(shè)置登錄帳戶,則身份驗(yàn)證將失敗,而且用戶收到錯誤信息。

    提供 SQL Server 身份驗(yàn)證是為了向后兼容性,因?yàn)闉?SQL Server 7.0 版或更早的版本編寫的應(yīng)用程序可能要求使用 SQL Server 登錄和密碼。另外,當(dāng) SQL Server 實(shí)例在 Windows 98 上運(yùn)行時(shí),必須使用 SQL Server 身份驗(yàn)證,因?yàn)樵?Windows 98 上不支持 Windows 身份驗(yàn)證模式。因此,SQL Server 在 Windows 98 上運(yùn)行時(shí)使用混合模式(但只支持 SQL Server 身份驗(yàn)證)。

  盡管建議使用 Windows 身份驗(yàn)證,但對于 Windows NT 4.0 和 Windows 2000 客戶端以外的其它客戶端連接,可能需要使用 SQL Server 身份驗(yàn)證。

   說明 當(dāng)使用命名管道連接到在 Windows NT 4.0 或 Windows 2000 上運(yùn)行的 SQL Server 實(shí)例時(shí),用戶必須有連接到 Windows NT 命名管道 IPC \\\IPC$ 的權(quán)限。如果用戶沒有連接權(quán)限,則不能使用命名管道連接到 SQL Server 實(shí)例,除非計(jì)算機(jī)上的 Windows NT 4.0 或 Windows 2000 guest 帳戶已啟用(默認(rèn)情況下禁用),或者給用戶帳戶授予"從網(wǎng)絡(luò)訪問該計(jì)算機(jī)"的權(quán)限。


  設(shè)置 SQL Server 2000 身份驗(yàn)證模式

  SQL Server 2000 身份驗(yàn)證模式可以在安裝過程中指定或使用 SQL Server 企業(yè)管理器指定,如下圖。

  

  也可以通過修改注冊表的方式來改變,如下圖,它保存在
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer 節(jié)的 LoginMode 中。
  LoginMode的鍵值:1 表示Windows 身份驗(yàn)證模式,2 表示混合模式。

  

  注:改變模式后,必須重新啟動 SQL Server 2000 才會生效。


SQL Server 2000 聯(lián)機(jī)叢書:

若要連接到 Microsoft© SQL Server™ 2000 實(shí)例,只需給應(yīng)用程序提供下面中的兩條信息

  1. 運(yùn)行 SQL Server 實(shí)例的計(jì)算機(jī)所在的網(wǎng)絡(luò)名稱。
  2. 實(shí)例名(可選,只有在連接到命名實(shí)例時(shí)才需要)。
  3. 登錄標(biāo)識符 (ID)。
  登錄 ID 是帳戶標(biāo)識符,用來控制對任何 SQL Server 2000 系統(tǒng)的訪問權(quán)限。SQL Server 2000 只有在首先驗(yàn)證了指定的登錄 ID 有效后,才完成連接。這種登錄驗(yàn)證稱為身份驗(yàn)證。
  在登錄屬性中,有一個(gè)是默認(rèn)數(shù)據(jù)庫。當(dāng)一個(gè)登錄連接到 SQL Server 時(shí),這個(gè)默認(rèn)數(shù)據(jù)庫就變成該連接的當(dāng)前數(shù)據(jù)庫,除非該連接請求指定另一個(gè)數(shù)據(jù)庫作為當(dāng)前數(shù)據(jù)庫。
  登錄 ID 僅能使您連接到 SQL Server 實(shí)例。特定數(shù)據(jù)庫內(nèi)的權(quán)限由用戶帳戶控制。數(shù)據(jù)庫管理員將您的登錄帳戶映射到您有權(quán)訪問的任何數(shù)據(jù)庫中的用戶帳戶。
Windows 身份驗(yàn)證
  • SQL Server 2000 sysadmin 固定服務(wù)器角色成員必須首先向 SQL Server 2000 指定所有允許連接到 SQL Server 2000 的 Microsoft Windows NT® 或 Microsoft Windows® 2000 帳戶或組。當(dāng)使用 Windows 身份驗(yàn)證時(shí),在連接到 SQL Server 2000 時(shí)不必指定登錄 ID 或密碼。用戶對 SQL Server 2000 的訪問權(quán)限由 Windows NT 或 Windows 2000 帳戶或組控制,當(dāng)?shù)卿浀娇蛻舳松系?Windows 操作系統(tǒng)時(shí)需接受身份驗(yàn)證。
  • 當(dāng)連接到 SQL Server 2000 時(shí),SQL Server 2000 客戶端軟件向 SQL Server 2000 請求 Windows 信任連接。直到客戶端使用有效的 Windows 帳戶成功登錄后,Windows 才打開信任連接。信任連接的屬性包括打開連接的客戶端的 Windows NT 和 Windows 2000 組及用戶帳戶。SQL Server 2000 從信任連接屬性中得到用戶的帳戶信息,并將它們與定義為有效 SQL Server 2000 登錄的 Windows 帳戶相匹配。如果 SQL Server 2000 找到匹配的項(xiàng),則接受這個(gè)連接。當(dāng)使用 Windows 2000 身份驗(yàn)證連接到 SQL Server 2000 時(shí),用戶標(biāo)識即是 Windows NT 或 Windows 2000 組或用戶帳戶。
  • Microsoft Windows Me 和 Windows 98 操作系統(tǒng)不支持服務(wù)器端的信任連接 API。SQL Server 在 Windows Me 或 Windows 98 上運(yùn)行時(shí)不支持 Windows 身份驗(yàn)證。用戶在連接時(shí)必須提供 SQL Server 登錄帳戶。當(dāng) SQL Server 在 Windows NT 或 Windows 2000 上運(yùn)行時(shí),Windows Me、Windows 98 和 Windows 95 客戶端可以使用 Windows 2000 身份驗(yàn)證與其連接。
SQL Server 身份驗(yàn)證
  • sysadmin 固定服務(wù)器角色成員首先向 SQL Server 2000 指定所有有效的 SQL Server 2000 登錄帳戶和密碼。這些登錄帳戶和密碼與用戶的 Microsoft Windows 帳戶或網(wǎng)絡(luò)帳戶無關(guān)。當(dāng)連接到 SQL Server 2000 時(shí),用戶必須提供 SQL Server 2000 登錄帳戶和密碼。系統(tǒng)將通過用戶的 SQL Server 2000 登錄帳戶在 SQL Server 2000 中標(biāo)識用戶。

  由此可以看出,SQL Server 2000 安全控制是由登錄>>用戶>>權(quán)限來得到控制的。因此要連接 SQL Server 2000,首先要經(jīng)過身份驗(yàn)證,要通過身份驗(yàn)證,就必須擁有登錄 ID。

  一、登錄 ID 的獲取

  SQL Server 2000 使用兩類身份驗(yàn)證:Windows 身份驗(yàn)證和 SQL Server 身份驗(yàn)證(注:Microsoft Windows Me 和 Windows 98 操作系統(tǒng)不支持服務(wù)器端的信任連接 API,也就是說安裝在 Microsoft Windows Me 和 Windows 98 操作系統(tǒng)上的 SQL Server 2000 不支持 Windows 身份驗(yàn)證)。

  1. 為 Windows 身份驗(yàn)證的登錄 ID 的獲取

    對于有域的網(wǎng)絡(luò),在域用戶管理器中添加域用戶,設(shè)為:UserSQL
    對于無域的網(wǎng)絡(luò),在用戶和組中添加用戶,設(shè)為:UserSQL

    向本地計(jì)算機(jī)中添加 Windows 用戶(以 Windws XP 為例)

    下圖舉例說明在 Windows XP 添加用戶,打開 Windows 資源管理器,右鍵單擊 [我的電腦] 選擇 [管理] 就打開了 [計(jì)算機(jī)管理],在 [計(jì)算機(jī)管理] 中,展開 [本地用戶和級] 右鍵單擊 [用戶] 選擇 [新用戶],這時(shí)打開 [新用戶] 窗口,輸入用戶名為 UserSQL,描述為 SQL Server 登錄 ID(可選,方便以后管理),輸入密碼,去掉“用戶下次登錄時(shí)必須更改密碼”(為了講解簡單點(diǎn)),勾選“用戶不能更改密碼”和“密碼永不過期”,然后點(diǎn)擊 [創(chuàng)建] 按鈕,這時(shí)就為該計(jì)算機(jī)創(chuàng)建了一個(gè)名為 UserSQL 的用戶。

     

    到此該用戶還不能用來連接 SQL Server 2000 數(shù)據(jù)庫,還必須在 SQL Server 2000 中創(chuàng)建“登錄”與剛建的用戶相對應(yīng)。

    A. 使用 SQL Server 2000 企業(yè)管理器添加 Windows 用戶的登錄 ID

    下面舉例說明如何在 SQL Server 2000 的企業(yè)管理器中創(chuàng)建“登錄”,打開 SQL Server 2000 的企業(yè)管理器并以 sa 身份或 Windows 系統(tǒng)管理員的身份(因?yàn)檫@兩個(gè)登錄擁有 SQL Server 2000 sysadmin 角色的權(quán)限)連接到當(dāng)前運(yùn)行的 SQL Server 2000 (在本例中是本地的 SQL Server 2000),展開 [安全性] 節(jié)點(diǎn),右鍵單擊 [登錄] 選擇 [新建登錄],這時(shí)會打開 [SQL Server 登錄發(fā)生 -- 新建登錄] 窗口,在 [常規(guī)] 標(biāo)簽下,點(diǎn)擊 [名稱] 右側(cè)的 [...] 按鈕瀏覽 Windows 用戶名,如下圖,列出了本地服務(wù)名(MYDESK)的用戶,在列表中選擇上一步創(chuàng)建的 Windows 用戶 UserSQL,然后點(diǎn)擊 [添加] 按鈕將其添加到 [添加名稱] 中,點(diǎn)擊 [確定] 按鈕。

     

    然后,要為 UserSQL 登錄選擇默認(rèn)數(shù)據(jù)庫,如下圖,選擇“NorthwindCS”,點(diǎn)擊 [確定] 按鈕。

     

    可是這時(shí)彈出一個(gè)錯誤提示框,如下圖,說用戶沒有訪問 NorthwindCS 數(shù)據(jù)庫的權(quán)限,不要緊,這個(gè)問題留待后面的創(chuàng)建數(shù)據(jù)庫用戶再進(jìn)行講解,點(diǎn)擊 [是],到此為止,在 SQL Server 2000 中創(chuàng)建了一個(gè)登錄 UserSQL,并選擇默認(rèn)數(shù)據(jù)庫為 NorthWindCS。

     

    B. 使用 osql 向本地 MSDE 2000 添加 Windows 用戶的登錄 ID

    由于 MSDE 2000 沒有企業(yè)管理器,可以通過 Osql 運(yùn)行系統(tǒng)的存儲過程 sp_grantlogin 達(dá)到同樣的目的,下圖是用 osql 向本地 MSDE 2000 添加 Windows 用戶的登錄 ID

     

  2. 為 SQL Server 身份驗(yàn)證的登錄 ID 的獲取

    A. 使用 SQL Server 2000 企業(yè)管理器添加登錄 ID

    下面舉例說明如何在 SQL Server 2000 的企業(yè)管理器中創(chuàng)建“登錄”,打開 SQL Server 2000 的企業(yè)管理器并以 sa 身份或 Windows 系統(tǒng)管理員的身份(因?yàn)檫@兩個(gè)登錄擁有 SQL Server 2000 sysadmin 角色的權(quán)限)連接到當(dāng)前運(yùn)行的 SQL Server 2000 (在本例中是本地的 SQL Server 2000),展開 [安全性] 節(jié)點(diǎn),右鍵單擊 [登錄] 選擇 [新建登錄],這時(shí)會打開 [SQL Server 登錄發(fā)生 -- 新建登錄] 窗口,在 [常規(guī)] 標(biāo)簽下,在 [名稱] 右側(cè)的文本輸入框輸入登錄名 UserX,然后選擇 SQL Server 身份驗(yàn)證單選器,輸入該登錄 ID UserX 登錄 SQL Server 要用的密碼,然后,為 UserX 登錄選擇默認(rèn)數(shù)據(jù)庫,如下圖,選擇“NorthwindCS”,點(diǎn)擊 [確定] 按鈕,這時(shí)會彈出密碼確認(rèn)對話框,重新輸入一次密碼,點(diǎn)擊 [確定] 按鈕,即可。

     

    可是這時(shí)彈出一個(gè)錯誤提示框,如下圖,說用戶沒有訪問 NorthwindCS 數(shù)據(jù)庫的權(quán)限,不要緊,這個(gè)問題留待后面的創(chuàng)建數(shù)據(jù)庫用戶再進(jìn)行講解,點(diǎn)擊 [是],到此為止,在 SQL Server 2000 中創(chuàng)建了一個(gè)登錄 UserX,并選擇默認(rèn)數(shù)據(jù)庫為 NorthWindCS。

     

    B. 使用 osql 向本地 MSDE 2000 添加登錄 ID

    通過 Osql 運(yùn)行系統(tǒng)的存儲過程 sp_addlogin 添加登錄 ID,下圖是用 osql 向本地 MSDE 2000 添加登錄 ID 為 UserX 密碼為 123456 默認(rèn)數(shù)據(jù)庫為 NorthwinCS 的登錄 ID。

     

  二、數(shù)據(jù)庫用戶的設(shè)置

  登錄 ID 本身并不提供訪問數(shù)據(jù)庫對象的用戶權(quán)限。一個(gè)登錄 ID 必須與每個(gè)數(shù)據(jù)庫中的一個(gè)用戶 ID 相關(guān)聯(lián)后,用這個(gè)登錄 ID 連接的人才能訪問數(shù)據(jù)庫中的對象。如果登錄 ID 沒有與數(shù)據(jù)庫中的任何用戶 ID 顯式關(guān)聯(lián),就與 guest 用戶 ID 相關(guān)聯(lián)。如果數(shù)據(jù)庫沒有 guest 用戶帳戶,則該登錄就不能訪問該數(shù)據(jù)庫,除非它已與一個(gè)有效的用戶帳戶相關(guān)聯(lián)。

A. 使用 SQL Server 2000 企業(yè)管理器在 NorthwindCS 數(shù)據(jù)庫上添加用戶

  下面舉例說明如何在 SQL Server 2000 的企業(yè)管理器中創(chuàng)建數(shù)據(jù)庫“用戶”,打開 SQL Server 2000 的企業(yè)管理器并以 sa 身份或 Windows 系統(tǒng)管理員的身份連接到當(dāng)前運(yùn)行的 SQL Server 2000 (在本例中是本地的 SQL Server 2000),展開 NorthwindCS 數(shù)據(jù)庫節(jié)點(diǎn),右鍵單擊 [用戶] 選擇 [新建數(shù)據(jù)庫用戶],打開數(shù)據(jù)庫用戶屬性對話框如下圖,首先選擇登錄名,本例為 MYDESK\UserSQL,這時(shí)用戶名輸入文本框中出現(xiàn)默認(rèn)的用戶名 MYDESK\UserSQL,本例不作修改,使用默認(rèn)值。為了能使該用戶擁有對該數(shù)據(jù)庫的全部權(quán)限,勾選數(shù)據(jù)庫角色成員列表中的 db_owner,點(diǎn)擊 [確定] 按鈕,就為該數(shù)據(jù)庫創(chuàng)建了一個(gè)名為 MYDESK\UserSQL 的用戶,并與登錄 ID MYDESK\UserSQL 相關(guān)聯(lián)。

B. 使用 osql 在 NorthwindCS 數(shù)據(jù)庫上添加用戶

  下圖使用 osql 在 NorthwindCS 數(shù)據(jù)庫中添加用戶 ID MYDESK\UserSQL 和 UserX 分別與登錄 ID MYDESK\UserSQL 和 UserX 相關(guān)聯(lián),并把它們均設(shè)為數(shù)據(jù)庫的 db_owner 角色。

 


中國 access XP FAQ 網(wǎng)站

(責(zé)任編輯:admin)

頂一下
(0)
0%
踩一下
(0)
0%
發(fā)表評論
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
評價(jià):