SQLServer动态掩码的细致介绍(代码示例)
动态数据掩码(DDM)是SQL Server 2016引入的一个新功能。目的就是限定没有权限的人去看到一些隐私信息。治理员会员能够决议哪些字段是需要被掩码的,那么怎样在不转变利用程序代码的根基上掩码?还要保障不管怎样拜访数据,都是一致的。
这是Azure SQL数据库中首次引入的特性,它在云上承受会员的测试,并已迁移到当地产品。我想许多其他的新特性也会遵循这条方式(云--当地)。
需要注意的是与我以前的行级别数据平安同样,这些都是数据平安相干内容(举荐课程:MySQL教程)
列数据掩码
第一新建一个在一些数据上带有掩码版的表。我将在表定义中开端的一个字段中增加一个掩码。注意,这样做的方式是在数据类型之后运用“mask with()”格局,但是在NULL和默许选项以前,要在圆括号内包括FUNCTION = ",它指定了我们的函数。在引号内,我们指定掩码。CREATE TABLE语句如下
CREATE TABLE MyTable ( MySSN VARCHAR (10) MASKED WITH (FUNCTION = 'default()') DEFAULT ('0000000000' ) , MyName VARCHAR (200) DEFAULT ( ' ') , MyEmail VARCHAR (250) DEFAULT ( '') , MyInt int ) GO INSERT dbo. MyTable ( MySSN , MyName, MyEmail , MyInt) VALUES ( '1234567890', 'Steve Jones', 'SomeSteve@SomeDomain.com', 10 )
要是新建者查询这个表,就会看到一个普通的表。我得到所有的数据,当它被插入时。这是由于我是一个有权限的会员。同理那些拥有dbo特权(db_owner或sysadmin角色)的会员将不会看到屏蔽数据。此刻新建一个正常的会员没有高权限的会员。固然,我需要授予普通的SQL Server权限来查看表中的数据。
CREATE USER mytest WITHOUT LOGIN GRANT SELECT ON mytable TO mytest
此刻我们可以用这个会员查询这个表,看一下有什么不一样。
我可以在表上定义其他类型的掩码。有一个自定义的掩码格局,允许控制显示的内容,一个电子邮件地址的遮罩,和一个随机的数字遮罩。我们将在另一篇文章中细致计议这些题目。
此刻可以增加掩码到另一列上面,比方邮件MyEmail列,可以运用邮件掩码的格局,概括代码如下:
ALTER TABLE dbo.MyTable ALTER COLUMN MyEmail VARCHAR(250) MASKED WITH (FUNCTION='email()') GO
然后查询效果如下:
也可以对多个和列进行掩码
CREATE TABLE MySecondTable ( MyEmail VARCHAR( 250) MASKED WITH (FUNCTION= 'email()') , MySSN VARCHAR (10) MASKED WITH (FUNCTION ='default()') , MyID INT MASKED WITH (FUNCTION ='random(1,4)') )GOINSERT MySecondTable VALUES ( 'myname@mydomain.com', '1234567890', 100 ) , ( 'abrother@mycorp.com' , '0123456789' , 555) , ( 'somesister@somecompany.org' , '9876543210' , 999)
查询效果如下:
移除掩码
代码如下:
ALTER TABLE dbo.MySecondTable ALTER COLUMN MySSN DROP MASKED;
一旦我这样做,会员将直接看到真实数据。
MySSN列的数据是未屏蔽的,但是MyEmail和MyID的数据依然是屏蔽的
总结
动态数据屏蔽是一个非常不错的新特性,旨在更容易地维护数据不挨非特权会员的影响。这可以在数据库中实现,而不需要更改任何利用程序代码,从而允许您以最小的老本和工作量对利用程序会员屏蔽敏锐数据。我还要提示您,这并不是真正的平安特性。存储在磁盘和表中的数据不会以任何方式更改。这依然是纯文本数据,要是会员能够查询系统,他们依然可以潜在地查询您的数据并发明其值。
不管怎样,这个特性关于尤为是需要数据脱密运用的系统来说无疑是有帮忙的。固然17今后功能也有了长脚的进步背面有时机我会继续介绍。
以上就是SQLServer动态掩码的细致介绍(代码示例)的细致内容,更多请关注 百分百源码网 其它相干文章!