数据屏蔽或使用视图的安全性



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

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

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

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

接下来是使用视图进行基于用户的访问。没有太多关于使用视图的安全性的材料,所以询问如果我们采取这条路线而不是上述路线,我们可以如何实现。

我知道用户可以使用视图访问底层表。现有查询、SSRS报告和多维数据集如何?这怎么能与观点相结合呢?我是否更改每个查询?我在这里有点迷路。

View选项可以通过创建一个新的"mask"视图来完成,该视图包括源表中的所有列,并用伪固定值替换敏感列。

例如:

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

如果您无法以某种方式装配开发环境以使用新的掩码视图,您可以将源"People"表重命名为类似"People1",然后将掩码视图命名为"People’

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

最新更新