备份加密

适用范围:SQL Server

本文章概述 SQL Server 备份的加密选项。 其中详细介绍备份期间加密的用法、优点和推荐做法。

概述

从 SQL Server 2014 (12.x) 开始,SQL Server 可在创建备份时加密数据。 通过在创建备份时指定加密算法和加密程序(证书或非对称密钥),可创建加密的备份文件。 所有存储目标:支持本地和 Azure 存储。 此外,还可以为 Microsoft Azure 的 SQL Server 托管备份操作配置加密选项,这是 SQL Server 2014 (12.x) 中引入的新功能。

若要在备份期间加密,必须指定加密算法以及用于保护加密密钥的加密程序。 支持以下加密选项:

  • 加密算法: 支持的加密算法包括 AES 128、AES 192、AES 256 和 Triple DES

  • 加密程序: 证书或非对称密钥

注意

备份证书或非对称密钥很重要,并且最好备份到与用于加密的备份文件不同的位置。 没有证书或非对称密钥,你将无法还原备份,从而使备份文件无法使用。 还应备份存储在“包含的系统数据库”中的证书。

还原加密的备份: SQL Server 还原不需要在还原期间指定任何加密参数。 但要求在要还原到的实例上有用于加密备份文件的证书或非对称密钥。 执行还原的用户帐户必须对证书或密钥具有 VIEW DEFINITION 权限。 如果将加密的备份还原到其他实例,则必须确保该实例上有证书。
将加密数据库还原到新位置的顺序是:

  1. 旧数据库中的 BACKUP CERTIFICATE (Transact-SQL)
  2. 新位置 master 数据库中的 CREATE MASTER KEY (Transact-SQL)
  3. CREATE CERTIFICATE (Transact-SQL),将导出的证书从旧数据库备份到新服务器上的某个位置
  4. 将数据库还原到新位置 (SQL Server)

如果从经过 TDE 加密的数据库还原备份,则要还原到的实例上应有 TDE 证书。 有关详细信息,请参阅 将受 TDE 保护的数据库移到其他 SQL Server

好处

  1. 加密数据库备份有助于保护数据:SQL Server 提供在创建备份的同时加密备份数据的选项。

  2. 加密还可用于使用 TDE 加密的数据库。

  3. 由 Microsoft Azure 的 SQL Server 托管备份进行的备份支持加密,这样可提高站外备份的安全性。

  4. 此功能支持多个最高 AES 256 位的加密算法。 这样可选择符合要求的算法。

  5. 可将加密密钥与可扩展的密钥管理 (EKM) 提供程序集成。

先决条件

以下是有关加密备份的先决条件:

  1. 创建 master 数据库的数据库主密钥:数据库主密钥 (DMK) 是一个对称密钥,用于保护数据库中证书和非对称密钥的私钥。 有关详细信息,请参阅 SQL Server 和数据库加密密钥(数据库引擎)

  2. 创建用于备份加密的证书或非对称密钥。 有关创建证书的详细信息,请参阅 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 无法读取加密的备份。

  • 加密的备份不支持追加到现有的备份集选项。

权限

对加密数据库执行备份操作的帐户需要具有特定权限。

  • 要备份的数据库上的 db_backupoperator 数据库级别角色。 无论是否加密,都需要此角色。

  • master 数据库中证书的 VIEW DEFINITION 权限。

    下面的示例将为证书授予适当的权限。

    USE [master]
    GO
    GRANT VIEW DEFINITION ON CERTIFICATE::[<SERVER_CERT>] TO [<db_account>]
    GO
    

注意

不需要访问 TDE 证书即可备份或还原受 TDE 保护的数据库。

备份加密方法

以下各节简要介绍在备份期间加密数据的步骤。 有关使用 Transact-SQL 加密备份的不同步骤的完整演练,请参阅 创建加密的备份

使用 SQL Server Management Studio

在以下任何对话框中,可在创建数据库的备份时加密备份。

  1. 备份数据库(“备份选项”页)在“备份选项”页上,可以选择“加密”,并指定加密算法和证书或非对称密钥以用于加密。

  2. 使用维护计划向导选择某个备份任务后,可以在“定义备份()任务”页的“选项”选项卡上,选择“备份加密”,并指定加密算法和证书或密钥以用于加密。

使用 Transact-SQL

以下是示例 Transact-SQL 语句以加密备份文件:

BACKUP DATABASE [MYTestDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL13.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 "<myDatabase>" -BackupFile "<myDatabase>.bak" -CompressionOption On -EncryptionOption $encryptionOption

将加密证书和密钥备份到安装实例的本地计算机以外的位置。 若要考虑灾难恢复情况,请考虑将证书和密钥存储到站点外位置。 没有用于加密备份的证书即无法还原加密的备份。

若要还原加密的备份,要还原到的实例上应有进行备份时使用的原始证书及匹配的指纹。 因此,不应在到期时续订或以任何方式更改证书。 续订可导致更改证书并触发指纹更改,从而使证书对于备份文件变为无效。 执行还原的帐户应对备份期间用于加密的证书或非对称密钥具有 VIEW DEFINITION 权限。

可用性组数据库备份通常在首选备份副本上执行。 如果在不是备份来源的其他副本上还原备份,请确保用于备份的原始证书在还原到的副本上可用。

如果数据库启用了 TDE,则选择其他证书或非对称密钥用于加密数据库和备份以提高安全性。