WEB开发网
开发学院数据库MSSQL Server SQL Server 2008的透明数据加密 阅读

SQL Server 2008的透明数据加密

 2008-08-09 09:55:09 来源:WEB开发网   
核心提示: 前两个步骤显示了怎样创建主数据库中的数据库主密钥和证书,注意,SQL Server 2008的透明数据加密(3),ENCRYPTION BY PASSWORD 不是由CREATE CERTIFICATE 来指定,因此自签名的证书的私钥将由数据库主密钥来保护,第二,我们将尝试在另一个实例中附

前两个步骤显示了怎样创建主数据库中的数据库主密钥和证书。注意,ENCRYPTION BY PASSWORD 不是由CREATE CERTIFICATE 来指定,因此自签名的证书的私钥将由数据库主密钥来保护。下一步显示了在TestDatabase中创建DEK的方法。执行这个代码。它添加了DEK到TestDatabase。如果这个证书的私钥由一个密码保护,那么你将获得如下所示的错误信息:

Msg 33101, Level 16, State 1, Line 4

不能使用证书“DEKCertificateTest”,因为它的私钥没有显示出来或者它不是由数据库主密钥来保护的。SQL Server 需要自动访问这个操作所使用证书的私钥的能力。

sys.dm_database_encryption_keys 使你可以看到DEK被添加到服务器上。字段encryption_state 表示DEK是处于下面的哪个状态:没有加密、加密中、已加密、密钥改变中、和解密中,这些各自对应1、2、3、4、和5这几个数值。当你在设置ENCRYPTION之前运行DMV时,这个状态将显示为1,如果设置了,这个状态将显示为3。完成了。现在TestDatabase 已经是完全安全的了。

我的数据库现在是安全的吗?

尽管我们成功地使得在我们的数据库上激活了TDE,但是我们还需要确保它在所有级别都是安全的。我们将在这方面做两个测试。首先,我们将备份这个数据库并尝试恢复这个备份到另一个SQL Server 2008实例上去。这个恢复操作一定会失败的,除非这个证书用于保护DEK的私钥是可用于主数据库的。第二,我们将尝试在另一个实例中附加TestDatabase的mdf和ldf文件。它应该也不能起作用。这是用于测试的代码:

-- First step is backing up the TestDatabase.
BACKUP DATABASE [TestDatabase]
TO DISK = N'E:TestDatabaseFull.bak'
WITH NOFORMAT, NOINIT, NAME = N'TestDatabase-Full Database Backup'
GO
-- Now connect with another SQL Server 2008 instance.
-- Try to restore the backup we have taken, in the new instance.
-- This statement should be failed.
RESTORE DATABASE [TestDatabase]
FROM DISK = N'E:TestDatabaseFull.bak'
WITH FILE = 1,
MOVE N'TestDatabase' TO N'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATestDatabase.mdf',
MOVE N'TestDatabase_log' TO N'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATestDatabase_log.ldf',
NOUNLOAD, STATS = 10
GO

上一页  1 2 3 4 5 6  下一页

Tags:SQL Server 透明

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接