久久精品国产免费-久久精品国产免费高清-久久精品国产免费观看99-久久精品国产免费中文-久久精品国产欧美

企業(yè)動態(tài)
行業(yè)資訊

如何通過加密保護SQL Server敏感數(shù)據(jù)

鈴……我的手機鈴聲急促地響起來,領(lǐng)導(dǎo)在電話中語氣沉重的告訴我,CRM系統(tǒng)所使用的數(shù)據(jù)庫被人做了分離以及重新附加的操作,這就意味著數(shù)據(jù)庫文件存在被復(fù)制的可能,這無疑是一個晴天霹靂的壞消息。

?

我所在的公司是國內(nèi)一家比較大的汽車銷售公司,這些數(shù)據(jù)一旦失竊或是泄露出去將給企業(yè)帶來不可估量的損失。公司在第一時間進行監(jiān)控及審核排查,另一方面要求信息技術(shù)部門立即著手加強數(shù)據(jù)安全管理。還好我們使用的是SQL Server數(shù)據(jù)庫,從SQL Server2005開始有一個新特性——內(nèi)置數(shù)據(jù)加密的功能。該功能實現(xiàn)了完整的加密基礎(chǔ)結(jié)構(gòu),不需要再借此其他工具就可以實現(xiàn)完整的加密、解密操作。利用好此功能,即使存儲設(shè)備失竊也不用擔(dān)心數(shù)據(jù)泄露的問題。


首先看一下數(shù)據(jù)庫加密體系結(jié)構(gòu)。整個加密體系看起來挺復(fù)雜,但其實很簡單,這個加密體系分為多個加密級別,如下圖所示:

?


?
第一個級別:Windows級別。主要使用的是Windows的DPAPI(數(shù)據(jù)保護API)使用的用戶的憑據(jù),也就是使用用戶的密碼來對需要保護的對象進行加密的一種方法。在這里主要是使用Windows級別的用戶憑據(jù)對第二個級別也就是SQL Server服務(wù)器級別進行加密。


第二個級別:SQL Server的服務(wù)器實例級別。這一個層次有一個服務(wù)主密鑰,但是這個服務(wù)主密鑰必須使用DPAPI(也就是第一個級別的用戶憑據(jù))進行加密。而這個服務(wù)主密鑰又用于對第三個級別——數(shù)據(jù)庫主密鑰進行加密,也就是說上層必須為下層服務(wù)。


第三個級別:主數(shù)據(jù)庫級別。存在一個數(shù)據(jù)庫主密鑰,它可以加密數(shù)據(jù)庫中的其他對象,對稱密鑰不使用數(shù)據(jù)庫主密鑰加密,我們從圖中可以看出來,對稱密鑰使用證書,非對稱密鑰或是指定的密碼加密,同時又被第二級別服務(wù)主密鑰所保護。


第四個級別:用戶數(shù)據(jù)庫級別。當(dāng)數(shù)據(jù)庫中有了數(shù)據(jù)庫主密鑰后就可以使用數(shù)據(jù)庫主密鑰來保護數(shù)據(jù)庫中的證書和非對稱密鑰,再使用對稱密鑰來保護其他對稱密鑰和數(shù)據(jù),當(dāng)然也可以直接使用證書和非對稱密鑰來保護數(shù)據(jù)。?


下面我們來逐個看一下各種密鑰:

?

服務(wù)主密鑰:在安裝SQL Server時自動生成的一個密鑰,是128BIT的3DES密鑰。它的作用是,直接或者間接地保護體系中的其他密鑰。使用SQL Server的配置管理器更改服務(wù)賬戶,能夠自動完成加密和解密的過程。服務(wù)主密鑰是安裝時自動生成的,所以我們不能創(chuàng)建,但是我們可備份和還原服務(wù)主密鑰。


備份:Backup service master key to? file=’c:\bak\smk.bak’ encryption by password=’DUfei2008’

?

備份的時候必須使用一個強密碼,因為如果要是沒有密碼保護的話,那么其他人很容易進行還原,得到服務(wù)主密鑰。

?

還原:必須給定備份時的密碼:Restore service master? key from file=’c:\bak\smk.bak’ decryption by password=’DUfei2008’?

?

下面我們來看一下數(shù)據(jù)庫主密鑰,有三點需要注意:?

?

1、數(shù)據(jù)庫主密鑰不會自己生成,必須需要管理員手動創(chuàng)建;
2、由密碼保護和服務(wù)主密鑰同時保護;
3、是128bit的3DES密鑰。

?

創(chuàng)建語法:Create master key encryption by password=’DUfei2008’ ——由指定的密碼和服務(wù)主密鑰保護。

?

可以使用密碼來解開,如分離后復(fù)制到另一個服務(wù)器上,因為使用不同的服務(wù)賬戶,那么服務(wù)主密鑰不同,所以就不能解密使用服務(wù)主密鑰加密的數(shù)據(jù)庫主密鑰。這個時候可以使用加密時所提供的密碼來解開數(shù)據(jù)庫主密鑰。

?

我們在創(chuàng)建數(shù)據(jù)庫主密鑰的時候,會自動使用服務(wù)主密鑰進行保護,使用時會自動使用服務(wù)主密鑰解開數(shù)據(jù)庫主密鑰,當(dāng)然我們也可以刪除服務(wù)主密鑰對數(shù)據(jù)庫主密鑰的保護,那么在每一次打開的時候必須手動打開數(shù)據(jù)庫主密鑰,因為沒有了服務(wù)主密鑰那么就必須指定在加密時所指定的口令。

?

打開數(shù)據(jù)庫主密鑰語法:Open master key decryption by password=’DUfei2008’

?

使用完畢后關(guān)閉數(shù)據(jù)庫主密鑰:Close master key?

?

也可以修改數(shù)據(jù)庫主密鑰,重新生成數(shù)據(jù)庫主密鑰,這是很耗資源的一個工作,因為舊的數(shù)據(jù)庫主密鑰會解密現(xiàn)有數(shù)據(jù),然后使用新的數(shù)據(jù)庫主密鑰進行加密。管理員可以根據(jù)安全性和適合場合來決定是使用服務(wù)主密鑰還是刪除服務(wù)主密鑰。管理員還可以通過目錄視圖Sys.symmetric_keys、Sys.databases 查看數(shù)據(jù)庫主密鑰狀態(tài)。?

?

備份數(shù)據(jù)庫主密鑰:Backup master key to file=’c:\bak\dmk.bak’ encryption by password=’DUfei2008’?

?

還原數(shù)據(jù)庫主密鑰:Restore master key from file=’c:\bak\dmk.bak’ decryption by password=’舊密碼’ encryption by password=’新密碼’?

?

以上對數(shù)據(jù)庫加密體系進行了一個簡單的介紹,下面咱們來看一下使用數(shù)據(jù)庫加密保護數(shù)據(jù)。要保護數(shù)據(jù),必須有一個可以保護數(shù)據(jù)的密鑰,這個密鑰有三種,對稱密鑰,非對稱密鑰和證書(公鑰加密,私鑰解密),有了密鑰才可能去對數(shù)據(jù)進行加密,所以我們還得先來看一下如何創(chuàng)建相應(yīng)的密鑰,也就是如何創(chuàng)建證書,創(chuàng)建對稱密鑰,創(chuàng)建非對稱密鑰,然后再利用這些密鑰對數(shù)據(jù)進行加密。?

?

咱們先看一下創(chuàng)建證書,在此我使用的是自簽名的證書(也可以使用現(xiàn)有的CA進行證書的頒發(fā))。

?

創(chuàng)建自簽名證書語法:

?

Create certificate證書名 encryption by password=’密碼’?? with subject=’主題’,Start_date=’起始日期’ expiry_data=’到期日期’?

?

說明:其中這個口令用于保護我們的私鑰;主題,就是一個描述信息(無所謂)有效期在這里不是很嚴(yán)格,需要結(jié)合程序或者存儲過程來進行檢查。相關(guān)更改證書的操作:更改用于加密私鑰的密碼或者是刪除私鑰。第一種情況適合于口令泄露的情況,不安全;第二種情況適合于只加密不解密的情況,很常見如一些注冊用戶密碼,不希望管理看到。看不到原文,但是用戶一樣可以使用。?

?

更改私鑰的密碼語法: alter certificate cert1 with private key? (decryption by password='DUfei2008',encryption by password='DUfei2008')

?

備份證書(導(dǎo)出證書):Backup certificate 證書名to file=’c:\bak\mycert.cer’ with private key (decryption by? password=’舊口令’,file=’c:\bak\mycertpvt’,encryption?? by password=’私鑰的口令’)

?

還原(導(dǎo)入): 還原證書在此不用restore而是create導(dǎo)入,create certificate cert1 from? file='c:\bak\mycert.cer' with? private key (file='c:\bak\mypvt'? ,decryption by password='DUfei2008',encryption by password='DUfei2008' )

?

刪除證書的私鑰:? Alter certificate證書名remove private key

?

增加私鑰: alter certificate cert1 with private key (file='c:\bak\mypvt', decryption by? password='DUfei2008',encryption by password='DUfei2008')?

?

另外還要用到一些與證書相關(guān)的函數(shù):?

?

Encryptbycert(證書ID,加密文本)用于加密;Decryptbycert ( 證書ID,密文,加密口令)用于解密;Cert_id(證書名)得到證書ID,因為加密,解密使用的都是ID。?

?

下面咱們就看一下具體的實例:

?

咱們就以dufei數(shù)據(jù)庫為例,先看一下服務(wù)主密鑰。咱們前面已經(jīng)介紹了,它不是咱們手動創(chuàng)建出來的,在安裝SQL SERVER時就已經(jīng)存在了。我們做的只能是備份和還原。

?

備份: backup service master key to? file='c:\bak\smk.bak' encryption by password='DUfei2008'

?

還原:restore service master key from? file='c:\bak\smk.bak' decryption by password='DUfei2008'

?

生成新的服務(wù)主密鑰, 適應(yīng)于更改服務(wù)帳戶的情況,一般推薦使用配置管理器更改服務(wù)帳戶:alter service master key regenerate

?

---------數(shù)據(jù)庫主密鑰---

?

1)為當(dāng)前dufei數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫主密鑰
use dufei
create?? master key encryption by password='DUfei2008'

?

2)查看數(shù)據(jù)庫加密狀態(tài)
select * from sys.databases where? name='dufei'

?

3)? 查看數(shù)據(jù)庫主密鑰的信息
select * from sys.symmetric_keys???

?

4)備份數(shù)據(jù)庫主密鑰
backup master key to file='c:\bak\dmk.bak'? encryption by password='DUfei2008'

?

默認(rèn)情況下,創(chuàng)建數(shù)據(jù)庫主密鑰會被服務(wù)主密鑰所保護的,但有的時候我們不希望數(shù)據(jù)庫主密鑰使用服務(wù)主密鑰保護,那么就可以刪除服務(wù)主密鑰對數(shù)據(jù)庫主密鑰的保護。我們先不刪除,我們來利用數(shù)據(jù)庫主密鑰創(chuàng)建非對稱密鑰,可以直接創(chuàng)建。

?

Create asymmetric key asy_key1 with? algorithm=RSA_1024 --成功

?

語法:Alter master key drop encryption by service? master key

?

再次查看數(shù)據(jù)庫的加密狀態(tài):Select * from sys.databases where name=’dufei’

?

--主要是看is_master_key_encrypted_by_server? 已經(jīng)是0了。說明不被服務(wù)主密鑰保護了。

?

此時我們再創(chuàng)建一個非對稱密鑰,則不成功,Create asymmetric key asy_key2 with? algorithm=RSA_1024 --失敗了,因為這個時候數(shù)據(jù)庫主密鑰不會自動打開了,必須打開數(shù)據(jù)庫主密鑰再創(chuàng)建。

?

Open master key decryption by password=’DUfei2008’

?

Select * from sys.openkeys? 顯示打開的數(shù)據(jù)庫主密鑰,然后再創(chuàng)建非對稱密鑰則可以成功,如下:

?

Create asymmetric key asy_key2 with?? algorithm=RSA_1024 ---則顯示成功。用戶也可以通過圖形界面查看一下,非對稱密鑰中已經(jīng)出現(xiàn)了我們所創(chuàng)建的密鑰。這個實驗是告訴大家,如果你刪除了服務(wù)主密鑰對數(shù)據(jù)庫主密鑰的保護,那么每次必須手動打開數(shù)據(jù)庫主密鑰,挺麻煩的,所以我們還可以恢復(fù)服務(wù)主密鑰對數(shù)據(jù)庫主密鑰的保護。

?

1)?? 恢復(fù)服務(wù)主密鑰對數(shù)據(jù)庫主密鑰的保護
Alter master key add encryption by service? master key

?

2)?? 關(guān)閉數(shù)據(jù)庫主密鑰
Close master key?

?

下面咱們來看看使用證書對數(shù)據(jù)進行加密

?

-----------------證書對數(shù)據(jù)加密---------------

?

1)生成自簽名證書
????? --使用指定口令保護私鑰
create certificate cert1 encryption by? password='DUfei2008' with subject='test', start_date='01/01/2009',expiry_date='01/01/2010'
--使用數(shù)據(jù)庫主密鑰保護私鑰
create certificate cert2 with subject='test',start_date='01/01/2009',expiry_date='01/01/2010'?

?

2) 查看證書信息
select * from sys.certificates?

?

3)修改私鑰的口令
alter certificate cert1 with private key? (decryption by password='DUfei2008',encryption by password='DUfei2008')?

?

4)備份證書
backup certificate cert1 to? file='c:\bak\mycert.cer' with private key? (decryption by? password='DUfei2008',file='c:\bak\mypvt',encryption by password='DUfei2008')

?

5)刪除私鑰
alter certificate cert1 remove private key?

?

6)增加私鑰
alter certificate cert1 with private key (file='c:\bak\mypvt', decryption by password='DUfei2008',encryption? by password='DUfei2008')?

?

7)刪除證書
drop certificate cert1

?

8) 還原證書
create certificate cert1 from? file='c:\bak\mycert.cer' with? private key (file='c:\bak\mypvt'? ,decryption by password='DUfei2008',encryption by password='DUfei2008')
????? 接下來可以使用下面的小腳本來體驗一下加密的結(jié)果。
declare @atext varchar(100),@acipher? varbinary(max)set @atext='dufei hao!'
set? @acipher=encryptbycert(cert_id('cert1'),@atext)
select @acipher
????? select? cast(decryptbycert(cert_id('cert1'),@acipher,N'DUfei2008')as varchar(200) )

?

以上介紹的是SQL Server中實現(xiàn)數(shù)據(jù)加密過程,至于非對稱加密、對稱加密、混合加密的操作過程基本相同,甚至在操作過程還可以引入驗證因子防止繞過數(shù)據(jù)加密的攻擊等,使用好數(shù)據(jù)加密功能,就不用再擔(dān)心數(shù)據(jù)丟失問題了,安全無小事,時刻不能大意。

?

啟明星辰公司數(shù)據(jù)庫審計專家點評

?

本案例對加密方案介紹得十分細(xì)致。為了保障數(shù)據(jù)安全,除了完善的加密措施,還要考慮嚴(yán)格的授權(quán)控制,以防止越權(quán)訪問和權(quán)限濫用。另外,對數(shù)據(jù)庫的所有訪問要做到可事后追溯,有據(jù)可查,因此需要考慮部署獨立的審計產(chǎn)品。


?
版權(quán)所有:鄭州三中網(wǎng)安科技有限公司 豫ICP備2020036495號-1 ?? 豫公網(wǎng)安備 41019702002241號 | 站點地圖 | 人才招聘 | 聯(lián)系我們
主站蜘蛛池模板: 一区二区不卡视频 | 黄色在线观看www | 在线观看视频一区二区三区 | 国产精品怕怕怕视频免费 | 日本特黄特色大片免费视频观看 | 欧美日韩视频精品一区二区 | 中国做爰国产精品视频 | 免费看在线爱爱小视频 | 亚洲综合图色国模40p | 麻豆视频免费看 | 国产成人精品免费视频大全办公室 | 国产精品麻豆久久99 | 婷婷 综合 | 美国一级特级毛片片aa视频 | 亚洲视频免费在线 | www.爱色| 玖玖中文字幕 | 久青草视频免费视频播放线路1 | 特黄特色大片免费视频大全 | 国产成人爱片免费观看视频 | 日本 亚洲 欧美 | 91天堂97年嫩模在线观看 | 国产精品福利一区 | 亚洲成人在线播放 | 国产精品久久久久久吹潮 | 中文字幕亚洲不卡在线亚瑟 | 在线视频精品免费 | 性刺激视频在线观看免费 | 亚洲欧洲精品视频在线观看 | 4444在线网站 | 久久不卡视频 | 欧美女同视频激情 | 久久精品亚洲综合一品 | 精品国内一区二区三区免费视频 | 99亚洲| 一级毛片高清大全免费观看 | 免费看黄色网页 | 久久黄色大片 | 国产大量情侣高清视频 | 免费国外性视频网站 | 精品日韩二区三区精品视频 |