动态数据屏蔽怎么用,Azure SQL数据库里那些事儿入门讲解
- 问答
- 2026-01-26 12:42:32
- 16
动态数据屏蔽怎么用,Azure SQL数据库里那些事儿入门讲解
直接开始讲,动态数据屏蔽是Azure SQL数据库里一个保护敏感数据的功能,简单说,它能在不改变数据库里实际存储数据的前提下,把敏感信息部分隐藏起来,让不同的人看到不同的内容,一个客服人员查客户表,只能看到电话号码的后四位,而经理可以看到完整号码,这个功能直接在数据库层面实现,应用程序基本不用改代码。

根据微软Azure官方文档,动态数据屏蔽主要做两件事:一是限制未授权用户看到敏感数据,二是非常简单易用,几乎不影响现有程序运行。
它怎么工作? 它不是把数据真的加密或修改了,而是在查询结果返回时,根据你设定的规则,把数据的一部分“遮住”,你定义好“谁”(哪些用户或角色)对“哪些字段”用“什么遮挡方法”,当没有足够权限的用户执行查询时,返回的结果集里,被屏蔽的字段就会显示为遮挡后的样子,但有足够权限的管理员或特定用户,看到的还是完整数据。

怎么设置? 在Azure门户上管理你的SQL数据库,找到“动态数据屏蔽”选项,或者在数据库里直接用T-SQL语句设置,设置过程主要分三步:
- 选定要屏蔽的列:你选择数据库里包含敏感数据的列,比如
Email、身份证号、信用卡号这些字段。 - 选择屏蔽函数(遮挡方式):就是决定怎么遮,Azure提供了几种预设的格式:
- 默认屏蔽(完全屏蔽):对于字符串类型,直接显示“XXXX”;对于数字,显示“0”,比如一个名字“张三”,屏蔽后就是“XXXX”。
- 邮箱屏蔽:只显示邮箱的第一个字符和“@”符号后的域名部分,abc@example.com”会显示为“aXXX@XXXX.com”。(根据微软Azure官方文档示例)
- 部分屏蔽:这个最常用,你可以自定义,比如对身份证号,你定义从第7位开始(前6位显示),共屏蔽8位(用‘X’代替),110101199001011234”就会显示为“110101XXXXXXXX1234”,对电话号码“13800138000”,可以定义只显示后四位,显示为“XXXXXXX8000”。
- 随机数屏蔽:针对数字列,用一个随机值代替真实值,这个随机值在一个你指定的范围内。
- 指定豁免用户:你可以设定哪些SQL用户或Azure AD身份不受屏蔽规则影响,通常会把应用程序使用的服务账号、数据库管理员或审计员加进去,确保核心业务程序能正常处理全量数据。
举个例子:
假设有个客户表,里面有客户姓名、手机号、邮箱字段,你想让普通销售员只能看到手机号后四位和屏蔽后的邮箱。

-
你用管理员账号登录数据库,运行类似下面的SQL命令(根据微软Azure官方文档中的语法):
-- 对‘手机号’列启用部分屏蔽,只显示后四位 ALTER TABLE 客户表 ALTER COLUMN 手机号 ADD MASKED WITH (FUNCTION = 'partial(3,"XXXXXXXX",4)'); -- 这里‘partial(3,"XXXXXXXX",4)’是一种示例,表示前3位用‘X’遮住,中间固定用"XXXXXXXX"填充,显示最后4位,实际参数需根据需求调整。 -- 对‘邮箱’列启用邮箱屏蔽 ALTER TABLE 客户表 ALTER COLUMN 邮箱 ADD MASKED WITH (FUNCTION = 'email()');
-
你把销售团队的用户添加到一个数据库角色(比如
SalesRole),并不把这个角色加到屏蔽豁免列表里。 -
当销售员用工具或程序连接数据库查询
客户表时,他看到的手机号可能是“138XXXXX5678”,邮箱是“zXXX@XXXX.com”,而你自己用管理员账号登录查询,看到的还是完整信息。
需要注意的那些事儿:
- 不是铁壁铜墙:动态数据屏蔽主要目的是防止在即席查询、报表或支持工具中意外暴露数据,它不能防止有权限的用户直接连接数据库并运行查询来推测数据,对于需要强安全性的场景,应该结合始终加密、透明数据加密等其他技术。
- 对某些操作不屏蔽:根据微软Azure官方文档说明,像
GROUP BY、WHERE子句过滤或计算操作,可能会绕过屏蔽,如果对屏蔽列做WHERE 手机号 = ‘13800138000’,即使这个号码被屏蔽显示,这个查询条件依然能匹配到正确行,屏蔽主要作用于最终结果集的显示。 - 权限管理是关键:必须妥善管理数据库用户的权限,如果一个用户对表拥有
UPDATE权限,他即使看到的是被屏蔽的数据,也可能通过更新操作来覆盖原始数据,通常只授予普通用户SELECT权限。 - 数据类型要匹配:选择的屏蔽函数必须适用于列的数据类型,不能给数字列用邮箱屏蔽函数。
- 添加屏蔽不影响数据:启用或禁用屏蔽是即时生效的元数据操作,不会修改表中的任何实际数据行,也不会导致服务中断。
在Azure SQL数据库里,动态数据屏蔽是一个低成本、易上手的敏感数据保护入门工具,它能快速为应用程序的数据展示层增加一道基础防护,尤其适合开发测试环境、数据分析报表场景,或者配合严格的数据库角色权限,控制不同内部人员的数据可见范围,要有效使用它,核心在于理清你的数据分类、用户角色,并明白它最适合的应用场景。
本文由太叔访天于2026-01-26发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://rtpg.haoid.cn/wenda/86182.html
