名站网址导航为大家提供关于数据库教程相关的教程网站知识。
想到TDE(Transparent Data Encryption)。sqlserver 巧妙的自关联运用
复制具体相关代码 具体相关代码如下:,private void ChangeDataTable(DataTable dt) { dt.Columns.Add("curprice"); dt.Columns.Add("expandfield,复制具体相关代码 具体相关代码如下:,SELECT '第' CAST(ROW_NUMBER() OVER(PARTITION BY GoodsId ORDER BY audittime DESC) AS VARChAR(10)) ,复制具体相关代码 具体相关代码如下:,WITh _TEMP AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY GoodsId ORDER BY audittime DESC ) AS num2 ,
TDE MSDN 说明:
“透明数据加密”(TDE) 可对数据和日志网站网站文件执行实时 I/O 加密和解密。这种加密使用网站数据库加密密钥 (DEK),该密钥存储在网站数据库引导记录中以供恢复时使用。DEK 是使用存储在 站点服务器的 master 网站数据库中的证书保护的对称密钥,或者是由 EKM 模块保护的非对称密钥。TDE 保护“处于休眠状态”的数据,即数据和日志网站网站文件。它提供了遵从许多法律、法规和各个行业建立的准则的能力。软件开发人员籍此可以使用 AES 和 3DES 加密算法来加密数据,且无需更改现有的应用程序。
其实吸引我的是“无需更改现有的应用程序”,因为我需要加密的库服务于一个非常稳定的系统,而且这样做所有事情DBA可控。
TDE加密体系结构:
ENCRYPTION BY PASSWORD=N'!QAZ2wsx'
GO
--创建基于主密钥的证书。用于保护网站数据库加密密钥(Database Encryption Key)
--DROP CERTIFICATE SDB_Cert
CREATE CERTIFICATE SDB_Cert
WITh SUBJECT=N'Certificate for SecretDB'
go
--使用私钥加密的相关方式备份主密钥的证书
BACKUP CERTIFICATE SDB_Cert
TO FILE=N'C:\SDB_Cert.cer'
WITh PRIVATE KEY
(
FILE =N'C:\SDB_Cert.pvk',
ENCRYPTION BY PASSWORD='!QAZ2wsx'
)
GO
--创建测试库SecretDB
USE master
GO
CREATE DATABASE SecretDB
GO
USE SecretDB
GO
CREATE TABLE SDB_TB
(ID INT,VAL NVARChAR(20));
INSERT INTO SDB_TB
VALUES (1,N'A'),(2,N'B'),(3,N'C');
GO
USE SecretDB
go
--创建网站数据库加密密钥
CREATE DATABASE ENCRYPTION KEY
WITh ALGORIThM=AES_128
ENCRYPTION BY SERVER CERTIFICATE SDB_Cert;
GO
--启用网站数据库加密
USE SecretDB
go
ALTER DATABASE SecretDB SET ENCRYPTION ON
go
--备份SecretDB,用于后续的异机还原测试
USE master
go
BACKUP DATABASE SecretDB TO DISK=N'D:\SecretDB.bak'
go
在完成这些后,SecretDB库已经加密,并且得到其加密后的备份网站网站文件,接下来需要在另台还原这个备份。
我把SecretDB.bak,SDB_Cert.cer,SDB_Cert.pvk拷到别一台机。直接还原的话,会报错。需要创建原来用于加密的证书来还原网站数据库备份。我的目的达到了!
--在异机上恢复SecretDB的备份
USE master
GO
CREATE DATABASE SecretDB
GO
RESTORE DATABASE SecretDB
FROM DISK=N'D:\SecretDB.bak'
WITh REPLACE
GO
--消息 33111,级别 16,状态 3,第 1 行
--找不到指纹为 '0x0106000000000009010000009C529FFD5C7FD72FD0AAE9EDF46C5F69946FFED0' 的站点服务器 证书。
--消息 3013,级别 16,状态 1,第 1 行
--RESTORE DATABASE 正在异常终止。
创建证书并还原。
USE master
GO
CREATE CERTIFICATE SDB_Cert
FROM FILE=N'C:\SDB_Cert.cer'
WITh PRIVATE KEY
(
FILE=N'C:\SDB_Cert.pvk',
DECRYPTION BY PASSWORD=N'!QAZ2wsx'
)
GO
RESTORE DATABASE SecretDB
FROM DISK=N'D:\SecretDB.bak'
WITh REPLACE
GO
总结:
其实在做TDE前应该仔细阅读BOL的说明:ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-ChS/s10de_4deptrbl/html/c75d0d4b-4008-4e71-9a9d-cee2a566bd3b.htm
其中说到:
假如如果使用 TDE 对网站数据库进行加密,备份压缩将无法显著压缩备份存储。
复制不会以加密形式从启用了 TDE 的网站数据库中自动复制数据。假如如果您想保护分发和订阅站点服务器网站数据库,则必须单独启用 TDE。
某些限制和注意事项,会影响TDE的部署和使用。 关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。