本文属于SQL Server安全专题系列
前面讲到的很多内容都是对数据加密和权限控制,这些主要在SQL Server内部,但是还有一种情况就是文件的安全性,除了在操作系统层面对文件进行访问控制之外,还要确保服务器被攻击之后文件被窃取的情况。为了避免文件被窃取后通过特权方式获得数据,有必要对文件也进行数据安全加密,在SQL Server中提供了一种叫透明数据加密(Transparent Data Encryption,TDE)的功能。
TDE可以防止数据库的文件(mdf/ndf/ldf)被非授权附加到别的服务器或者使用TDE功能的备份文件被轻易还原到别的服务器上,从而进一步加强了数据的安全性。
TDE通过对数据页和日志文件进行加密来实现这种安全性。其加密方式使用叫做“数据库加密密钥(database encryption key)”的非对称密钥加密。密钥存储在数据库的启动记录(boot record)中,并使用master库的一个服务器证书进行加密。也就是说,如果数据库文件(mdf、ndf、ldf或bak)被窃取,由于没有完整的解密密钥,数据库不可使用。不过如果连master库或者这个服务器证书也一并被窃取,那么还是可以解密的。
当启用数据库的TDE功能之后,数据和日志会在写入