2026年EOR名义雇主服务TOP3精选榜单,助力企业全球化布局新选择

核心内容摘要

OpenClaw 命令速查手册:模��网关��件�技能等命令一网打尽
Qwen3-VL-Reranker-8B性能优化:显存占用16GB内高效推理调优教程

龙虾凶猛:焦虑、财富与那扇没有为所有人打开的门

TDengine 脱敏函数用户手册目录概述脱敏函数详解MASK_FULL - 全脱敏MASK_PARTIAL - 部分脱敏MASK_NONE - 空脱敏使用场景最佳实践

注意事项概述TDengine 提供了一组数据脱敏函数用于保护敏感数据的安全。

数据脱敏是一种重要的数据安全技术可以在不影响数据可用性的前提下对敏感信息进行变形处理防止数据泄露。

脱敏函数的作用数据保护在数据查询、展示或共享时隐藏敏感信息合规要求满足数据安全和隐私保护的法规要求灵活控制支持全脱敏和部分脱敏满足不同场景需求支持的函数函数名称功能描述MASK_FULL完全替换原始数据MASK_PARTIAL部分字符脱敏保留首尾字符MASK_NONE不进行脱敏测试用脱敏函数详解MASK_FULL - 全脱敏语法MASK_FULL(str,replace_value)参数说明str需要脱敏的字符串VARCHAR 类型replace_value用于替换的字符串返回值类型VARCHAR说明返回替换后的字符串功能描述将目标数据进行全脱敏处理即完全用指定的替换值代替原始数据。

适用数据类型输入VARCHAR、NCHAR输出VARCHAR、NCHAR与输入类型一致使用示例示例 1基本用法taosSELECTMASK_FULL(mytext,CONFIDENTIAL);mask_full(mytext,CONFIDENTIAL)|CONFIDENTIAL|Query OK,1row(s)inset(

002790s)示例 2脱敏姓名-- 创建示例表CREATETABLEcustomers(tsTIMESTAMP,nameVARCHAR(

,phoneVARCHAR(

);-- 插入数据INSERTINTOcustomersVALUES(NOW,张三,

,(NOW1s,李四,

;-- 查询时脱敏姓名SELECTts,MASK_FULL(name,***)ASmasked_name,phoneFROMcustomers;-- 输出结果ts|masked_name|phone|

:00:

0

000|***|13812345678|

:00:

0

000|***|13987654321|示例 3脱敏邮箱地址SELECTMASK_FULL(userexample.com,HIDDEN);-- 结果HIDDEN示例 4处理 NULL 值SELECTMASK_FULL(NULL,CONFIDENTIAL);-- 结果NULLNULL 值不受影响应用场景完全隐藏姓名、邮箱等个人信息脱敏用户密码、密钥等高度敏感数据对外展示或报表中需要完全隐藏的数据MASK_PARTIAL - 部分脱敏语法MASK_PARTIAL(str,prefix_length,suffix_length,mask_char)参数说明str需要脱敏的字符串VARCHAR 类型prefix_length从字符串开头保留的字符数suffix_length从字符串末尾保留的字符数mask_char用于遮蔽的字符返回值类型VARCHAR说明返回部分脱敏后的字符串功能描述将目标数据进行部分脱敏处理保留字符串的前缀和后缀部分中间部分用指定字符替换。

适用数据类型输入VARCHAR、NCHAR输出VARCHAR、NCHAR与输入类型一致使用示例示例 1基本用法taosSELECTMASK_PARTIAL(mytext,1,2,*);mask_partial(mytext,1,2,*)|*yte**|Query OK,1row(s)inset(

002787s)示例 2脱敏手机号-- 保留前 3 位和后 4 位中间用 * 替换SELECTMASK_PARTIAL(13812345678,3,4,*)ASmasked_phone;-- 结果masked_phone|138****5678|示例 3脱敏身份证号-- 保留前 6 位和后 4 位SELECTMASK_PARTIAL(110101199001011234,6,4,*)ASmasked_id;-- 结果masked_id|110101********1234|示例 4脱敏银行卡号-- 保留前 4 位和后 4 位SELECTMASK_PARTIAL(6222021234567890123,4,4,*)ASmasked_card;-- 结果masked_card|6222***********0123|示例 5在表查询中使用CREATETABLEuser_info(tsTIMESTAMP,user_idINT,phoneVARCHAR(

,id_cardVARCHAR(

);INSERTINTOuser_infoVALUES(NOW,1,13812345678,

,(NOW1s,2,13987654321,

;-- 查询时同时脱敏手机号和身份证号SELECTts,user_id,MASK_PARTIAL(phone,3,4,*)ASphone,MASK_PARTIAL(id_card,6,4,*)ASid_cardFROMuser_info;-- 输出结果ts|user_id|phone|id_card|

:00:

0

000|1|138****5678|110101********1234|

:00:

0

000|2|139****4321|120102********1234|示例 6处理短字符串-- 字符串长度不足时的处理SELECTMASK_PARTIAL(ab,1,1,*);-- 结果**SELECTMASK_PARTIAL(a,1,2,*);-- 结果*示例 7处理 NULL 值SELECTMASK_PARTIAL(NULL,1,2,*);-- 结果NULL应用场景脱敏手机号码保留地区码和后四位脱敏身份证号保留地区和校验位脱敏银行卡号保留卡种标识和部分尾号脱敏邮箱地址保留用户名首字母和域名MASK_NONE - 空脱敏语法MASK_NONE(str)参数说明str字符串VARCHAR 类型返回值类型VARCHAR说明返回原始字符串不进行任何脱敏处理功能描述将目标数据进行空脱敏处理即不对数据进行任何修改原样返回。

此函数主要用于测试和开发场景。

适用数据类型输入VARCHAR、NCHAR输出VARCHAR、NCHAR与输入类型一致使用示例示例 1基本用法taosSELECTMASK_NONE(mytext);mask_none(mytext)|mytext|Query OK,1row(s)inset(

001474s)示例 2测试场景-- 在开发环境中使用便于调试SELECTMASK_NONE(name)ASname,MASK_NONE(phone)ASphoneFROMcustomers;-- 结果保持原样方便验证数据示例 3处理 NULL 值SELECTMASK_NONE(NULL);-- 结果NULL示例 4空字符串处理SELECTMASK_NONE();-- 结果空字符串应用场景开发和测试环境需要查看原始数据作为脱敏函数的占位符便于环境切换性能测试时避免脱敏开销使用场景

数据查询脱敏在 SELECT 语句中对敏感字段进行脱敏展示SELECTuser_id,MASK_PARTIAL(phone,3,4,*)ASphone,MASK_FULL(email,HIDDENEMAIL.COM)ASemail,MASK_PARTIAL(id_card,6,4,*)ASid_cardFROMuser_tableWHEREtsNOW-1d;

数据导出脱敏导出数据前进行脱敏处理-- 导出脱敏后的数据SELECTts,device_id,MASK_PARTIAL(imei,4,4,*)ASimei,MASK_FULL(user_name,***)ASuser_name,temperature,humidityFROMsensor_dataWHEREtsBETWEEN

AND

INTOOUTFILE/tmp/sensor_data_masked.csv;

报表和可视化在报表或数据可视化应用中展示脱敏数据-- 生成日报数据CREATEVIEWdaily_reportASSELECTDATE_TRUNC(day,ts)ASreport_date,COUNT(*)AStotal_users,MASK_PARTIAL(phone,3,4,*)ASsample_phoneFROMuser_activityGROUPBYDATE_TRUNC(day,ts);

权限控制结合配合 TDengine 的权限系统对不同用户展示不同程度的脱敏-- 普通用户查询完全脱敏GRANTSELECTONdatabase.tableTOnormal_user;-- 管理员用户可以看到部分脱敏数据GRANTSELECTONdatabase.sensitive_tableTOadmin_user;

数据共享向第三方或合作伙伴共享数据时进行脱敏-- 创建脱敏视图供外部访问CREATEVIEWshared_customer_dataASSELECTcustomer_id,MASK_FULL(name,***)ASname,MASK_PARTIAL(phone,3,4,*)ASphone,city,order_count,total_amountFROMcustomer_info;最佳实践

选择合适的脱敏方式高敏感数据使用MASK_FULL完全隐藏如密码、密钥中等敏感数据使用MASK_PARTIAL保留部分信息如手机号、身份证低敏感数据根据需要选择是否脱敏

脱敏参数设置建议数据类型推荐脱敏方式参数示例手机号MASK_PARTIAL(phone, 3, 4, ‘*’)身份证MASK_PARTIAL(id_card, 6, 4, ‘*’)银行卡号MASK_PARTIAL(card_no, 4, 4, ‘*’)邮箱MASK_PARTIAL(email, 3, 0, ‘*’) 或 MASK_FULL姓名MASK_FULL(name, ‘***’)地址MASK_PARTIAL(address, 6, 0, ‘*’)

性能优化建议-- 避免在大规模查询中对所有行进行脱敏-- 优化前SELECTMASK_PARTIAL(phone,3,4,*)FROMhuge_table;-- 优化后先过滤再脱敏SELECTMASK_PARTIAL(phone,3,4,*)FROMhuge_tableWHEREtsNOW-1h-- 先缩小数据范围LIMIT100;

环境区分-- 使用变量控制不同环境的脱敏策略-- 生产环境SELECTMASK_PARTIAL(phone,3,4,*)ASphone,MASK_FULL(name,***)ASnameFROMusers;-- 开发环境SELECTMASK_NONE(phone)ASphone,MASK_NONE(name)ASnameFROMusers;

脱敏日志记录建议记录脱敏操作日志满足审计要求-- 创建脱敏访问日志表CREATETABLEmask_access_log(tsTIMESTAMP,user_nameVARCHAR(

,table_nameVARCHAR(

,column_nameVARCHAR(

,operationVARCHAR(

);-- 在应用层记录脱敏访问-- INSERT INTO mask_access_log VALUES (NOW, admin, user_info, phone, MASK_PARTIAL);

与应用程序集成# Python 示例importtaos conntaos.connect(hostlocalhost,userroot,passwordtaosdata,databasedb)cursorconn.cursor()# 查询脱敏数据sql SELECT user_id, MASK_PARTIAL(phone, 3, 4, *) AS phone, MASK_FULL(email, HIDDEN) AS email FROM user_info LIMIT 10 cursor.execute(sql)resultscursor.fetchall()forrowinresults:print(fUser ID:{row[0]}, Phone:{row[1]}, Email:{row[2]})cursor.close()conn.close()

注意事项

数据类型支持支持类型VARCHAR、NCHAR不支持类型数值类型、TIMESTAMP、BOOL 等输出类型与输入类型保持一致

NULL 值处理-- NULL 值不进行脱敏直接返回 NULLSELECTMASK_FULL(NULL,HIDDEN);-- 返回 NULLSELECTMASK_PARTIAL(NULL,1,2,*);-- 返回 NULLSELECTMASK_NONE(NULL);-- 返回 NULL

空字符串处理-- 空字符串的脱敏结果SELECTMASK_FULL(,***);-- 返回 ***SELECTMASK_PARTIAL(,1,2,*);-- 返回 *SELECTMASK_NONE();-- 返回

字符长度不足的情况-- 当字符串长度小于 prefix_length suffix_length 时SELECTMASK_PARTIAL(ab,2,2,*);-- 返回 **SELECTMASK_PARTIAL(a,1,1,*);-- 返回 *

字符编码函数支持 UTF-8 编码的多字节字符对中文、日文等字符按字符而非字节计算长度SELECTMASK_PARTIAL(张三李四,1,1,*);-- 结果张**四保留首尾各 1 个中文字符

嵌套子查询支持脱敏函数适用于内层查询和外层查询-- 内层查询脱敏SELECT*FROM(SELECTMASK_PARTIAL(phone,3,4,*)ASphoneFROMusers)sub;-- 外层查询脱敏SELECTMASK_PARTIAL(phone,3,4,*)ASphoneFROM(SELECTphoneFROMusersWHEREcityBeijing)sub;

与其他函数组合-- 与字符串函数组合SELECTCONCAT(Phone: ,MASK_PARTIAL(phone,3,4,*))ASmasked_infoFROMusers;-- 与条件函数组合SELECTCASEWHENuser_levelVIPTHENphoneELSEMASK_PARTIAL(phone,3,4,*)ENDASphoneFROMusers;

安全性考虑不可逆脱敏后的数据无法还原为原始数据客户端处理脱敏在查询结果返回时处理原始数据仍存储在服务器权限控制建议结合 TDengine 的权限系统限制对敏感字段的直接访问审计日志记录脱敏操作满足合规要求

性能影响脱敏函数在查询时实时计算对性能有一定影响大规模数据查询时建议先进行数据过滤再脱敏使用 LIMIT 限制返回行数考虑在应用层缓存脱敏结果

版本支持脱敏函数在TDengine 社区版和企业版中均支持注意加密函数如 SM4_ENCRYPT、SM4_DECRYPT仅在企业版中提供

常见问题 FAQQ1: 脱敏函数是否支持超级表A:是的脱敏函数既支持普通表也支持超级表。

-- 在超级表查询中使用SELECTtbname,MASK_PARTIAL(device_id,4,4,*)ASdevice_idFROMstable_nameWHEREtsNOW-1h;Q2: 如何对多个字段批量脱敏A:在 SELECT 语句中对多个字段分别应用脱敏函数SELECTMASK_FULL(name,***)ASname,MASK_PARTIAL(phone,3,4,*)ASphone,MASK_PARTIAL(id_card,6,4,*)ASid_card,MASK_PARTIAL(email,3,0,*)ASemailFROMuser_info;Q3: 脱敏后的数据能否用于统计分析A:脱敏会改变原始数据因此不适合依赖精确值的统计如 SUM、AVG适合计数、去重等不依赖具体值的统计-- 适合的场景SELECTCOUNT(*)AStotal_users,COUNT(DISTINCTMASK_PARTIAL(phone,3,4,*))ASunique_phonesFROMusers;Q4: 如何在 INSERT 语句中使用脱敏函数A:TDengine 的脱敏函数主要用于查询场景不建议在 INSERT 时使用因为会永久改变存储的数据。

如果需要存储脱敏数据应在应用层处理。

Q5: 脱敏函数是否影响索引A:脱敏函数在查询时执行不影响表的索引结构和查询优化器的选择。

总结TDengine 提供的脱敏函数是保护数据安全的重要工具MASK_FULL完全隐藏敏感信息MASK_PARTIAL保留部分信息平衡安全与可用性MASK_NONE用于测试和开发在实际应用中应根据数据敏感级别、业务需求和法规要求合理选择脱敏策略确保在满足安全合规的同时保持数据的可用性。

关于TDengineTDengine 专为物联网IoT平台、工业大数据平台设计。

其中TDengine TSDB 是一款高性能、分布式的时序数据库Time Series Database同时它还带有内建的缓存、流式计算、数据订阅等系统功能TDengine IDMP 是一款AI原生工业数据管理平台它通过树状层次结构建立数据目录对数据进行标准化、情景化并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

jmcomic漫画网页版入门下拉式-jmcomic漫画网页版入门下拉式应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123