本主题概述了 SQL Server 备份的加密选项。 它包括有关备份期间加密的使用、优势和建议做法的详细信息。
概述
从 SQL Server 2014 开始,SQL Server 能够在创建备份时加密数据。 通过在创建备份时指定加密算法和加密程序(证书或非对称密钥),可以创建加密的备份文件。 支持所有存储目标:本地和 Window Azure 存储。 此外,可以为 SQL Server 托管备份到 Microsoft Azure 的操作配置加密选项,这是 SQL Server 2014 中引入的一项新功能。
若要在备份期间加密,必须指定加密算法和加密器来保护加密密钥。 以下是支持的加密选项:
加密算法: 支持的加密算法包括:AES 128、AES 192、AES 256 和 Triple DES
加密器: 证书或非对称密钥
谨慎
备份证书或非对称密钥非常重要,最好备份到与用于加密的备份文件不同的位置。 如果没有证书或非对称密钥,则无法还原备份,使备份文件不可用。
还原加密备份: SQL Server 还原不需要在还原期间指定任何加密参数。 它确实要求在要还原到的实例上提供用于加密备份文件的证书或非对称密钥。 执行还原的用户帐户必须具有 VIEW DEFINITION 证书或密钥的权限。 如果要将加密备份还原到其他实例,则必须确保该实例上提供证书。
如果要从 TDE 加密数据库还原备份,则应在要还原到的实例上提供 TDE 证书。
优点
加密数据库备份有助于保护数据:SQL Server 提供了在创建备份时加密备份数据的选项。
加密还可用于使用 TDE 加密的数据库。
SQL Server 托管备份到 Microsoft Azure 的备份支持加密,这为异地备份提供了额外的安全性。
此功能支持最多 AES 256 位的多个加密算法。 这样,可以选择符合要求的算法。
可以将加密密钥与扩展密钥管理(EKM)提供程序集成。
先决条件
以下是加密备份的先决条件:
为 master 数据库创建数据库主密钥: 数据库主密钥是一个对称密钥,用于保护数据库中存在的证书和非对称密钥的私钥。 有关详细信息,请参阅 SQL Server 和数据库加密密钥(数据库引擎)。
创建用于备份加密的证书或非对称密钥。 有关创建证书的详细信息,请参阅 CREATE CERTIFICATE (Transact-SQL)。 有关创建非对称密钥的详细信息,请参阅 CREATE ASYMMETRIC KEY (Transact-SQL)。
重要
仅支持驻留在扩展密钥管理(EKM)中的非对称密钥。
限制
以下是适用于加密选项的限制:
如果您使用非对称密钥加密备份数据,则只支持驻留在 EKM(外部密钥管理)提供程序中的非对称密钥。
SQL Server Express 和 SQL Server Web 在备份期间不支持加密。 但是,支持从加密备份还原到 SQL Server Express 或 SQL Server Web 实例。
以前版本的 SQL Server 无法读取加密备份。
不支持将加密备份追加到现有备份集的选项。
权限
若要加密备份或从加密备份还原,请执行以下作:
VIEW DEFINITION 对用于加密数据库备份的证书或非对称密钥的权限。
注释
无需访问 TDE 证书即可备份或还原受 TDE 保护的数据库。
备份加密方法
以下部分简要介绍了在备份期间加密数据的步骤。 有关使用 Transact-SQL 加密备份的不同步骤的完整演练,请参阅 “创建加密备份”。
使用 SQL Server Management Studio
可以在以下任一对话框中创建数据库的备份时加密备份:
备份数据库 (备份选项页) 在“ 备份选项 ”页上,可以选择 “加密”,并指定要用于加密的加密算法和证书或非对称密钥。
使用维护计划向导选择备份任务时,在“定义备份”页的“选项”选项卡上,可以选择“备份加密”,并指定要用于加密的加密算法和证书或密钥。
使用 Transact SQL
下面是用于加密备份文件的示例 Transact-SQL 语句:
BACKUP DATABASE [MYTestDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\MyTestDB.bak'
WITH
COMPRESSION,
ENCRYPTION
(
ALGORITHM = AES_256,
SERVER CERTIFICATE = BackupEncryptCert
),
STATS = 10
GO
有关完整 Transact-SQL 语句语法,请参阅 BACKUP (Transact-SQL)。
使用 PowerShell
此示例创建加密选项,并将其用作 Backup-SqlDatabase cmdlet 中的参数值来创建加密备份。
$encryptionOption = New-SqlBackupEncryptionOption -Algorithm Aes256 -EncryptorType ServerCertificate -EncryptorName "BackupCert"
Backup-SqlDatabase -ServerInstance . -Database "MyTestDB" -BackupFile "MyTestDB.bak" -CompressionOption On -EncryptionOption $encryptionOption
推荐做法
创建加密证书和密钥的备份到安装实例的本地计算机以外的位置。 若要考虑灾难恢复方案,请考虑将证书或密钥的备份存储到站点外位置。 如果没有用于加密备份的证书,则无法还原加密的备份。
若要还原加密备份,在使用匹配指纹进行备份时使用的原始证书应在要还原到的实例上可用。 因此,不应在到期时续订证书,也不应以任何方式进行更改。 续订可能会导致更新证书,从而触发指纹更改,因此使证书对备份文件无效。 执行还原操作的帐户应该对证书或用于备份加密的非对称密钥具有 VIEW DEFINITION 权限。
可用性组数据库备份通常在首选备份副本上执行。 如果在不同于执行备份的副本上还原备份,请确保用于备份的原始证书在要还原到的副本上可用。
如果数据库已启用 TDE,请选择不同的证书或非对称密钥来加密数据库和备份以提高安全性。
相关任务
| 主题/任务 | DESCRIPTION |
|---|---|
| 创建加密备份 | 介绍创建加密备份所需的基本步骤 |
| SQL Server 托管备份到 Azure - 保留和存储设置 | 介绍使用指定的加密选项将 SQL Server 托管备份配置为Microsoft Azure 所需的基本步骤。 |
| 使用 Azure Key Vault 的可扩展密钥管理 (SQL Server) | 提供在 Azure Key Vault 中创建受密钥保护的加密备份的示例。 |