我正试图使我的头脑对MSSQL加密。
我按照以下步骤对数据库进行加密:
1)在主数据库上创建主键:
USE master
GO
CREATE MASTER KEY ENCRYPTION
BY PASSWORD='thepbpass';
GO2)创建证书:
CREATE CERTIFICATE mycert
WITH SUBJECT='mydb DEK';
GO3)将证书与数据库联系起来:
USE mydb
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE mycert;
GO4)加密数据库:
ALTER DATABASE mydb
SET ENCRYPTION ON;
GO(五)出口证书。
BACKUP CERTIFICATE mycert TO FILE = 'path_to_file'
GO如果我的服务器死了,我需要恢复备份,那么我是否拥有恢复所需的一切?
我有以下几点:
我需要担心私钥还是公钥?我已经在网上看到了关于私钥和公钥的讨论,我不确定它们与我的配置有什么关系,或者它们与我在步骤1中创建的主密钥有什么不同。
发布于 2017-05-24 06:27:46
在没有证书的情况下,我们无法在其他实例上恢复备份。我们必须从源服务器恢复证书,然后我们应该能够从备份恢复数据库。
显然,还原需要您的证书和主密钥。
由于MSSQLTREK博客这里可以从源恢复证书(如果没有数据库主密钥,则必须在目的地创建一个DMK (数据库主键)),其余的只是执行正常的DB还原过程,就像在任何其他未加密的用户数据库(S)上所做的一样。
创建一个主密钥(如果您已经拥有DMK,则不必这样做),并从证书备份中创建一个证书,并提供私钥文件和密码来解密它。
启用TDE的数据库的备份文件也通过使用数据库加密密钥进行加密。因此,还原这些备份时,保护数据库加密密钥的证书必须可用。这意味着,除了备份数据库之外,还必须确保维护服务器证书的备份,以防止数据丢失。如果证书不再可用,将导致数据丢失。
注意:如果您在实例上的任何数据库上启用了TDE,那么您的TEMPDB也会自动加密。因此,在启用TDE的过程中,很有可能会影响其他数据库,而这些数据库实际上并不使用TDE功能!
发布于 2018-03-24 15:19:56
简单地说,您的错误在步骤5中,您需要使用证书备份私钥。您将需要保护密码,以便可以使用它来恢复目标服务器上的证书。
这将有助于您集中精力学习更多关于加密层次结构的知识。TDE证书的私钥是唯一可以解密数据库主密钥的密钥,DMK是直接加密和解密启用TDE数据库中页的对称密钥。
BACKUP CERTIFICATE mycert TO FILE = 'Path_to_file.cer'
WITH PRIVATE KEY ( FILE = 'path_to_file.pvk' ,
ENCRYPTION BY PASSWORD = 'password to encrypt the file path_to_file.pvk' );
GO 发布于 2017-05-24 06:12:30
你看过这个吗?https://www.mssqltips.com/sqlservertip/3572/recovering-a-sql-server-tde-encrypted-database-successfully/,我正在用手机做这个,所以我不能通过这个指南。它看起来很彻底,并提到了我在尝试TDE时忽略的一些事情。
当然,有一个标准的免责声明:希望您不会在生产中这样做!第一次设置TDE时,我将数据库文件从服务器上移出并退役。我没有意识到我没有抄袭钥匙。这是测试,所以没有重大损失,但如果是生产数据,我肯定会失业。
https://dba.stackexchange.com/questions/174388
复制相似问题