使用视图进行数据屏蔽还是安全性?

时间:2018-07-18 14:52:19

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

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

当前,我们没有任何数据屏蔽,因此没有必要。 我们正在识别可能将数据识别为敏感数据或不敏感数据的某些组合,这些组合可能导致一个人的身份。

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

在生产环境中,根据了解,由于屏蔽是不可逆的,因此需要进行加密,我将在接下来的几周中进一步了解。 当从工具生成数据或使用TSQ1代码并基于对生产环境的密钥的访问将数据掩盖数据时,每个用户都将在UAT和Dev中看到相同的数据,因此可以使用上述方案。 请在您认为不合适的任何地方纠正我。

接下来是使用视图的基于用户的访问。使用视图进行安全保护的材料不多,因此请问如果采用这种方法而不是上面提到的方法,我们将如何实现。

我了解可以使用视图授予用户访问基础表的权限。 现有查询,SSRS报告和多维数据集又如何? 如何处理视图?我是否更改每个查询?我在这里不知所措。

2 个答案:

答案 0 :(得分:2)

可以通过创建一个新的“蒙版”视图来完成“查看”选项,该视图包括源表中的所有列,并使用伪固定值替换敏感列。

例如:

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”,然后将蒙版视图命名为“人”

答案 1 :(得分:1)

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