您可以采取一些预防措施来帮助保护数据库的安全,如设计一个安全系统、加密机密资产以及在数据库服务器的周围构建防火墙。但是,如果遇到物理介质(如驱动器或备份磁带)被盗的情况,恶意破坏方只需还原或附加数据库即可浏览数据。一种解决方案是加密数据库中的敏感数据,并通过证书保护用于加密数据的密钥。这可以防止任何没有密钥的人使用这些数据,但这种保护必须事先计划。

“透明数据加密”(TDE) 可对数据和日志文件执行实时 I/O 加密和解密。这种加密使用数据库加密密钥 (DEK),该密钥存储在数据库引导记录中以供恢复时使用。DEK 是使用存储在服务器的 master 数据库中的证书保护的对称密钥,或者是由 EKM 模块保护的非对称密钥。TDE 保护“处于休眠状态”的数据,即数据和日志文件。它提供了遵从许多法律、法规和各个行业建立的准则的能力。软件开发人员籍此可以使用 AES 和 3DES 加密算法来加密数据,且无需更改现有的应用程序。

重要提示

TDE 不提供跨通信信道加密。有关如何跨通信信道加密数据的详细信息,请参阅加密与 SQL Server 的连接。

对数据库实施保护措施后,可以通过使用正确的证书还原此数据库。有关证书的详细信息,请参阅 SQL Server 证书和非对称密钥。

注意

启用 TDE 时,应该立即备份证书和与证书相关联的私钥。如果证书变为不可用,或者如果必须在另一台服务器上还原或附加数据库,则必须同时具有证书和私钥的备份,否则将无法打开该数据库。即使不再对数据库启用 TDE,也应该保留加密证书或非对称密钥。即使数据库没有加密,数据库加密密钥可能也保留在数据库中,执行某些操作时可能需要访问这些加密密钥。

数据库文件的加密在页级执行。已加密数据库中的页在写入磁盘之前会进行加密,在读入内存时会进行解密。TDE 不会增加已加密数据库的大小。有关数据库页的详细信息,请参阅页和区。

下图显示了 TDE 加密体系结构:

使用透明数据加密


若要使用 TDE,请按以下步骤操作。

  • 创建主密钥

  • 创建或获取由主密钥保护的证书

  • 创建数据库加密密钥并通过此证书保护该密钥

  • 将数据库设置为使用加密

下面的示例演示如何使用安装在名为 MyServerCert 的服务器上的证书加密和解密 AdventureWorks2008R2 数据库。

复制
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
USE AdventureWorks2008R2;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2008R2
SET ENCRYPTION ON;
GO

加密和解密操作由 SQL Server 安排在后台线程中执行。您可以使用本主题后面部分显示的列表中的目录视图和动态管理视图查看这些操作的状态。

注意

启用了 TDE 的数据库的备份文件也使用数据库加密密钥进行加密。因此,当您还原这些备份时,用于保护数据库加密密钥的证书必须可用。也就是说,除了备份数据库之外,您还要确保自己保留了服务器证书的备份以防数据丢失。如果证书不再可用,将会导致数据丢失。有关详细信息,请参阅 SQL Server 证书和非对称密钥。

命令和函数


TDE 证书必须使用数据库主密钥加密才能被下列语句接受。如果它们仅用密码加密,这些语句将拒绝将它们视为加密程序。

重要提示

在 TDE 使用证书之后将证书改为用密码保护将会导致数据库在重新启动后无法访问。

下表提供了 TDE 命令和函数的链接和说明。

命令或函数

用途

CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

创建一个用于加密数据库的密钥。

ALTER DATABASE ENCRYPTION KEY (Transact-SQL)

更改用于加密数据库的密钥。

DROP DATABASE ENCRYPTION KEY (Transact-SQL)

删除用于加密数据库的密钥。

ALTER DATABASE SET 选项 (Transact-SQL)

介绍用来启用 TDE 的 ALTER DATABASE 选项。

目录视图和动态管理视图


下表显示了 TDE 目录视图和动态管理视图。

目录视图或动态管理视图

用途

sys.databases (Transact-SQL)

显示数据库信息的目录视图。

sys.certificates (Transact-SQL)

显示数据库中的证书的目录视图。

sys.dm_database_encryption_keys (Transact-SQL)

提供有关数据库中使用的加密密钥的信息以及数据库加密状态的动态管理视图。

权限


如上表中所述,TDE 的每项功能和每个命令都有各自的权限要求。

查看 TDE 所涉及的元数据要求拥有对证书的 VIEW DEFINITION 权限。有关详细信息,请参阅 VIEW DEFINITION 权限。

注意事项


当进行数据库加密操作的重新加密扫描时,将禁用对数据库的维护操作。 您可以使用数据库的单用户模式设置来执行维护操作。有关详细信息,请参阅如何将数据库设置为单用户模式 (SQL Server Management Studio)。

可以使用 sys.dm_database_encryption_keys 动态管理视图来确定数据库加密状态。有关详细信息,请参阅本主题前面的“目录视图和动态管理视图”部分。

在 TDE 过程中,数据库中的所有文件和文件组都进行加密。如果将数据库中的任何文件组标记为 READ ONLY,数据库加密操作将会失败。

如果某个数据库正在用于数据库镜像或日志传送,则两个数据库都将进行加密。日志事务将以加密形式在它们之间发送。

重要提示

当数据库设置为加密时,将加密所有新的全文索引。以前创建的全文索引将在升级期间导入,在将数据加载到 SQL Server 后,将对这些索引进行 TDE。对列启用全文索引可导致在全文索引扫描期间将该列数据以纯文本方式写入磁盘。建议不要对已加密的敏感数据创建全文索引。

与未加密数据相比,同样的加密数据的压缩率要小得多。如果使用 TDE 对数据库进行加密,备份压缩将无法显著压缩备份存储。因此,不建议将 TDE 与备份压缩一起使用。

限制

在初始数据库加密、密钥更改或数据库解密期间,不允许执行下列操作:

  • 从数据库中的文件组中删除文件

  • 删除数据库

  • 使数据库脱机

  • 分离数据库

  • 将数据库或文件组转换为 READ ONLY 状态

在执行 CREATE DATABASE ENCRYPTION KEY、ALTER DATABASE ENCRYPTION KEY、DROP DATABASE ENCRYPTION KEY 或 ALTER DATABASE...SET ENCRYPTION 语句期间,不允许执行下列操作。

  • 从数据库中的文件组中删除文件。

  • 删除数据库。

  • 使数据库脱机。

  • 分离数据库。

  • 将数据库或文件组转换为 READ ONLY 状态。

  • 使用 ALTER DATABASE 命令。

  • 启动数据库或数据库文件备份。

  • 启动数据库或数据库文件还原。

  • 创建快照。

下列操作或条件将阻止执行 CREATE DATABASE ENCRYPTION KEY、ALTER DATABASE ENCRYPTION KEY、DROP DATABASE ENCRYPTION KEY 或 ALTER DATABASE...SET ENCRYPTION 语句。

  • 数据库为只读或包含任何只读文件组。

  • 正在执行 ALTER DATABASE 命令。

  • 正在进行任何数据备份。

  • 数据处于脱机或还原状态。

  • 正在创建快照。

  • 数据库维护任务。

当创建数据库文件时,如果启用了 TDE,则即时文件初始化功能不可用。

透明数据加密与事务日志

允许数据库使用 TDE 具有将虚拟事务日志的剩余部分“清零”以强制加密下一个虚拟事务日志的效果。这可以保证在数据库设置为加密后事务日志中不会留有明文。可通过查看 sys.dm_database_encryption_keys 视图中的 encryption_state 列来确定日志文件加密状态,如以下示例所示:

复制
USE AdventureWorks2008R2;
GO
/* The value 3 represents an encrypted state on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO

有关 SQL Server 日志文件体系结构的详细信息,请参阅事务日志物理体系结构。

所有在数据库加密密钥更改前写入事务日志的数据都将使用之前的数据库加密密钥加密。

在数据库加密密钥修改过两次后,必须执行日志备份才能再次对数据库加密密钥进行修改。

透明数据加密与 tempdb 系统数据库

如果 SQL Server 实例中的任何其他数据库是使用 TDE 加密的,则会加密 tempdb 系统数据库。这可能会对同一个 SQL Server 实例上的未加密数据库产生性能影响。有关 tempdb 系统数据库的详细信息,请参阅 tempdb 数据库。

透明数据加密和复制

复制不会以加密形式从启用了 TDE 的数据库中自动复制数据。如果您想保护分发和订阅服务器数据库,则必须单独启用 TDE。快照复制以及用于事务和合并复制的初始数据分发,都能够在未加密的中间文件(例如 bcp 文件)中存储数据。 在事务或合并复制期间,可以启用加密来保护通信信道。有关详细信息,请参阅如何启用数据库引擎的加密连接(SQL Server 配置管理器)。

透明数据加密和 FILESTREAM 数据

即使启用了 TDE,也不会加密 FILESTREAM 数据。

请参阅


概念

将 TDE 保护的数据库移到其他 SQL Server
安全性概述(数据库引擎)
SQL Server 加密
SQL Server 和数据库加密密钥(数据库引擎)
FILESTREAM 概述

WebCast: https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=zh-CN&EventID=1032401940&CountryCode=CN

转载于:https://blog.51cto.com/so4678/578280

了解透明数据加密 (TDE)相关推荐

  1. Oracle 11g 新特性 -- Transparent Data Encryption (透明数据加密TDE) 增强 说明

    一.TransparentData Encryption (TDE:透明数据加密) 说明 Orace TDE 是Orcle 10R2中的一个新特性,其可以用来加密数据文件里的数据,保护从操作系统层面上 ...

  2. Oracle数据安全解决方案(1)——透明数据加密TDE

    Oracle数据安全解决方案(1)--透明数据加密TDE 2009年09月23日 22:49:00 华仔爱技术 阅读数:7991 原文地址: http://www.oracle.com/technol ...

  3. 透明数据加密 (TDE)常见问题解答

    透明数据加密 (TDE)常见问题解答 问题 任何人只要有权访问加密数据就能对其进行解密吗? TDE 会带来哪些开销? 哪些加密算法可与 TDE 一同使用? 可以使用第三方加密算法代替 TDE 提供的算 ...

  4. mysql 加密 tde_[SQL Server] 利用透明数据加密(TDE)对整个数据库加密

    using TDE encrypt SQL Database 前言 最近客户有需求想避免数据库(.mdf..ldf)被偷走时,数据外泄流出 刚好SQL Server的TDE加密功能满符合需求. TDE ...

  5. 长安链ChainMaker新特性——透明数据加密TDE

    01 透明数据加密(TDE)简介 透明数据加密(Transparent Data Encryption (简称TDE))是指可以在文件层对数据和文件进行实时加密和解密,落盘的文件是加密后的内容,而对于 ...

  6. 何时可以开启透明数据加密(TDE)?

    TDE可以为我们的数据库提供加密保护,但是,不是任何情况下都可以随意开启TDE的,同时开启TDE后,我们的数据库维护管理工作也需要进行一些调整. 下面我们就先看看开启TDE需要的条件吧! 无法正常开启 ...

  7. oracle12c加密ted,Oracle数据透明加密-TDE

    介绍 Oracle 10g R2提供了一个新的特性,让你只需要做如下动作:你可以不写一行代码,只需要声明你需要加密某列.当用户插入数据的时候,数据库透明的加密数据然后存储加密后的数据.同样的,当用户读 ...

  8. Oracle 11g使用透明数据加密保护存储数据

    Oracle 11g使用透明数据加密保护存储数据 透明数据加密 (TDE) 使您能够加密存储在表和表空间中的敏感数据,例如信用卡号.对于有权访问数据的数据库用户或应用程序,加密数据将被透明地解密.TD ...

  9. ORACLE TDE 透明数据加密技术

    从ORALE 10GR2开始出现透明数据加密技术(Transparent Data Encryption,TDE) TDE用来对数据加密,通常 SQL 执行的应用程序逻辑不需要进行更改,仍能正常运行. ...

  10. aws rds 加密_AWS RDS SQL Server中的透明数据加密(TDE)

    aws rds 加密 In this article, we will review Transparent Data Encryption (TDE) in AWS RDS SQL Server. ...

最新文章

  1. 面试题总结(21-40)
  2. UA OPTI512R 傅立叶光学导论3 用复变函数表示物理量
  3. Eclipse用法:自动生成get和set方法
  4. 10个最常见的JS错误
  5. 异常检测算法之LOF
  6. linux 内核io操作,关于Linux内核中的异步IO的使用
  7. 微软Silverlight==跨浏览器、跨客户平台的技术
  8. 微信小程序-page
  9. SQL Server中数据库文件的存放方式,文件和文件组
  10. 利用token 防止表单重复提交
  11. python筛选同义词_Python-比较同义词NLTK
  12. 启动kafka报错ERROR Fatal error during KafkaServer startup. Prepare to shutdown ,找到原因就要可以解决
  13. httpclient实现模拟登陆126邮箱
  14. 稀土铕Eu-ps微球|聚苯乙烯荧光微球-红色荧光100nm~500nm
  15. KF UD分解之UD分解基础篇【1】
  16. 统计每天的新老用户,日活,周活,月活
  17. 深度思考: 如何做好一个开源项目?
  18. Python解析GPGGA报文_统计数据完整率
  19. 云服务器 金蝶wise,金蝶K/3 WISE服务器与客户端配置建议
  20. Ubuntu 搜狗输入法无法调出问题解决备忘

热门文章

  1. [转][酷酷的滕]我爱你语录
  2. 在个人隐私方面做得比Google好的搜索引擎——DuckDuckGo
  3. 做SEO优化第九步:如何设置页面内容优化
  4. 基于STM32F103C6T6HAL库控制SG90舵机
  5. kylin构建cube时step1报错MoveTask
  6. 微软云存储更换品牌 免费空间将翻番达到15GB
  7. android修改recovery菜单,安卓刷机Recovery菜单介绍刷入教程详解
  8. 360加固签名验证_android - 使用360加固的方法(需要在windows下面,先加固,再签名)...
  9. 开启充电计划升级职业生涯,让我们相聚社科院杜兰金融管理硕士项目
  10. C语言解题:破损的键盘