我有一个具有多个数据库的SQL实例。它们每个都经过TDE加密。
我知道所有数据库都使用相同的服务主密钥SMK来加密tempdb。我已经使用以下方法备份了SMK:
BACKUP SERVICE MASTER KEY
TO FILE = 'tmp-path.key'
ENCRYPTION BY PASSWORD = 'temp-password';
现在,如何备份独特的数据库主密钥DMK?每个数据库使用不同的数据库,但是SQL语句不允许指定要备份的数据库。接下来,是我正在运行的命令。
BACKUP MASTER KEY
TO FILE = 'tmep-path.key'
ENCRYPTION BY PASSWORD = 'temp-passowrd'
我是这样的:
use [specific-db];
GO
它将备份特定的一个,但是该命令将不会运行。您需要具有管理员权限才能运行命令。
谢谢
答案 0 :(得分:1)
在SQL Server中配置TDE的方式如下:
您只需/可以在此处备份两件事:
主加密密钥-您在问题中显示的脚本将执行此操作。
BACKUP MASTER KEY
TO FILE = 'tmep-path.key'
ENCRYPTION BY PASSWORD = 'temp-passowrd'
证书-您可以为每个要加密的数据库创建一个单独的证书,也可以为一个加密所有数据库的证书创建一个证书,如下所示:
-- Create Certificate
USE Master;
GO
CREATE CERTIFICATE TDE_MyDB_Cert
WITH SUBJECT = 'My TDE Certificate for MyDB user database'
GO
此证书受服务主密钥保护。
-- Encrypt Database using the Certificate
USE [MyDB]
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE TDE_MyDB_Cert
GO
现在,您需要执行以下操作来备份带有私钥的数据库证书:
USE master;
GO
BACKUP CERTIFICATE TDE_MyDB_Cert
TO FILE = 'C:\TDE_MyDB_Cert_File.cer'
WITH PRIVATE KEY (FILE = 'C:\TDE_MyDB_Cert_PKey.pvk' ,
ENCRYPTION BY PASSWORD = 'S0M34tR0nGP@$$w)rd' )
GO