适用范围:SQL Server
SQL Server 使用加密密钥帮助保护存储在服务器数据库中的数据、凭据和连接信息。 SQL Server 的密钥分为两种:对称和非对称。 对称密钥使用相同的密码对数据进行加密和解密。 非对称密钥使用一个密码来加密数据(称为公钥),使用另一个密码来解密数据(称为私钥)。
在 SQL Server 中,加密密钥包括一组用来保护敏感数据的公钥、私钥和对称密钥。 当第一次启动 SQL Server 实例时,将在 SQL Server 初始化过程中创建对称密钥。 SQL Server 使用密钥加密存储在 SQL Server 中的敏感数据。 操作系统创建公钥和私钥,公钥和私钥保护对称密钥。 对于在数据库中存储敏感数据的每个 SQL Server 实例,都要创建一个公钥私钥对。
用于 SQL Server 和数据库密钥的应用程序
SQL Server 密钥的应用主要有两个方面:作为某 SQL Server 实例上为该实例生成的服务主密钥 (SMK) 和作为用于数据库的数据库主密钥 (DMK)。
服务主密钥
服务主密钥为 SQL Server 加密层次结构的根。 SQL Server 在实例首次启动时生成 SMK,并用它加密每个数据库中的链接服务器密码、凭证和数据库主密钥。
SMK 通过使用本地机器密钥或 Windows 数据保护 API(DPAPI)进行加密。 DPAPI使用源自SQL Server服务账户的Windows凭证的密钥。 由于该密钥受到双重保护,服务主密钥可以由创建它时所使用的服务账户打开,或者由有权访问计算机凭证的主体打开。
SQL Server 使用 AES 加密算法保护服务主密钥和数据库主密钥。 AES 取代了 SQL Server 2012(11.x)之前版本中使用的 3DES 算法。 在你从这些早期版本升级数据库引擎实例后,重新生成SMK和DMK,将主密钥升级为AES。 有关重新生成 SMK 的详细信息,请参阅 ALTER SERVICEALTER SERVICE MASTER KEY (Transact-SQL) 和 ALTER MASTER KEY (Transact-SQL)。
数据库主密钥
数据库主密钥是一种对称密钥,用于保护数据库中存在的证书和非对称密钥的私钥。 它也可以加密数据,但由于长度限制,对于数据加密而言,不如非对称密钥实用。 为了实现数据库主密钥的自动解密,密钥的副本会使用SMK加密。 SQL Server 会将该副本同时存储在使用该密钥的数据库和 master 系统数据库中。
每当 DMK 发生更改时,存储在 master 系统数据库中的 DMK 副本都会被静默更新。 你可以通过使用 ALTER MASTER KEY(Transact-SQL) 的 DROP ENCRYPTION BY SERVICE MASTER KEY 选项来更改此默认值。 未由服务主密钥加密的 DMK 必须使用 OPEN MASTER KEY (Transact-SQL) 和密码来打开。
管理 SQL Server 和数据库键
管理加密密钥包括创建新的数据库密钥,备份服务器和数据库密钥,以及知道何时以及如何恢复、删除或更改密钥。
要管理对称键,请使用SQL Server中附带的工具执行以下任务:
- 备份服务器和数据库密钥的副本,以便可以使用它们来恢复服务器安装,或将它们用于计划的迁移。
- 将以前保存的密钥还原到数据库。 还原密钥后,新的服务器实例即可访问其原本并未加密的现有数据。
- 当不能再访问加密数据时删除数据库中的加密数据,这种情况极少出现。
- 在密钥极少可能泄露的情况下,重新创建密钥并重新加密数据。 作为安全最佳实践,定期重创建密钥,比如每隔几个月一次,以保护服务器免受试图破解密钥的攻击。
- 在服务器扩展部署(多个服务器同时共享单个数据库以及为该数据库提供可逆加密的密钥)中添加或删除服务器实例。
重要安全信息
要访问由服务主密钥保护的对象,你需要要么使用用于创建该密钥的 SQL Server 服务账户,要么使用与你创建该密钥所在系统关联的计算机(机器)账户。 你可以更改SQL Server服务账户或电脑账户,而不会失去密钥访问权限。 但是,如果你更改了两个账户,你就会失去对服务主密钥的访问权限。 如果你失去对服务主密钥的访问权,而没有这两个元素中的一个,你就无法解密原始密钥加密的数据和对象。
除非你有那个密钥,否则无法恢复用服务主密钥保护的连接。
要访问用数据库主密钥保护的对象和数据,你只需要用于帮助保护该密钥的密码。
注意
如果你失去了对本文描述的所有密钥访问权限,你也将失去对这些密钥保护的对象、连接和数据的访问权限。 你可以按照还原服务主密钥中所述还原服务主密钥,也可以返回原来的加密系统来恢复访问权限。 无法通过后门恢复访问权限。
相关内容
- 可扩展的密钥管理 (EKM)
- Extensible Key Management using Azure 密钥保管库 (SQL Server)
- 使用 EKM 在 SQL Server 上启用 TDE
- 创建数据库主密钥
- 备份数据库主密钥
- 恢复数据库主键
- 备份服务主密钥
- 恢复服务主密钥
- 在两台服务器上创建相同的对称密钥
- 加密一列数据
- 透明数据加密 (TDE)
- CREATE MASTER KEY (Transact-SQL)
- ALTER SERVICE ALTER SERVICE MASTER KEY (Transact-SQL)
- 备份和还原 SQL Server Reporting Services (SSRS) 加密密钥
- 删除并重创建加密密钥(Configuration Manager)
- 添加和删除扩展部署的加密密钥