【正文】
ion [ ( column [ ,...n ] ) ] [ ,...n ] [ ON [ class :: ] securable ] TO principal [ ,...n ] [ CASCADE] [ AS principal ] 【 例 129】拒絕用戶 U1 對教師表的 SELECT權(quán)限。 DENY SELECT ON 教師表 TO U1。 【 例 1210】拒絕 U2對存儲過程 usp_GetAllStudents的EXECUTE權(quán)限。 DENY EXECUTE ON usp_GetAllStudents TO U2 否認(rèn)權(quán)限 SQL Server 2023 SQL Server 2023內(nèi)置的加密機制 Microsoft SQL Server 2023系統(tǒng)不是簡單的提供一些加密函數(shù),而是把成熟的數(shù)據(jù)安全技術(shù)引進(jìn)到數(shù)據(jù)庫中,形成了一個清晰的內(nèi)置加密層次結(jié)構(gòu)。 SQL Server 2023 SQL Server 2023 采用的是一種分層 的授權(quán)和加密策略 ,越頂層的授權(quán), 其權(quán)限越大。 權(quán)限分層結(jié)構(gòu) SQL Server 2023的安全層次結(jié)構(gòu) 主體 S e c u ra b les W in d o w s 級 W i n d o w s 組、域登錄賬戶、 本地登錄賬戶 S QL S e rv e r 級 固定服務(wù)器角色 SQ L Serv er 登錄賬戶 M icro so f t S QL S e rv e r SQ L Serv er 登錄名、端點、證書 數(shù)據(jù)庫級 固定數(shù)據(jù)庫角色 數(shù)據(jù)庫用戶 應(yīng)用程序角色 組 數(shù)據(jù)庫 應(yīng)用程序角色、程序集、 非對稱密匙、證書、約定、全文目錄、消息類型、 遠(yuǎn)程服務(wù)器綁定、角色、 路由、服務(wù)、對稱密匙、 用戶、架構(gòu)等 架構(gòu) 架構(gòu) 架構(gòu) 表、視圖、 函數(shù)、過程、隊列、同義詞、類型、 ML 架構(gòu)集合 架構(gòu) 架構(gòu) 架構(gòu) 數(shù)據(jù)庫 數(shù)據(jù)庫 數(shù)據(jù)庫 SQL Server 2023 數(shù)據(jù)加密 在加密技術(shù)領(lǐng)域,根據(jù)加密密鑰和解密密鑰是否相同,可以把加密方式分為對稱加密機制和非對稱加密機制。 SQL Server 2023 數(shù)據(jù)加密分層結(jié)構(gòu) W in d o w s 級 服務(wù)主密鑰用 D P A PI 加密 S QL S e rv e r 級 服務(wù)主密鑰 數(shù)據(jù)庫主密鑰 證書 非對稱密鑰 對稱密鑰 對稱密鑰 對稱密鑰 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù)庫級 SQL Server 2023 補充:加密表中的數(shù)據(jù) 創(chuàng)建數(shù)據(jù)庫主密鑰 USE 學(xué)生成績管理 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 39。7587987hxJ94467GRafdsaf5y01478dDkjdahadfafs7r$$1946kcj$n44ncjhdlj39。 GO SQL Server 2023 創(chuàng)建證書,該證書用來加密對稱密鑰 CREATE CERTIFICATE nameInfo WITH SUBJECT = 39。The student name information39。, START_DATE = 39。11/11/202339。 GO 創(chuàng)建一個對稱密鑰 CREATE SYMMETRIC KEY name_Title_info WITH ALGORITHM = des ENCRYPTION BY CERTIFICATE nameInfo GO SQL Server 2023 修改 表結(jié)構(gòu),鄭家一個列用來存放加密數(shù)據(jù) ALTER TABLE Student ADD nameTitle NVARCHAR(128) NULL GO 執(zhí)行加密,使用 OPEN SYMMETRIC KEY打開對稱密鑰,使用EncryptBykey 函數(shù)加密數(shù)據(jù) OPEN SYMMETRIC KEY name_Title_info DECRYPTION BY CERTIFICATE nameInfo UPDATE Student SET nameTitle = EncryptByKey(Key_GUID(39。name_Title_info39。), Sname) GO SQL Server 2023 查看 關(guān)閉 CLOSE SYMMETRIC KEY name_Title_info GO 刪除 DROP SYMMETRIC KEY name_Title_info GO SQL Server 2023 補充 —數(shù)據(jù)加密 CREATE SYMMETRIC KEY key1 WITH ALGORITHM=DES ENCRYPTION BY PASSWORD=39。abc$12339。 GO OPEN SYMMETRIC KEY key1 DECRYPTION BY PASSWORD=39。abc$123‘ DECLARE str NVARCHAR(100),Encrypted VARBINARY(MAX) SET str=N39。要加密的字串 39。 SELECT Encrypted=ENCRYPTBYKEY(KEY_GUID(39。key139。),str) SELEcT ‘ 加密’ =Encrypted ,‘ 解密’ =CAST(DECRYPTBYKEY(Encrypted) AS NVARCHAR(100)) SQL Server 2023 CLOSE SYMMETRIC KEY key1 GO DROP SYMMETRIC KEY key1 GO SQL Server 2023 使用 SQL Server Management Studio工具 除了可以使用 TransactSQL語句執(zhí)行有關(guān)安全的操作之外,使用 SQL Server Management Studio圖形工具也可以完成許多有關(guān)安全管理的操作。 需要注意的是,考慮到性能和安全等原因,大多數(shù)情況下建議使用 TransactSQL語句執(zhí)行相關(guān)的操作。 SQL Server 2023 小結(jié) 登錄名:服務(wù)器級上的安全對象。 用戶名:數(shù)據(jù)庫級上的安全對象。 角色:包括服務(wù)器角色和數(shù)據(jù)庫角色。 架構(gòu):數(shù)據(jù)庫級上的安全對象。 SQL Server 2023實現(xiàn)了用戶和架構(gòu)的分離。 SQL Server 2023 管理服務(wù)器安全 SQL Server 2023服務(wù)器的安全建立在對服務(wù)器登錄名和密碼的控制基礎(chǔ)之上,用戶在登錄服務(wù)器時所采用的登錄名和密碼,決定了用戶在成功登錄服務(wù)器后所擁有的訪問權(quán)限。 固定服務(wù)器角色 管理服務(wù)器安全 SQL Server 2023 管理數(shù)據(jù)庫安全 SQL Server 2023對數(shù)據(jù)庫安全的管理,主要是通過對數(shù)據(jù)庫的架構(gòu)、用戶名和角色的管理來實現(xiàn),這是 SQL Server 2023服務(wù)器安全的第二道防線。 數(shù)據(jù)庫架構(gòu)管理 可通過“架構(gòu)-新建”窗口來新建架構(gòu),創(chuàng)建架構(gòu)時,需要指定架構(gòu)的所有者,即登錄名,另外,還可為架構(gòu)設(shè)置數(shù)據(jù)庫的訪問權(quán)限。 數(shù)據(jù)庫用戶名管理 用戶名屬于數(shù)據(jù)庫級的安全對象,用戶使用登錄名和密碼登錄到 SQL Server 2023服務(wù)器上以后,可以使用不同的數(shù)據(jù)庫賬戶來訪問不同的數(shù)據(jù)庫??赏ㄟ^“數(shù)據(jù)庫用戶名-新建”窗口來創(chuàng)建用戶名。另外,在創(chuàng)建登錄名時,系統(tǒng)會自動為數(shù)據(jù)庫映射該登錄名的數(shù)據(jù)庫用戶名,可對該用戶名屬性進(jìn)行修改,但不能再創(chuàng)建與其同名的同一數(shù)據(jù)庫用戶名。 數(shù)據(jù)庫安全與角色管理 SQL Server 2023 當(dāng)多個用戶需要訪問數(shù)據(jù)庫的權(quán)限時, DBA不必為每個用戶單獨授權(quán),而是可以通過數(shù)據(jù)庫角色將這些權(quán)限加以集中,然后將這些數(shù)據(jù)庫角色賦予每個用戶。 ? 固定數(shù)據(jù)庫角色:在數(shù)據(jù)庫級別定義,并存在于每個數(shù)據(jù)庫中,創(chuàng)建數(shù)據(jù)庫用戶名時,系統(tǒng)會自動為新建的數(shù)據(jù)庫用戶名添加固定數(shù)據(jù)庫角色,但也可以在“數(shù)據(jù)庫角色屬性”窗口中為某個指定的固定數(shù)據(jù)庫角色添加角色成員。 ? 自定義數(shù)據(jù)庫角色:固定數(shù)據(jù)庫角色中的權(quán)限都是系統(tǒng)預(yù)先定義好的,DBA或用戶不能進(jìn)行更改。但 DBA或用戶可以根據(jù)具體需要自定義數(shù)據(jù)庫角色,并為其設(shè)置權(quán)限。此外,自定義數(shù)據(jù)庫角色可以嵌套使用。 ? 應(yīng)用程序角色:如果 DBA希望登錄名和數(shù)據(jù)庫用戶只能使用特定的應(yīng)用程序來訪問數(shù)據(jù)庫中的數(shù)據(jù),而不希望他們使用別的應(yīng)用程序,以避免造成對數(shù)據(jù)的破壞,這時可以創(chuàng)建應(yīng)用程序角色。 數(shù)據(jù)庫安全與角色管理 SQL Server 2023 數(shù)據(jù)加密分層結(jié)構(gòu) 數(shù)據(jù)庫安全與角色管理 W in d o w s 級 服務(wù)主密鑰用 D P A PI 加密 S QL S e rv e r 級 服務(wù)主密鑰 數(shù)據(jù)庫主密鑰 證書 非對稱密鑰 對稱密鑰 對稱密鑰 對稱密鑰 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù)庫級 SQL Server 2023