问题
在检讨 SQL Server 2008 中的新功能,时,我们注意到透明数据加密。 这听起来很有趣。 您可以为我们提供解释和执行它的详细信息吗?
解决方案
时延估计是 SQL Server 2008 中的新功能,它提供了实时加密的数据和日志文件。 数据加密之前写到磁盘 ; 数据进行解密时从磁盘中读取。 时延估计的"透明"方面是由数据库引擎执行加密和 SQL Server 客户端不完全了解它。 有绝对不需要写入执行加密和解密的代码。 有几个步骤来执行,以准备数据库,以便时延估计,然后在数据库级别通过一个 ALTER DATBASE 命令打开加密。
我们很可能已经听到的事件已丢失或被盗的备份磁带包含敏感信息的。 与时延估计使用只是标准的备份命令,一旦加密已打开的数据库时也加密备份文件。 此外没有访问被用来加密数据的密钥,在备份文件中或磁盘上的数据是完全没用的。
我们跳水,实现时延估计的步骤之前,让我们看一分钟的时间讨论很高级别的加密。 维基百科 的加密的定义是"过程的信息 (称为纯文本) 转换使用算法 (称为密码),以使其对除拥有专业知识的任何人都无法读取通常称为一个键"。 我谨此陈对一些数据外,进行并加密选择一个可用的算法提供一个密钥和现在已加密的数据。 加密的数据外,进行并解密我选择相同的算法,并提供密钥中。 提供的加密的安全根据算法和密钥的保护的力量。 有两种类型的键-对称和不对称。 用对称的密钥来加密和解密的数据使用相同的值。 非对称密钥有两个组件-私钥和公钥。 我使用私人对数据进行加密和其他人必须使用公共密钥来解密数据。 重述一遍:,对称密钥或非对称密钥对的私钥必须存储安全地进行有效的加密的顺序。
现在让我们走过如何实现时延估计的一个示例。 线上的书 列出特定数据库上执行时延估计的以下四个步骤:
- 创建主密钥
- 创建或获取受主密钥的证书
- 创建数据库的加密密钥和证书对它进行保护
- 设置要使用加密数据库
创建一个主密钥
主要密钥是用于创建证书的对称密钥和非对称密钥。 执行以下脚本以创建主密钥:
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pass@word1'; GO |
请注意密码应是一个强大的一个 (即使用字母,数字、 上、 下,和特殊字符),您要备份 (使用备份 MASTER KEY),并将其存储在安全的位置。 主密钥的更多详细信息,请参阅我们较早前的提示 管理 SQL Server 2005 主密钥加密的。
创建一个证书
创建用于数据加密的对称密钥,或直接加密数据,可以使用证书。 执行以下脚本以创建的证书:
USE master; CREATE CERTIFICATE TDECert WITH SUBJECT = 'TDE Certificate' GO |
请注意证书也需要备份 (使用 BACKUP 证书) 和存储在一个安全的位置中。 证书上的其他详细信息,请参阅 SQL Server 2005 加密-证书 101 我们较早前提示。
创建数据库加密密钥
时延估计需要数据库加密密钥。 执行下面的脚本为它创建一个新的数据库和数据库的加密密钥:
CREATE DATABASE mssqltips_tde GO USE mssqltips_tde; CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE TDECert GO |
到工作与时延估计的加密密钥必须由 (密码将工作) 的证书加密和证书必须位于 master 数据库中。
启用时延估计
实现时延估计所需的最后一步是执行以下脚本:
ALTER DATABASE mssqltips_tde SET ENCRYPTION ON GO SELECT [name], is_encrypted FROM sys.databases GO |
您可以查询 sys.databases 来确定是否为特定的数据库启用时延估计中的 is_encrypted 列。