【问题标题】:Data masking or security using Views?使用视图进行数据屏蔽或安全性?
【发布时间】:2018-07-18 14:52:19
【问题描述】:

环境:SQL Server 2012 我正在努力为我们的组织构建一个包括数据屏蔽和加密的解决方案。

目前,我们没有任何数据屏蔽,因此没有必要。 我们正在识别可以识别数据是否敏感的数据或可能导致个人身份的非敏感数据的某些组合。

一种方法是使用某种工具,例如 Redgate 数据生成器或 DataVeil,它们可以为我们想要用于 Dev 或 UAT 环境的字段生成数据库的虚拟数据。 其他将使用某种函数,根据长度将某些字符屏蔽为 xxxx 或 ****。

在生产环境中,据了解,由于屏蔽是不可逆的,因此需要进行加密,我将在未来几周内了解更多信息。 当数据是从工具生成或使用 TSQl 代码屏蔽并基于对生产环境密钥的访问时,上述场景适用于每个用户在 UAT 和 Dev 中看到相同数据的情况。 请纠正我以上任何你认为不正确的地方。

接下来是使用视图的基于用户的访问。使用视图的安全性材料并不多,因此询问如果我们采用这条路线而不是上述路线,我们将如何实施。

我了解可以授予用户使用视图访问基础表的权限。 现有的查询和 SSRS 报告和多维数据集呢? 这怎么能与视图一起工作?我是否更改每个查询?我在这里有点迷路。

【问题讨论】:

  • 您的 UAT 和 DEV 环境是否需要唯一的假数据,或者相同的虚拟数据是否适用于每条记录?
  • 我们尚未决定记录的唯一性是否重要。如果需要唯一性,任何工具都可以提供帮助。我的想法是当基于访问/权限屏蔽数据时该怎么做。 SQL 2016 可以轻松处理它,但我们使用的是 SQL 2012,我不确定如何实现。

标签: sql-server database tsql security data-masking


【解决方案1】:

可以通过创建一个新的“掩码”视图来完成视图选项,该视图包括源表中的所有列,并用一个虚拟的固定值替换敏感列。

例如:

create view vMaskPeople
as
SELECT ID, DateCreated, 'Sample Name' as FullName, 'Sample Telephone' as Phone
FROM People

如果您需要更多独特的样本数据,请部分屏蔽列,例如:

SELECT ID, DateCreated, 
    Left(FullName,3)+'XXXXXX' as FullName, 
    'XXX-XXXX-'+Right(Phone,4) as Phone

如果您无法以某种方式装配开发环境以使用新的掩码视图,您可以将源表“人”表重命名为喜欢“人 1”,然后将掩码视图命名为“人”

【讨论】:

  • 所以我的问题是,我创建一个视图并简单地授予用户对该视图的访问权限以满足新的需求。基于过程或多维数据集从维度数据库获取数据的已构建查询和 SSRS 报告又如何呢?是否有可能让一些用户看到未屏蔽的数据,而另一些不是基于权限的数据?
【解决方案2】:

您提到了 SQL 数据生成器,它从头开始创建一个新的数据集,但在 Redgate,我们也有 Data Masker,它允许您获取现有数据库并指定屏蔽规则,这听起来可能适合您的场景更好。

【讨论】:

  • 谢谢。我也检查了 RedGate 的产品,这些天我也经常使用你们的 SQL Doc。大多数数据生成器都能够生成假数据,但我正在寻找基于访问的屏蔽数据。
猜你喜欢
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
相关资源
最近更新 更多