数据屏蔽的问题在IT界出人意料地经常出现。任何时候,当你需要共享一些潜在的敏感数据时,你可能需要隐藏、混淆、随机化或以其他方式伪装这些数据——我们称之为秘密数据。
在本文中,我们将重点讨论数据屏蔽的机制,并忽略一个重大问题:数据分类——知道谁可以访问什么数据。数据分类是一个完全不同的问题,尤其是在拥有大量敏感数据的组织中。我会让你参考另一篇涉及这个话题的文章。在本文的其余部分,我们将假设这个问题已经解决,并且我们知道谁可以访问什么数据。问题是——我们如何隐藏秘密数据?
数据屏蔽不仅适用于数据库——它可以应用于文档、电子表格等,但这里我们将重点关注数据库。
有很多方法可以进行数据屏蔽,但一般来说,它们可以分为两类,每一类都有自己的优点和缺点。
静态屏蔽
静态掩蔽是最简单的解决方案。给定一个包含一些机密数据的数据库,您可以复制该数据库并编辑该副本以屏蔽需要屏蔽的任何数据。然后,您可以将副本提供给客户,客户可以使用它做任何他们想要的事情。
当然,对于大型数据集来说,这可能不是一个简单的过程。假设一个关系数据库有数千个表和数十亿行(或更多)。但是有一些(昂贵的)工具可以帮助您完成这项任务。
优势
显然,静态掩蔽是一个非常干净的概念。这和用剪刀剪下文件的一部分是一样的。副本中不存在机密数据,或者至少不可读,因此不存在泄漏风险。最终用户根本没有秘密数据。
对于简单的数据库,您甚至可能不需要任何工具:一些简单的SQL脚本(或数据库使用的任何语言)就足够了。
因为不存在机密数据,所以可以将屏蔽数据库的物理副本提供给客户端,并让它们在自己的机器上运行。
缺点
数据的复制可能是一个问题。它需要更多的存储空间和一个浮动的数据库副本。例如,如果向公众发布数据库,这通常不是问题;因此,只有一个版本的屏蔽数据库。
但是,如果不同的客户机有不同的需求,您可能需要制作数据库的多个副本,每个副本都有一组潜在的不同规则,用于屏蔽数据。当然,如果您对不同的客户机有不同的规则,您现在必须担心每个客户机只能访问自己的自定义版本的数据集,而不能访问任何其他客户机的数据集。追踪所有这些可能会很有挑战性。
另一个问题是副本是数据库的快照,可能需要定期更新。每次你这样做都是犯错误的机会。
最后,我们生活在大数据时代。有些数据集确实非常庞大,制作和分发这些数据集的副本可能是一项令人望而生畏的任务。
动态屏蔽
动态掩蔽采用不同的方法。不是制作数据的副本并更改副本,而是在访问数据时,在数据到达用户之前对其进行动态修改,从而为同一数据库的每个用户提供可能不同的数据视图。请注意,这并不影响数据库——它只影响用户如何查看数据。
这假设您控制数据库,并且客户端通过某种网络访问数据库。如果用户控制数据库,他们可以轻松绕过屏蔽。
一般来说,动态屏蔽可以由数据库本身或数据库服务器和数据库客户端之间的层来完成。
例如,Microsoft SQL Server提供了一些动态数据屏蔽功能,这对于许多场景来说可能足够了。PostgreSQL具有匿名器扩展。SQL Server中的数据屏蔽这是一个强大的功能,但也有一些限制。
一些第三方解决方案在数据库之外提供数据屏蔽,但它们通常依赖于特殊驱动程序或特殊客户端。一种更通用的方法是基于代理过滤,它依赖于深度数据包检查和修改,以在数据到达客户端之前屏蔽数据。
优势
动态掩蔽的最大优点是,理论上,它允许每个人只使用一个数据库。这避免了我们前面使用静态掩蔽识别的大多数问题。
动态数据屏蔽还意味着您可以更新数据屏蔽规则(通常是动态的),并随时限制或扩大某些客户端对某些数据的访问。屏蔽不仅取决于用户是谁:它还取决于他们的IP地址、一天中的时间或我们的防御级别——你可以了解情况。
客户可以立即访问新的和更新的数据,因此数据流通问题消失。
动态数据屏蔽意味着您正在控制数据库。您可以(而且可能应该)监视客户机正在做什么。如果以后出现问题,这对法医分析至关重要(想想剑桥分析)。在某些环境中,甚至可以通过合同强制数据保密,只要您密切关注客户机如何使用数据库。
缺点
动态屏蔽可能不太安全,因为用户实际上正在连接到包含机密数据的数据库。事实证明,如果客户端使用复杂的查询语言(如SQL)访问数据,则可靠地屏蔽数据是非常重要的。例如,Microsoft在其SQL Server数据屏蔽文档中特别警告了此问题。如果可以,可以使用查询控制来管理。
动态掩蔽也可以是更复杂的解决方案,具有更多的移动部件。解决方案越复杂,出现问题的可能性就越大。
结论
通常情况下,没有完美的解决方案:只有一系列的权衡需要与需求进行权衡。
如果您的数据集具有可管理的大小(这在这里是一个非常相对的概念),那么创建数据库的副本并对副本进行屏蔽可能是可行的。如果您对我们概述的缺点感到满意,这是一个很好的方法。简单的解决方案通常是最安全的。
但是,如果复制数据集是不切实际或不可取的,特别是如果您有多个具有多个屏蔽要求的客户端,那么动态屏蔽可能是您唯一现实的选择。在这种情况下,您必须考虑数据库是否能够满足您的需求,或者是否需要第三方解决方案。即使您最终使用了数据库提供的数据屏蔽功能,使用第三方工具管理权限和数据分类也可能会使您受益。
原文标题:Data Masking: Static vs Dynamic
原文作者:Max Tardiveau
原文链接:https://dzone.com/articles/data-masking-static-vs-dynamic




