【正文】
2022/2/9 SQL Server 2022 1 SQL Server數(shù)據(jù)庫應(yīng)用技術(shù) 第 10章 SQL Server安全管理 2 SQL Server 2022 第 10章 SQL Server的安全管理 ?數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。 ?系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要指標(biāo)之一。 ?數(shù)據(jù)庫安全性和計算機(jī)系統(tǒng)安全性 (包括操作系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)的安全性 )是緊密聯(lián)系、相互支持的。 ?主要內(nèi)容: SQL Server 2022安全性概述、 SQL Server 2022的驗證模式、登錄管理、用戶管理、角色管理、權(quán)限管理及系統(tǒng)加密機(jī)制等。 3 SQL Server 2022 目錄 ? SQL Server 2022安全性概述 ? SQL Server 2022的驗證模式 ? 登錄管理 ? 用戶管理 ? 角色管理 ? 權(quán)限管理 ? 加密機(jī)制 練習(xí)題 10 上機(jī)實習(xí) 9 4 SQL Server 2022 SQL Server 2022安全性概述 返回本節(jié)首頁 ?SQL Server 2022安全系統(tǒng)的構(gòu)架建立在 用戶和用戶組 的基礎(chǔ)上。 ?Windows中的用戶和本地組及全局組 可以映射到 SQL Server 2022中的 安全登錄帳戶 ,也可以創(chuàng)建獨立Windows帳戶的安全登錄帳戶。 ?SQL Server提供了 2種安全管理模式: ?Windows 身份驗證模式 ?混合身份驗證模式。 5 SQL Server 2022 SQL Server 2022安全性概述 返回本節(jié)首頁 兩個安全性階段 在 SQL Server 2022中工作時,用戶要經(jīng)過兩個安全性階段: ? 身份驗證: 每個用戶必須通過 登錄帳戶 建立自己的連接能力(身份驗證),以獲得對 SQL Server 2022實例的訪問權(quán)限。 ? 權(quán)限驗證(授權(quán)): 該登錄必須映射到用于控制在數(shù)據(jù)庫中所執(zhí)行的活動(權(quán)限驗證)的 SQL Server 用戶帳戶 。如果數(shù)據(jù)庫中沒有用戶帳戶,則即使用戶能夠連接到 SQL Server 實例,也無法訪問該數(shù)據(jù)庫。 6 SQL Server 2022 SQL Server 2022安全性概述 返回本節(jié)首頁 用戶權(quán)限 當(dāng)用戶連接到 SQL Server 2022實例后,他們可以執(zhí)行的活動由授予以下帳戶的權(quán)限確定: ① 用戶安全帳戶; ② 用戶安全帳戶所屬 Windows組或角色層次結(jié)構(gòu); ③ 用戶若要進(jìn)行任何涉及更改數(shù)據(jù)庫定義或訪問數(shù)據(jù)的活動,則必須有相應(yīng)的權(quán)限。 管理權(quán)限包括授予或廢除執(zhí)行以下活動的用戶權(quán)限: ① 處理數(shù)據(jù)和執(zhí)行過程( 對象權(quán)限 ); ② 創(chuàng)建數(shù)據(jù)庫或數(shù)據(jù)庫中的項目( 語句權(quán)限 ); ③ 利用授予預(yù)定義角色的權(quán)限( 暗示性權(quán)限 )。 7 SQL Server 2022 SQL Server 2022安全性概述 返回本節(jié)首頁 視圖安全機(jī)制 ?視圖作為安全機(jī)制: SQL Server 2022通過限制可由用戶使用的數(shù)據(jù)。 ?數(shù)據(jù)子集: 用戶可以訪問某些數(shù)據(jù),進(jìn)行查詢和修改,但是表或數(shù)據(jù)庫的其余部分是不可見的,也不能進(jìn)行訪問。 ?視圖授權(quán): 對 SQL Server 2022來說,無論在基礎(chǔ)表 (一個或多個 )上的權(quán)限集合有多大,都必須授予、拒絕或廢除訪問視圖中數(shù)據(jù)子集的權(quán)限。 8 SQL Server 2022 SQL Server 2022安全性概述 返回本節(jié)首頁 加密方法 SQL Server 2022支持加密或可以加密的內(nèi)容為: ① SQL Server 中存儲的登錄和應(yīng)用程序角色密碼; ② 作為網(wǎng)絡(luò)數(shù)據(jù)包而在客戶端和服務(wù)器端之間發(fā)送的數(shù)據(jù); ③ SQL Server 2022中如下對象的定義內(nèi)容:存儲過程、用戶定義函數(shù)、視圖、觸發(fā)器、默認(rèn)值、規(guī)則等。 例如: SQL Server 2022可使用安全套接字層 (SSL)加密在應(yīng)用程序計算機(jī)和數(shù)據(jù)庫計算機(jī)上的 SQL Server 實例之間傳輸?shù)乃袛?shù)據(jù)。 9 SQL Server 2022 SQL Server 2022安全性概述 返回本節(jié)首頁 審核活動 ? SQL Server 2022提供審核功能,用以跟蹤和記錄每個 SQL Server實例上已發(fā)生的活動(如成功和失敗的記錄)。 ? SQL Server 2022還提供管理審核記錄的接口,即 SQL事件探查器。 ? 只有 sysadmin固定安全角色的成員才能啟用或修改審核,而且審核的每次修改都是可審核的事件。 10 SQL Server 2022 SQL Server 2022的驗證模式 返回本節(jié)首頁 Windows身份驗證模式 混合身份驗證模式 (也稱 SQL Server身份驗證模式 ) 設(shè)置驗證模式 SQL Server系統(tǒng)登錄驗證過程 11 SQL Server 2022 SQL Server 2022的驗證模式 返回本節(jié)首頁 SQL Server 2022有兩種安全驗證模式: ?Windows 身份驗證模式 ?混合身份驗證模式(也稱 SQL Server 身份驗證模式)。 12 SQL Server 2022 返回本節(jié)首頁 Yes No Yes No Yes No Yes No Yes No S Q L S e r v e r 拒絕連接 S Q L S e r v e r 接受 連接 使用客戶應(yīng)用程序 連接到 S Q L S e r v e r W i n d o w s 身份驗證模式 S Q L S e r v e r 身份驗證模式 S Q L S e r v e r 拒絕連接 身份驗 證模式? 連接 許可? 是有效 登錄嗎? 密碼正 確嗎? 使用 W i n d o w s 帳戶連接嗎? 使用 S Q L S e r v e r 帳戶連接嗎? 圖 102 SQL Server系統(tǒng)登錄驗證過程 設(shè)置驗證模式 13 SQL Server 2022 返回本節(jié)首頁 ? Windows 身份驗證模式是指用戶通過 Windows 用戶帳戶連接到 SQL Server,即用戶身份由 Windows 系統(tǒng)來驗證。 ? 默認(rèn)的身份驗證模式,比混合驗證模式安全得多。 ? Windows 身份驗證使用 Kerberos 安全協(xié)議,通過強(qiáng)密碼的復(fù)雜性驗證提供密碼策略強(qiáng)制,提供帳戶鎖定支持,并且支持密碼過期。 ? 用戶和組是由 Windows維護(hù)的,因此當(dāng)用戶進(jìn)行連接時, SQL Server將讀取有關(guān)該用戶在組中的成員資格信息。 Windows身份驗證模式 14 SQL Server 2022 返回本節(jié)首頁 使用 Windows身份驗證有如下特點: 1)Windows驗證模式下由 Windows管理登錄帳戶,數(shù)據(jù)庫管理員主要是使用該帳戶; 2)Windows有功能很強(qiáng)的工具與技術(shù)去管理用戶的登錄帳戶; 3)可以在 SQL Server中增加用戶組,可以使用用戶組。 SQL Server支持的登錄帳戶,能在系統(tǒng)表 syslogins或目錄視圖 。 Windows身份驗證模式 15 SQL Server 2022 返回本節(jié)首頁 ? 混合身份驗證模式允許用戶使用 Windows身份和 SQL Server身份進(jìn)行連接。 ? 通過 Windows登錄帳戶連接的用戶可使用 Windows驗證的受信任連接。 ? 當(dāng)用戶使用指定登錄名稱和密碼進(jìn)行非信任連接時, SQL Server檢測輸入的登錄名和密碼是否與系統(tǒng) Syslogins表記錄的情況相同,據(jù)此進(jìn)行身份驗證。如果不存在該用戶的登錄帳戶,則身份驗證失敗。 ? 提供 SQL Server身份驗證是為了考慮非 Windows客戶兼容及向后兼容,早期 SQL Server的應(yīng)用程序可能要求使用 SQL Server登錄和密碼。 混合身份驗證模式 (也稱 SQL Server身份驗證模式 ) 16 SQL Server 2022 返回本節(jié)首頁 混合身份驗證模式有如下特點: 1) 混合模式允許非 Windows客戶、 Inter客戶和混合的客戶組連接到 SQL Server中; 2)增加了完全性方面的選擇。 如果必須選擇“混合身份驗證模式”并要求使用 SQL登錄以適應(yīng)舊式應(yīng)用程序,則必須為所有 SQL帳戶設(shè)置 強(qiáng)密碼 。這對于屬于 sysadmin角色的帳戶 (特別是 sa帳戶 )尤其重要。 混合身份驗證模式 (也稱 SQL Server身份驗證模式 ) 17 SQL Server 2022 返回本節(jié)首頁 在 Management Studio中的兩種設(shè)置方法。 方法之一: 1)打開 Management Studio; 2)在 “ 視圖 ” ?“已注冊的服務(wù)器”子窗口中要設(shè)置驗證模式的服務(wù)器上按鼠標(biāo)右鍵,然后在彈出的快捷菜單上選擇“屬性”,系統(tǒng)彈出如圖 101所示的“編輯服務(wù)器注冊屬性”窗口。 設(shè)置驗證模式 18 SQL Server 2022 返回本節(jié)首頁 圖 101 服務(wù)器注冊屬性 設(shè)置驗證模式 19 SQL Server 2022 返回本節(jié)首頁 方法之二: 1)在 Management Studio對象資源管理器中,右鍵單擊服務(wù)器,再單擊 “ 屬性 ” 。 2)在 “ 安全性 ” 頁上的 “ 服務(wù)器身份驗證 ” 下,選擇新的服務(wù)器身份驗證模式,再單擊 “ 確定 ” 。 以上兩種方法,均需要重新啟動 SQL Server后,才能生效。 設(shè)置驗證模式 20 SQL Server 2022 設(shè)置驗證模式 21 SQL Server 2022 登錄管理 返回本節(jié)首頁 ? 系統(tǒng)管理員登錄帳戶 ? 使用 Management Studio管理 SQL Server登錄帳戶 ? 用 TSQL管理 SQL Server登錄帳戶 ? 管理登錄的最新 TSQL命令 22 SQL Server 2022 登錄管理 返回本節(jié)首頁 登錄是基于服務(wù)器級使用的用戶名稱。 在 SQL Server中要成為數(shù)據(jù)庫的用戶,必須先成為服務(wù)器的登錄。一個登錄可以成為多個數(shù)據(jù)庫的用戶。 ?在 Windows驗證模式下,可以在 Windows全局組或域用戶中創(chuàng)建登錄; ?在 SQL Server驗證模式下,還可以在 Windows的非全局組、非域用戶甚至非 Windows用戶中創(chuàng)建登錄。 23 SQL Server 2022 返回本節(jié)首頁 ? SQL Server有兩個默認(rèn)的系統(tǒng)管理員登錄帳戶: sa和BUILTIN\Administrators。 ? sa是一個特殊的登錄名,是 SQL Server身份驗證機(jī)制下 SQL Server的系統(tǒng)管理員, sa始終關(guān)聯(lián) dbo數(shù)據(jù)庫用戶,并且沒有為 sa帳號指定口令,應(yīng)盡快地給系統(tǒng)管理員帳戶指定口令。 ? BUILTIN\Administrators是 Windows系統(tǒng)的系統(tǒng)管理員組。 系統(tǒng)管理員登錄帳戶 24 SQL Server 2022 返回本節(jié)首頁 在 Management Studio中能方便地創(chuàng)建、查看、修改、刪除登錄帳戶。 1. 映射 Windows登錄帳戶為 SQL Server登錄帳戶 在 Management Studio中可以將一個 Windows帳戶或一個組映射成 SQL Server登錄帳戶 具體操作: 選擇 “ 服務(wù)器 ” “ 安全性 ” “ 登錄名 ” “ 新建登錄名 ” 使用 Management Studio 管理 SQL Server登錄帳戶 25 SQL Server 2022 使用 Management Studio 管理 SQL Server登錄帳戶 26 SQL Server 2022 在 Management Studio中能方便地創(chuàng)建、查看、修改、刪除登錄帳戶。 SQL Server登錄帳戶 使用 Management Studio 管理 SQL Server登錄帳戶 在 Management Studio中可以將一個 Windows帳戶或一個組映射成 SQL Server登錄帳戶 具體操作: 選擇 “ 服務(wù)器 ” “ 安全性 ” “ 登錄名 ” “ 新建登錄名 ” 27 SQL Server 2022 使用 M