[关闭]
@lsmn 2015-06-20T06:45:47.000000Z 字数 770 阅读 2362

SQL Server 2016:动态数据屏蔽

微软 数据库 SQL 数据屏蔽


摘要

数据屏蔽是个有必要但易出错的过程。用户只要有一次忘记了 屏蔽就会泄露敏感数据。SQL Server 2016试图通过一项名为“动态数据屏蔽(Dynamic Data Masking)”的特性解决这个问题。

正文

行级安全很适合于全有或全无决策,但有时候,用户需要访问数据的子集。例如,信用卡或者社会保险号的后四位。这可以在应用程序层面实现,但会留下犯错的空间。只要一次忘记屏蔽,就会导致敏感信息泄露。

SQL Server 2016试图通过一项名为“动态数据屏蔽(Dynamic Data Masking)”的特性解决这个问题。如果列在创建列时附加屏蔽,那么它默认只会返回透过屏蔽暴露出来的数据。当前,SQL Server提供了三种类型的屏蔽:

有两种方法可以解除数据屏蔽。第一种是拥有UNMASK全局权限,它可以为用户关闭所有的数据屏蔽。第二种是将屏蔽列转换成底层数据类型。例如:

SELECT FirstName, CAST (Email AS nChar(50)) FROM Members;

局限性

由于屏蔽可以通过类型转换消除,所以不应该将这项特性看作是安全特性。确切地说,它是一个可以与诸如加密敏感信息、不允许用户执行“动态查询(ad hoc queries)”这样的最佳实践结合使用的便利功能。

屏蔽可能导致ORM出现问题。如果ORM不支持按字段跟踪变化,那么它可能会在更新操作时用屏蔽值覆盖实际的值。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注