Sri Asked: 2017-10-05 11:00:14 +0800 CST2017-10-05 11:00:14 +0800 CST 2017-10-05 11:00:14 +0800 CST 在 SQL Server 2016 中使用 Always Encrypted 加密数据、日志和备份文件 772 当我们在 SQL Server 2016 中实现 Always Encrypted 功能时,.mdf 文件、.ldf 文件和 .bak 文件是否也会被加密? 我想知道数据/日志/备份文件是否被加密。 sql-server sql-server-2016 2 个回答 Voted Brent Ozar 2017-10-05T11:04:03+08:002017-10-05T11:04:03+08:00 整个数据/日志文件不会被加密。只有您加密的特定字段被加密,是的,那些在数据、日志和备份文件中被加密。SQL Server 永远不会看到未加密的值。 在Always Encrypted 的文档中,Microsoft 解释说: Always Encrypted 允许客户端加密客户端应用程序内的敏感数据,并且永远不会向数据库引擎(SQL 数据库或 SQL Server)泄露加密密钥。 这不是很好的措辞,但它的意思是不仅数据被加密,SQL Server 引擎甚至没有为您解密它的密钥。 因此名称 - 就 SQL Server 引擎而言,数据是始终加密的。 Best Answer Hannah Vernon 2017-10-05T11:04:35+08:002017-10-05T11:04:35+08:00 该文件在开头段落中指出: 驱动程序在将数据传递给数据库引擎之前对敏感列中的数据进行加密,并自动重写查询,以便保留应用程序的语义。同样,驱动程序透明地解密存储在加密数据库列中的数据,这些数据包含在查询结果中。 暗示只有加密的列被加密。因此,数据库、日志和备份并未完全加密。 设置 Always Encrypted 时,您指定将加密哪些列;只有这些列的数据被加密。数据在发送到 SQL Server 之前被加密,因此数据在数据文件、日志文件和数据库的任何备份中都被加密。未通过 Always Encrypted 加密的列中的数据在.mdf、.ldf 和(可能是压缩的)数据库的任何备份文件中以纯文本形式可见。 透明数据库加密将加密整个数据库;.mdf、.ldf 以及对数据库进行的任何备份都将被完全加密。SQL Server 实例有一份解密密钥的副本,用于在实例启动时或在数据库恢复或附加时启动数据库。
整个数据/日志文件不会被加密。只有您加密的特定字段被加密,是的,那些在数据、日志和备份文件中被加密。SQL Server 永远不会看到未加密的值。
在Always Encrypted 的文档中,Microsoft 解释说:
这不是很好的措辞,但它的意思是不仅数据被加密,SQL Server 引擎甚至没有为您解密它的密钥。
因此名称 - 就 SQL Server 引擎而言,数据是始终加密的。
该文件在开头段落中指出:
暗示只有加密的列被加密。因此,数据库、日志和备份并未完全加密。
设置 Always Encrypted 时,您指定将加密哪些列;只有这些列的数据被加密。数据在发送到 SQL Server 之前被加密,因此数据在数据文件、日志文件和数据库的任何备份中都被加密。未通过 Always Encrypted 加密的列中的数据在.mdf、.ldf 和(可能是压缩的)数据库的任何备份文件中以纯文本形式可见。
透明数据库加密将加密整个数据库;.mdf、.ldf 以及对数据库进行的任何备份都将被完全加密。SQL Server 实例有一份解密密钥的副本,用于在实例启动时或在数据库恢复或附加时启动数据库。