千家信息网

SQLServer动态掩码的案例分析

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章给大家分享的是有关SQLServer动态掩码的案例分析的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。动态数据掩码(DDM)是SQL Server 2016引入的一个
千家信息网最后更新 2025年01月20日SQLServer动态掩码的案例分析

这篇文章给大家分享的是有关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)GOINSERT dbo. MyTable ( MySSN , MyName, MyEmail , MyInt)VALUES ( '1234567890', 'Steve Jones', 'SomeSteve@SomeDomain.com', 10 )

如果创建者查询这个表,就会看到一个普通的表。我得到所有的数据,当它被插入时。这是因为我是一个有权限的用户。同理那些具有dbo特权(db_owner或sysadmin角色)的用户将不会看到屏蔽数据。现在创建一个正常的用户没有高权限的用户。当然,我需要授予普通的SQL Server权限来查看表中的数据。

CREATE USER mytest WITHOUT LOGINGRANT SELECT ON mytable TO mytest

现在我们可以用这个用户查询这个表,看一下有什么不同。

我们可以看到第一列包含掩码数据。只有x出现在数据的位置。这就实现了我想要的,即对非特权用户隐藏数据。注意,磁盘上的数据没有更改。数据只有在返回给非特权用户时才会被屏蔽。
我可以在执行计划的最后一部分看到这种情况。我需要授予用户查看计划的权限,但是当我这样做时,我看到的是用户的计划,使用的是上面相同的查询。

我可以在表上定义其他类型的掩码。有一个自定义的掩码格式,允许控制显示的内容,一个电子邮件地址的遮罩,和一个随机的数字遮罩。我们将在另一篇文章中详细讨论这些问题。

现在可以添加掩码到另一列上面,比如邮件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)

查询结果如下:

正如我们所看到的,我从不同的行得到不同的掩码,每个掩码应用于特定行的数据。

允许用户看到掩码真实数据

SQL Server 2016中有一个新的DDM权限。这是UNMASK权限,它和其他任何权限一样被授予。让我们来看看这是如何工作的。我将创建一个具有与现有用户相同权限的新用户。然后我将查询该表。

与之前相似的结果,然后我们在给用授权打开掩码。

现在我们可以看到数据的显示方式与特权用户的显示方式相同。对于NewTester用户,所有的数据都是"未屏蔽的"。
然而,这也有不利的一面。UNMASK权限在数据库范围内授予用户。没有按表或列划分的粒度。如果用户具有UNMASK,他们可以查看存储在数据库中的表中具有SELECT权限的所有数据。我们可以通过使用Newtest查询第一个表来看到这一点。

移除掩码

代码如下:

ALTER TABLE dbo.MySecondTable  ALTER COLUMN MySSN DROP MASKED;

一旦我这样做,用户将直接看到真实数据。

MySSN列的数据是未屏蔽的,但是MyEmail和MyID的数据仍然是屏蔽的

动态数据屏蔽是一个很好的新特性,旨在更容易地保护数据不受非特权用户的影响。这可以在数据库中实现,而不需要更改任何应用程序代码,从而允许您以最小的成本和工作量对应用程序用户屏蔽敏感数据。我还要提醒您,这并不是真正的安全特性。存储在磁盘和表中的数据不会以任何方式更改。这仍然是纯文本数据,如果用户能够查询系统,他们仍然可以潜在地查询您的数据并发现其值。

感谢各位的阅读!关于SQLServer动态掩码的案例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

数据 用户 权限 查询 方式 特权 动态 代码 内容 数据库 特性 这是 应用 不同 相同 安全 应用程序 格式 程序 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 是信息化建设和网络安全的坚强 网络技术服务问题 软件测评好还软件开发好 给方舟服务器招人的宣传片 vb编程如何访问数据库 服务器端口对应哪个服务 局域网服务器可以用光纤连接吗 祁阳广东软件开发哪家好 西安中软软件开发 联想服务器光纤模块 2022年冬奥会网络安全工作报告 山东华为服务器虚拟化技术 制定镇政府网络安全工作方案 触摸屏能做数据库数据调用吗 数据库和网络其他系统的通信 杭州比较好的软件开发公司 网络安全作品征文 读取数据库字符串出错 市场调研数据库 中山市卡迅网络技术有限公司 有关网络安全的宣传画 wdcp 大数据库 导入 我的世界呆呆空岛服务器 虹口区专业软件开发价格便宜 朱海仑关于网络安全指示 网络安全之qq群 fm2022载入数据库 防止网络安全的海报 银行服务器如何更改手机号码 上海软件开发者一般去哪些网站
0