在 SQL Server 2008 中实施透明数据加密

问题
安全是一个在任何组织中的重大问题。 数据库备份,容易被盗,可以还原任何 SQL Server 实例上。 我们正在通过 SQL Server 2008 中的新功能,我们会发现一个可能有趣一个称为透明数据加密,我们可以使用加密数据库备份。 你能给我们详细的解释我们如何使用这一新功能吗?

解决方案
透明数据加密是它实现补充这是当前可用的 SQL Server 2005 中的行级加密的数据库级加密的 SQL Server 2008 中的新功能。 这会保护数据库访问直接或其他 SQL Server 实例上的数据库备份还原。

在这篇技巧文章中,我们将看看如何实现透明的数据加密,以保护数据库备份。 让我们首先演示如何容易发生数据库备份的安全威胁。 默认情况下,SQL Server 备份不是加密的。 让我们开始通过我的 默认 实例上创建的 罗斯文 数据库的完整备份。

BACKUP DATABASE Northwind 
TO DISK = 'C:/Northwind_unencrypted.bak'
WITH INITSTATS 10

让我们查询特定记录的 罗斯文 数据库。 我们将稍后使用此记录可以查看我们的数据库备份的内容

SELECT FROM dbo.Customers
WHERE ContactName 'Aria Cruz'

在记事本中打开数据库备份和搜索的 'A r i C r u z' (注意字母和"唱腔"和"克鲁斯"之间的三个空格之间的空格,因为这是) Unicode 文本。 观察是可读的文本数据。

由于本机备份都是可读他们很容易的安全风险,因为他们可读取以明文形式。 这样,一个人只是看看您的数据库备份和从文件中检索数据。 更糟糕的是任何人都可以恢复您另一个 SQL Server 实例上的数据库备份。 我们将会显示此过程 shorlty。

让我们我们的 罗斯文 数据库上执行的第一次设置在服务器上的加密的透明的数据加密。 这样做我们在 数据库上创建数据库主密钥

USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD 'mY_P@$$w0rd'

然后,我们创建基于服务器的证书将用于加密数据库

CREATE CERTIFICATE NorthwindCert
WITH SUBJECT 'My DEK Certificate for Northwind database'

然后,我们会为 罗斯文 数据库加密通过创建一个数据库的加密密钥和使用我们刚刚创建的证书的密码。

USE Northwind
GO
CREATE DATABASE ENCRYPTION KEY
WITH 
ALGORITHM AES_128
ENCRYPTION 
BY SERVER CERTIFICATE NorthwindCert
GO

加密算法选择权在你,因为有几个不同的选项。 有关选择加密算法在 SQL Server 上的指南签出此微软 TechNet 文章在创建数据库的加密密钥后,我们会启用加密数据库级别。

ALTER DATABASE Northwind
SET ENCRYPTION ON

让我们这次备份加密的 罗斯文 数据库,但使用不同的文件名。

BACKUP DATABASE Northwind 
TO DISK = 'C:/Northwind_encrypted.bak'
WITH INITSTATS 10

加密的备份会比未加密备份有点长。 如果您打开加密的数据库备份和搜索字符串 'A r i C r u z',我们搜索较早时,你会不会再发现它。 您可以通过文本滚动,并注意加密的数据,这是与一个不同的是,您会看到在未加密的备份。

还原加密的数据库备份另一个 SQL Server 实例上

它很容易在其他 SQL Server 实例上的未加密的备份还原。 在实际上,这是使它容易出现的安全风险。 您可以尝试使用 Northwind_encrypted 作为加密的数据库备份还原,您会遇到一个错误。 我做这对我的 测试 实例。 错误消息将告诉您找不到服务器证书。 尽管还原失败,还会看到 Northwind_encrypted 数据库还原状态中的对象浏览器上。

为了恢复加密的数据库备份另一个 SQL Server 实例上我们需要首先导出我们创建加密的数据库备份的实例创建的证书。 若要将证书文件我将我的 默认 实例上的连接,然后运行此查询。

USE master
GO
BACKUP CERTIFICATE NorthwindCert 
TO FILE = 'C:/NorthwindCert_File.cer'
WITH PRIVATE KEY (FILE = 'C:/NorthwindCert_Key.pvk' ,
ENCRYPTION BY PASSWORD 'mY_P@$$w0rd' )
GO

然后,我们需要将证书和私钥文件复制到另一个 SQL Server 实例。 因为我正在我的 默认 和我 测试 实例在同一服务器上,我就只是指那些文件时我做导入过程。 现在,测试 实例上, 将证书导入通过首先创建主密钥。

USE master
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD 'EnKrYpt3d_P@$$w0rd'
GO

密码提供的是不同的您要创建一个新的主密钥,此实例使用的 默认 实例。 已创建主密钥后您可以通过导入我们以前创建的证书创建证书。

CREATE CERTIFICATE NorthwindCert
FROM FILE = 'C:/NorthwindCert_File.cer' 
WITH PRIVATE KEY (FILE = 'C:/NorthwindCert_Key.pvk'
DECRYPTION BY PASSWORD 'mY_P@$$w0rd');
GO 

请注意在这里 解密的密码 参数中指定的密码是一致的我们用来将证书导出到一个文件。 这是因为我们将使用相同的证书对此新的实例访问加密的数据库。 已创建的证书后我们现在可以还原此实例上的加密的数据库备份。 您可能要删除,您试图恢复之前的初始加密的数据库。 您现在可以成功地恢复加密的数据库备份。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值