日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 加密 tde_[SQL Server] 利用透明数据加密(TDE)对整个数据库加密

發布時間:2023/12/20 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 加密 tde_[SQL Server] 利用透明数据加密(TDE)对整个数据库加密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

using TDE encrypt SQL Database

前言

最近客戶有需求想避免數據庫(.mdf、.ldf)被偷走時,數據外泄流出

剛好SQL Server的TDE加密功能滿符合需求。

TDE透明數據加密會對數據庫整個加密,防范目標:有人已偷走數據庫,沒有憑證&私𬬭的話,在附加數據庫或還原備份數據庫時就會報錯,而沒辦法看到數據庫里的數據。

一般程序存取數據,或用SSMS進入SQL Server里查詢數據則是正常使用,無須額外設定

不過得留意Standard版的數據庫不支持此功能

支持TDE加密功能的數據庫為SQL Server 2008以上的Developer, Enterprise,Datacenter版。

※2018.3.6追記:發現IBM建議若是SQL Server Standard版的話,可使用Windows內建的EFS加密文件系統來加密.mdf、.bak

在 SQL Server 數據庫上啟用透通數據加密

不過EFS加密防范目標和TDE防范目標有點不同

TDE是假設數據庫已被偷走,避免被存取數據;而EFS是阻止Windows登入使用者偷走數據庫。

采用EFS加密過的文件,想復制偷走的話,有以下途徑:

1.取得加密文件使用者的登入賬密登入Windows,用該身份拿走文件。

2.使用其他身份使用者登入Windows,但要安裝 加密文件使用者的憑證。

3.使用其他身份使用者登入Windows,再用救援軟件還原文件(嗯?還有這招)

如何存參考EFS加密的文件?

針對數據庫如何實踐EFS,已有其它網友撰寫文章:Windows 2012 R2 實踐 EFS 文件系統加密

==============================================================================================================

以下介紹如何對一個數據庫做TDE加密,并且移機到另一臺機器上時,如何把數據庫附加回去。

實踐

開啟數據庫加密功能實踐流程,請見微軟文檔說明的四大步驟(缺少一個備份憑證&私𬬭步驟XD)

我已經有名為“ContosoUniversity”數據庫

本文以它當范例

Step 1:-- 在master DB 建立 master key

USE master;

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1234'; --密碼隨便給,不影響本文作業

--查看建立的master key

select * from sys.symmetric_keys

Where name='##MS_DatabaseMasterKey##'

如果SQL Server中已經有前人建好的Master Key,就繼續沿用,因為再重復建立Master Key會報錯(或把前人的Master Key Drop掉?)

Step 2:--在master DB建立SQL Server憑證

USE master;

GO

CREATE CERTIFICATE MySQLServerCert

WITH SUBJECT = '用來展示TDE功能的憑證'

--查看建立的憑證

Select * from sys.certificates

Where name='MySQLServerCert'

如果憑證名稱和前人建立的憑證名稱重復的話,就另外取個名字吧

Step 3:--在master DB備份SQL Server憑證與私𬬭

USE master;

GO

BACKUP CERTIFICATE MySQLServerCert --要備份的憑證

TO FILE = 'MySQLServerCert.cert' --給一個文件名

WITH PRIVATE KEY --建立私𬬭

(

FILE = 'MySQLPrivateKeyFile.pk', --默認備份位置為(C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATA)

--根據SQL Server版本不同存放的憑證&私𬬭 位置會不一樣

ENCRYPTION BY PASSWORD = 'demoPWD' --這密碼很重要!移機時用得到

);

GO

上面命令執行完畢會產生兩個文件,請妥善保管,數據庫要附加到另一臺機器上時派得上用場。

Step 4:-- 切換到想加密的數據庫,本文為“ContosoUniversity”

USE ContosoUniversity;

GO

--在自己的數據庫上建立 ENCRYPTION KEY

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM = AES_128 --加密算法

ENCRYPTION BY SERVER CERTIFICATE MySQLServerCert; --使用哪個憑證

GO

Step 5: 最后一個步驟,啟用加密功能USE ContosoUniversity;

GO

--利用TDE對整個數據庫加密

ALTER DATABASE ContosoUniversity

SET ENCRYPTION ON;

GO

接著示范,把數據庫(.mdf、.ldf)卸離,移到另一臺機器上執行附加數據庫動作(記得憑證、私𬬭兩個文件也要跟著搬移)

在另一臺機器,文件都放在以下位置

接著另一臺機器也要導入剛剛備份的憑證&金鑰,否則直接附加數據庫會報錯↓

另一臺機器想要附加TDE加密過的數據庫前,得先導入相關憑證&金鑰,SQL語法如下

Step1:-- 在另一臺 SQL Server 建立 master key .

USE master;

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'masterKey2PWD'; --密碼故意跟之前的master key不一樣,沒關系

Go

Step 2:USE master;

GO

-- 以下是重點!

-- 利用之前備份的SQL Server憑證和私𬬭再次建立SQL Server certificate

CREATE CERTIFICATE SQLServerCertAnother --這臺SQL Server的憑證名字故意取不一樣,沒關系

FROM FILE = 'C:Program FilesMicrosoft SQL ServerMSSQL12.SQLEXPRESS2014MSSQLDATAMySQLServerCert.cert' --剛剛備份的憑證

WITH PRIVATE KEY

(

FILE = 'C:Program FilesMicrosoft SQL ServerMSSQL12.SQLEXPRESS2014MSSQLDATAMySQLPrivateKeyFile.pk', --剛剛備份的私𬬭

DECRYPTION BY PASSWORD = 'demoPWD' --密碼必須和備份時指定的密碼一樣

);

GO

Step 3:

如此才能成功附加數據庫(.mdf檔),這很簡單我懶得截圖了XD

結語

如果數據庫想關閉TDE加密功能的話,可以參考老外MSDN討論:

The certificate 'instance' cannot be dropped because it is bound to one or more database encryption key.

語法如下--關閉TDE加密

Use ContosoUniversity

Go

--把數據庫加密功能關閉

ALTER DATABASE ContosoUniversity SET ENCRYPTION OFF

--移除數據庫的ENCRYPTION KEY

DROP DATABASE ENCRYPTION KEY

Use master

Go

/* --查詢哪些數據庫使用SQL Server加密憑證

SELECT db_name(database_id), encryption_state, percent_complete, key_algorithm, key_length

FROM sys.dm_database_encryption_keys

WHERE db_name(database_id) not in('tempdb')

*/

--移除憑證

DROP CERTIFICATE MySQLServerCert

--移除Master Key

DROP MASTER KEY

總結

以上是生活随笔為你收集整理的mysql 加密 tde_[SQL Server] 利用透明数据加密(TDE)对整个数据库加密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。