偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SQL Server 2008中的加密和密鑰管理

數(shù)據(jù)庫(kù) SQL Server
服務(wù)器級(jí)安全可能是系統(tǒng)管理員最關(guān)心的問(wèn)題,而對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),所有操作都是在生產(chǎn)環(huán)境中完成的。在大多數(shù)情況下,數(shù)據(jù)庫(kù)管理員會(huì)將數(shù)據(jù)庫(kù)細(xì)節(jié)的問(wèn)題留給數(shù)據(jù)庫(kù)開(kāi)發(fā)人員處理,只要開(kāi)發(fā)人員在環(huán)境的限制內(nèi)工作。SQL Server 2008提供了大量確保數(shù)據(jù)庫(kù)安全的功能。

服務(wù)器級(jí)安全可能是系統(tǒng)管理員最關(guān)心的問(wèn)題,而對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),所有操作都是在生產(chǎn)環(huán)境中完成的。在大多數(shù)情況下,數(shù)據(jù)庫(kù)管理員會(huì)將數(shù)據(jù)庫(kù)細(xì)節(jié)的問(wèn)題留給數(shù)據(jù)庫(kù)開(kāi)發(fā)人員處理,只要開(kāi)發(fā)人員在環(huán)境的限制內(nèi)工作。SQL Server 2008提供了大量確保數(shù)據(jù)庫(kù)安全的功能。

數(shù)據(jù)加密

SQL Server 2000 及其早期版本不支持加密存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)。為什么需要加密存儲(chǔ)在安全性良好的數(shù)據(jù)庫(kù)(位于安全地嵌套在最新的防火墻之后的安全服務(wù)器上)中的數(shù)據(jù)?這是因?yàn)橐粋€(gè)重要的、叫做 defense in depth 的舊安全規(guī)范。Defense in depth 的意味著分層防御,即使攻擊者成功打破了最外層防御,他們?nèi)匀恍枰黄埔粚咏右粚拥姆烙拍塬@得成功。在數(shù)據(jù)庫(kù)中,這意味著攻擊者通過(guò)了防火墻和從服務(wù)器到數(shù)據(jù)庫(kù)的 Windows 安全以后,仍然需要進(jìn)行一些惡劣的、野蠻的和強(qiáng)制的黑客攻擊來(lái)解碼您的數(shù)據(jù)。另外,在如今這個(gè)立法保護(hù)數(shù)據(jù)和隱私的大環(huán)境中,數(shù)據(jù)需要加強(qiáng)保護(hù)。

SQL Server 2008 使用對(duì)稱(chēng)密鑰、非對(duì)稱(chēng)密鑰和數(shù)字證書(shū),為各種類(lèi)型的數(shù)據(jù)加密提供了豐富的支持。最出色的是,它為您管理密鑰,而密鑰管理是迄今為止加密中最難的部分。保密是一件很難的事情。

管理員可能至少需要管理圖10所示層次結(jié)構(gòu)中的上級(jí)密鑰。數(shù)據(jù)庫(kù)管理員需要理解服務(wù)器級(jí)的服務(wù)主密鑰和數(shù)據(jù)庫(kù)級(jí)的數(shù)據(jù)庫(kù)主密鑰。每一個(gè)密鑰都保護(hù)其子密鑰,子密鑰又保護(hù)其子密鑰,從樹(shù)形結(jié)構(gòu)圖依次向下。密碼保護(hù)對(duì)稱(chēng)密鑰或證書(shū)時(shí)例外,這是 SQL Server 使用戶(hù)管理自己的密鑰,以及負(fù)責(zé)保密密鑰的方法。

圖1

圖 1:SQL Server 2008 中的加密密鑰層次結(jié)構(gòu)

注意:Microsoft 不推薦直接使用證書(shū)或非對(duì)稱(chēng)密鑰加密數(shù)據(jù)。非對(duì)稱(chēng)密鑰加密的速度很慢,并且使用此機(jī)制保護(hù)的數(shù)據(jù)量有限(這取決于密鑰模數(shù)的大小)??梢允褂妹艽a,而不是數(shù)據(jù)庫(kù)主密鑰保護(hù)證書(shū)和非對(duì)稱(chēng)密鑰。

服務(wù)主密鑰是一個(gè)規(guī)定 SQL Server 中所有密鑰和證書(shū)的密鑰。它是 SQL Server 在安裝期間自動(dòng)創(chuàng)建的對(duì)稱(chēng)密鑰。顯然,它是一個(gè)至關(guān)重要的密鑰,因?yàn)槿绻嗣荑€泄露了,那么攻擊者最終將解碼服務(wù)中由 SQL Server 管理的每個(gè)密鑰。Windows 中的數(shù)據(jù)保護(hù) API (Data Protection API, DPAPI) 保護(hù)服務(wù)主密鑰。

SQL Server 為您管理服務(wù)主密鑰。雖然您可以對(duì)其執(zhí)行維護(hù)任務(wù),將其轉(zhuǎn)存到一個(gè)文件中,重新生成它,以及從文件中將其還原。不過(guò),大多數(shù)情況下,無(wú)需對(duì)密鑰做任何更改。備份服務(wù)主密鑰以防止密鑰損壞對(duì)于管理員來(lái)說(shuō)是明智的選擇。

在數(shù)據(jù)庫(kù)范圍內(nèi),數(shù)據(jù)庫(kù)主密鑰是數(shù)據(jù)庫(kù)中所有密鑰、證書(shū)和數(shù)據(jù)的根加密對(duì)象。每個(gè)數(shù)據(jù)庫(kù)都有惟一的主密鑰;嘗試創(chuàng)建第二個(gè)密鑰時(shí),會(huì)出現(xiàn)錯(cuò)誤提示。必須在使用前通過(guò) CREATE MASTER KEY Transact-SQL 語(yǔ)句和用戶(hù)提供的密碼創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)主密鑰:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'EOhnDGS6!7JKv'

SQL Server 使用由密碼和服務(wù)主密鑰派生出來(lái)的三重 DES 密鑰加密密鑰。第一個(gè)副本存儲(chǔ)在數(shù)據(jù)庫(kù)中,第二個(gè)存儲(chǔ)在主數(shù)據(jù)庫(kù)中。由于服務(wù)主密鑰保護(hù)數(shù)據(jù)庫(kù)主密鑰,因此可能在需要時(shí)由SQL Server 自動(dòng)加密數(shù)據(jù)庫(kù)主密鑰。最終應(yīng)用程序或用戶(hù)無(wú)需使用密碼顯式打開(kāi)主密鑰,這是層次結(jié)構(gòu)保護(hù)密鑰的主要優(yōu)勢(shì)。

分離一個(gè)存在現(xiàn)有主密鑰的數(shù)據(jù)庫(kù),并將其移動(dòng)到另一個(gè)服務(wù)器上是一個(gè)難題。問(wèn)題在于新服務(wù)器的服務(wù)主密鑰與舊服務(wù)器的服務(wù)主密鑰不同。因此,服務(wù)器不能自動(dòng)解密數(shù)據(jù)庫(kù)主密鑰??梢酝ㄟ^(guò)使用加密密碼打開(kāi)數(shù)據(jù)庫(kù)主密鑰,然后使用 ALTER MASTER KEY 語(yǔ)句以新的服務(wù)主密鑰對(duì)其加密的方法避開(kāi)這個(gè)問(wèn)題。否則,總是需要顯式打開(kāi)數(shù)據(jù)庫(kù)主密鑰以后才能使用。

如果存在數(shù)據(jù)庫(kù)主密鑰,那么開(kāi)發(fā)人員就可以使用它創(chuàng)建三種類(lèi)型中的任何一種密鑰,具體取決于加密所需求的類(lèi)型:

非對(duì)稱(chēng)密鑰,使用公鑰/私鑰對(duì)進(jìn)行公鑰加密

對(duì)稱(chēng)密鑰,用于在同一個(gè)密鑰分別加密和解密數(shù)據(jù)的方面共享秘密

證書(shū),實(shí)質(zhì)上用于包裝公鑰

由于所有加密選項(xiàng)及其已經(jīng)深層集成于服務(wù)器和數(shù)據(jù)庫(kù)中,因此現(xiàn)在加密是將防御的最終層添加到數(shù)據(jù)的可行方法。然而,需明智使用工具,因?yàn)榧用芙o服務(wù)器增加了大量的處理開(kāi)銷(xiāo)。

透明數(shù)據(jù)加密

在 SQL Server 2005 中,可以使用數(shù)據(jù)庫(kù)引擎加密功能,通過(guò)編寫(xiě)自定義 Transact-SQL 加密數(shù)據(jù)庫(kù)中的數(shù)據(jù)。SQL Server 2008 引入了透明的數(shù)據(jù)加密,改進(jìn)了這種狀況。
透明數(shù)據(jù)加密在數(shù)據(jù)庫(kù)級(jí)執(zhí)行所有加密操作,這消除了應(yīng)用程序開(kāi)發(fā)人員創(chuàng)建自定義代碼來(lái)加密和解密數(shù)據(jù)的需要。數(shù)據(jù)在寫(xiě)入磁盤(pán)時(shí)被加密,在從磁盤(pán)讀取時(shí)解密。通過(guò)使用 SQL Server 透明地管理加密和解密,就可以在不改變現(xiàn)有應(yīng)用程序的情況下確保數(shù)據(jù)庫(kù)中業(yè)務(wù)數(shù)據(jù)的安全,如圖 11 所示。

圖2

圖 2:透明數(shù)據(jù)加密

數(shù)據(jù)庫(kù)加密密鑰(Database Encryption Key,DEK)用于執(zhí)行加密和解密操作,該DEK存儲(chǔ)在數(shù)據(jù)庫(kù)啟動(dòng)記錄中,以便在恢復(fù)過(guò)程中使用。可以使用服務(wù)主密鑰(Service Master Key)或硬件安全模塊(Hardware Security Module,HSM)保護(hù) DEK。HSM 通常是 USB 設(shè)備或智能卡,因?yàn)椴灰妆槐I或丟失。

#p#

擴(kuò)展的密鑰管理

隨著法規(guī)遵從性需求的不斷增長(zhǎng)以及對(duì)數(shù)據(jù)隱私的整體關(guān)注,越來(lái)越多的組織將加密用作提供深層防御解決方案的手段。隨著組織越來(lái)越多地使用加密和密鑰來(lái)保護(hù)數(shù)據(jù),密鑰管理也變得更加復(fù)雜。一些高安全性數(shù)據(jù)庫(kù)要使用數(shù)千個(gè)密鑰,并且必須部署一個(gè)系統(tǒng)來(lái)存儲(chǔ)、注銷(xiāo)和重新生成這些密鑰。而且,應(yīng)該將這些密鑰與數(shù)據(jù)分開(kāi)存儲(chǔ)以增強(qiáng)安全性。

SQL Server 2008 為第三方供應(yīng)商的使用公開(kāi)了加密功能。這些解決方案可以與 SQL Server 2005 和 SQL Server 2008 數(shù)據(jù)庫(kù)無(wú)縫地一起工作并提供了企業(yè)級(jí)專(zhuān)用密鑰管理。這將密鑰管理工作負(fù)載從 SQL Server 轉(zhuǎn)移到了專(zhuān)用密鑰管理系統(tǒng)。

SQL Server 2008 中擴(kuò)展的密鑰管理還支持使用 HSM 提供密鑰與數(shù)據(jù)的物理分離。

代碼模塊簽名

在 SQL Server 中提供加密的一個(gè)好處就是它提供了使用證書(shū)對(duì)代碼模塊(存儲(chǔ)過(guò)程、函數(shù)、觸發(fā)器和事件通知)進(jìn)行數(shù)字簽名的能力。這提供了對(duì)數(shù)據(jù)庫(kù)表和其他對(duì)象訪(fǎng)問(wèn)的更細(xì)粒度的控制。像加密數(shù)據(jù)一樣,您使用證書(shū)中的私鑰簽名代碼。其結(jié)果是在該經(jīng)過(guò)簽名的代碼模塊中使用的表只能通過(guò)該代碼訪(fǎng)問(wèn)并且不允許在代碼模塊之外。換句話(huà)說(shuō),只能使用已經(jīng)用于簽名該模塊的證書(shū)獲得對(duì)該表的訪(fǎng)問(wèn)。

對(duì)于存儲(chǔ)過(guò)程而言,效果也是一樣的。例如,如果有完整的所有權(quán)鏈,您可以謹(jǐn)慎控制哪些用戶(hù)獲得該過(guò)程的 EXECUTE 權(quán)限,并且可以拒絕他們對(duì)基礎(chǔ)表的直接訪(fǎng)問(wèn)。但這在過(guò)程的所有權(quán)鏈被破壞或執(zhí)行動(dòng)態(tài) SQL 時(shí)不起作用,此時(shí)要求執(zhí)行該過(guò)程的用戶(hù)擁有對(duì)基礎(chǔ)表的權(quán)限。實(shí)現(xiàn)同樣效果的另一種方式是使用 EXECUTE AS,但這改變了過(guò)程執(zhí)行的安全上下文。這可能不是理想的情況,例如,需要在表中記錄實(shí)際使該過(guò)程運(yùn)行的用戶(hù)時(shí)(沒(méi)有要求將用戶(hù)名作為過(guò)程的參數(shù))。

簽名代碼模塊的另一個(gè)好處就是防止對(duì)代碼模塊作出未經(jīng)授權(quán)的更改。像其他經(jīng)過(guò)數(shù)字簽名的文檔一樣,在代碼改變時(shí),證書(shū)將失效。代碼不在證書(shū)上下文中執(zhí)行,因此任何被提供了證書(shū)訪(fǎng)問(wèn)權(quán)限的對(duì)象都將不可訪(fǎng)問(wèn)。

要繼續(xù)訪(fǎng)問(wèn)它們,需要?jiǎng)?chuàng)建一個(gè)證書(shū),將該證書(shū)與新用戶(hù)關(guān)聯(lián)并使用該證書(shū)簽名過(guò)程。授予該用戶(hù)執(zhí)行該存儲(chǔ)過(guò)程必要的任何權(quán)限。實(shí)質(zhì)上,已經(jīng)將該用戶(hù)作為次級(jí)身份標(biāo)識(shí)添加到了存儲(chǔ)過(guò)程安全上下文中。然后,授予需要執(zhí)行該過(guò)程的任何用戶(hù)或角色執(zhí)行權(quán)限。以下代碼展示了這些步驟。假設(shè)您想要簽名 mySchema.GetSecretStuff 過(guò)程,并且所有引用的對(duì)象已經(jīng)存在于數(shù)據(jù)庫(kù)中:

CREATE CERTIFICATE certCodeSigning
ENCRYPTION BY PASSWORD = 'cJI%V4!axnJXfLC'
WITH SUBJECT = 'Code signing certificate'
GO

-- Sign the stored procedure
ADD SIGNATURE TO mySchema.GetSecretStuff BY CERTIFICATE certCodeSigning
WITH PASSWORD = 'cJI%V4!axnJXfLC'
GO

-- Map a user to the certificate
CREATE USER certUser FOR CERTIFICATE certCodeSigning
GO

--Assign SELECT permissions to new certUser
GRANT SELECT ON SocialSecurity TO certUser
GO

-- Grant execute permission to the user who will run the code
GRANT EXECUTE ON mySchema.GetSecretStuff TO ProcedureUser
GO

 

現(xiàn)在只有明確授予對(duì)該存儲(chǔ)過(guò)程具有 EXECUTE 權(quán)限的用戶(hù)能夠訪(fǎng)問(wèn)該表的數(shù)據(jù)。

【編輯推薦】

  1. SQL Server 2008數(shù)據(jù)集成服務(wù)簡(jiǎn)介
  2. 在SQL Server 2008中管理報(bào)表服務(wù)
  3. 利用SQL Server 2008進(jìn)行自動(dòng)化管理
責(zé)任編輯:yangsai 來(lái)源: MSDN
相關(guān)推薦

2011-03-14 15:06:49

SQL Server 安全

2019-08-27 15:29:11

2011-03-15 09:51:09

2011-03-14 10:38:10

SQL Server非對(duì)稱(chēng)密鑰加密

2011-08-19 11:26:41

SQL Server 主密鑰

2009-02-16 17:03:57

管理開(kāi)發(fā)效能

2011-03-10 15:03:40

SQL Server主密鑰

2009-04-16 17:11:39

管理報(bào)表配置報(bào)表SQL Server

2009-04-16 18:15:19

動(dòng)作審核審核活動(dòng)SQL Server

2009-04-16 17:44:31

2011-05-24 13:39:49

SQL Server

2011-03-29 13:10:56

SQL Server

2011-03-16 08:42:22

SQL Server證書(shū)加密

2011-03-03 10:45:51

2011-03-18 09:11:14

SQL Server透明加密

2012-07-25 09:21:42

公共云數(shù)據(jù)地址云密鑰

2009-02-16 17:18:31

恢復(fù)備份模式

2012-04-06 10:13:08

SQLSQL Server

2010-10-14 09:32:52

SQL Server

2012-04-16 09:55:38

SQL Server
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)