您好,登錄后才能下訂單哦!
這篇文章給大家介紹SQL Server中怎么防止開發(fā)人員獲取敏感數(shù)據(jù),內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
***步,創(chuàng)建數(shù)據(jù)庫主密鑰
CREATE MASTER KEY ENCRYPTION BY PASSWORD ='SysKey' GO
這里創(chuàng)建了數(shù)據(jù)庫主密鑰,比如密碼是'SysKey'。主密鑰只需要創(chuàng)建一次。
第二步,創(chuàng)建證書
CREATE CERTIFICATE MYCERT with SUBJECT = 'My Cert' GO
這里創(chuàng)建了證書MYCERT,證書的元數(shù)據(jù)中的字段為'My Cert'。證書創(chuàng)建一次,以后解密時需要先Open。
第三步,創(chuàng)建對稱密鑰
CREATE SYMMETRIC KEY MYKEY WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE MYCERT; GO
這里基于證書MYCERT創(chuàng)建了密鑰MYKEY,加密算法為AES_256。加密算法有好幾種。
前三步做完之后,我們可以在資源管理器中看到我們的證書和密鑰信息,如下圖所示:
第四步:加密解密有效性測試
我們先通過變量測試加密解密的有效性:
OPEN SYMMETRIC KEY MYKEY DECRYPTION BY CERTIFICATE MYCERT; declare @key varbinary(MAX); set @key=EncryptByKey(key_guid('MYKEY'),'20000.00'); select @key; select convert(varchar(100), DecryptByKey(@key));
在解密之前,要先打開我們定義的密鑰,通過:
OPEN SYMMETRIC KEY NCSK DECRYPTION BY CERTIFICATE NCSC;
這句打開密鑰,如果不先打開密鑰,返回的將會是NULL。
運行參考結果參考下圖:
第五步,準備使用的數(shù)據(jù)
為了描述方便,我們創(chuàng)建一個工資表變量:
declare @Salary table( FName nvarchar(50), FSalary varbinary(MAX));
這里要注意,存放加密數(shù)據(jù)的字段要設置成varbinary類型。
第六步,插入加密數(shù)據(jù)
插入時,要使用函數(shù)EncryptByKey對文本進行加密,通過函數(shù)key_guid獲取密鑰,加密后的數(shù)據(jù)類型為varbinary。
insert into @Salary(FName,FSalary) values ('張三',EncryptByKey(key_guid('MYKEY'),'20000.00')), ('李四',EncryptByKey(key_guid('MYKEY'),'25000.00')), ('王二',EncryptByKey(key_guid('MYKEY'),'30000.00'));
第七步:數(shù)據(jù)讀取
讀取數(shù)據(jù)時需要調(diào)用函數(shù)DecryptByKey解密,通過Convert將解密后的Varbinary轉換成varchar類型。
select *,convert(varchar, DecryptByKey(FSalary)) from @Salary;
完整的處理請參考下圖:
關于SQL Server中怎么防止開發(fā)人員獲取敏感數(shù)據(jù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。