2026 年,企业数据安全正在从“权限控制”走向“数据使用过程治理”。
过去,很多企业已经建立了账号权限、数据库权限、系统登录权限和网络访问控制。但在真实业务中,数据经常需要被开发、测试、分析、运营和外部合作方使用。
如果直接使用原始数据,就可能暴露手机号、身份证号、银行卡号、地址、薪资和客户信息。
因此,数据脱敏平台开始成为企业数据安全的重要基础设施。
它的核心不是简单把字段打码,而是自动识别敏感字段,根据用户角色和使用场景选择脱敏策略,并记录访问审计。
企业数据表数量多、字段命名复杂、使用场景多样。
如果完全依赖人工标记敏感字段,很容易遗漏。如果所有人都看到同样数据,又会影响业务效率。
数据脱敏平台可以帮助企业回答几个问题:
下面用 Python 写一个简化版数据脱敏治理系统。
第一步是准备数据资产字段信息。
import json
import re
from datetime import datetime
from collections import defaultdict
DATA_TABLES = [
{
"table_name": "customer_profile",
"fields": [
"customer_id",
"name",
"phone",
"id_card",
"address",
"city"
]
},
{
"table_name": "employee_salary",
"fields": [
"employee_id",
"employee_name",
"department",
"salary",
"bank_account"
]
},
{
"table_name": "order_detail",
"fields": [
"order_id",
"customer_id",
"amount",
"receiver_phone",
"receiver_address"
]
}
]
SAMPLE_ROWS = {
"customer_profile": {
"name": "张三",
"phone": "13812345678",
"id_card": "310101199001011234",
"address": "上海市浦东新区某路100号"
},
"employee_salary": {
"employee_name": "李四",
"salary": "25000",
"bank_account": "6222020202020202020"
},
"order_detail": {
"receiver_phone": "13987654321",
"receiver_address": "杭州市西湖区某街道"
}
}数据脱敏治理的第一步,是知道企业有哪些字段可能包含敏感信息。
字段名和样本值都可以用于识别。
第二步是根据字段名识别敏感类型。
SENSITIVE_RULES = {
"phone": ["phone", "mobile", "tel"],
"id_card": ["id_card", "identity"],
"address": ["address"],
"salary": ["salary", "income"],
"bank_account": ["bank", "account"]
}
def detect_sensitive_field(field_name):
lower_name = field_name.lower()
for sensitive_type, keywords in SENSITIVE_RULES.items():
for keyword in keywords:
if keyword in lower_name:
return {
"sensitive": 30654.t.kuaisou.com
"sensitive_type": sensitive_type
}
return {
"sensitive": False,
"sensitive_type": None
}字段名识别是最基础的方式。
真实平台还会结合数据内容识别、正则规则和机器学习模型。
第三步是定义不同敏感类型的脱敏方式。
def mask_value(value, sensitive_type):
text = str(value)
if sensitive_type == "phone":
return text[:3] + "****" + text[-4:]
if sensitive_type == "id_card":
return text[:6] + "********" + text[-4:]
if sensitive_type == "address":
return text[:3] + "****"
if sensitive_type == "salary":
return "***"
if sensitive_type == "bank_account":
return text[:4] + "********" + text[-4:]
return "***"脱敏策略要按字段类型处理。
手机号、身份证号、地址和薪资,不能使用同一种规则。
第四步是定义不同角色是否能查看原文。
ROLE_POLICIES = {
"admin": {
"view_raw": True
},
"data_analyst": {
"view_raw": False
},
"developer": {
"view_raw": False
},
"hr_manager": {
"view_raw": True
},
"external_partner": {
"view_raw": False
}
}
def can_view_raw(user_role, sensitive_type):
policy = ROLE_POLICIES.get(
user_role,
{
"view_raw": False
}
)
if user_role == "hr_manager" and sensitive_type in ["salary", "bank_account"]:
return True
return policy["view_raw"]数据脱敏不是所有人都看不到原文。
关键是根据角色、场景和字段类型进行精细化控制。
第五步是在查询结果返回时执行动态脱敏。
def apply_dynamic_masking(table_name, row, user_role):
masked_row = {}
for field, value in row.items():
sensitive_result = detect_sensitive_field(field)
if not sensitive_result["sensitive"]:
masked_row[field] = value
continue
sensitive_type = sensitive_result["sensitive_type"]
if can_view_raw(user_role, sensitive_type):
masked_row[field] = value
else:
masked_row[field] = mask_value(
value,
sensitive_type
)
return {
"table_name": table_name,
"user_role": user_role,
"data": masked_row
}动态脱敏的优势是灵活。
同一份数据,不同角色看到的结果不同,不需要复制多份数据。
第六步是记录敏感数据访问行为,并判断是否存在风险。
ACCESS_LOGS = []
def write_access_log(user_id, user_role, table_name, fields):
sensitive_fields = []
for field in fields:
result = detect_sensitive_field(field)
if result["sensitive"]:
sensitive_fields.append({
"field": field,
"sensitive_type": result["sensitive_type"]
})
risk_level = "normal"
if user_role == "external_partner" and sensitive_fields:
risk_level = "high"
elif user_role == "developer" and len(sensitive_fields) >= 2:
risk_level = "medium"
log = {
"user_id": user_id,
"user_role": user_role,
"table_name": table_name,
"sensitive_fields": sensitive_fields,
"risk_level":30549.t.kuaisou.com
"access_time": datetime.now().isoformat()
}
ACCESS_LOGS.append(log)
return log审计日志是数据安全治理的重要证据。
它可以帮助企业发现高风险访问行为。
最后模拟一次数据查询和脱敏返回。
def run_data_masking_governance():
user = {
"user_id": "user_001",
"role": "data_analyst"
}
table_name = "customer_profile"
row = SAMPLE_ROWS[table_name]
masked_result = apply_dynamic_masking(
table_name,
row,
user["role"]
)
access_log = write_access_log(
user["user_id"],
user["role"],
table_name,
row.keys()
)
field_scan_results = []
for table in DATA_TABLES:
for field in table["fields"]:
result = detect_sensitive_field(field)
field_scan_results.append({
"table_name": table["table_name"],
"field": field,
"sensitive": result["sensitive"],
"sensitive_type": result["sensitive_type"]
})
report = {
"report_name": "数据脱敏平台治理报告",
"field_scan_results": field_scan_results,
"masked_result": masked_result,
"access_log": 30549.t.kuaisou.com
"generate_time": datetime.now().isoformat()
}
return report
if __name__ == "__main__":
report = run_data_masking_governance()
print(json.dumps(
report,
ensure_ascii=False,
indent=2
))从这套流程可以看到,数据脱敏正在从手工处理走向自动治理。
未来,企业不会只依赖数据库权限来保护数据,还会在字段识别、角色控制、动态脱敏和访问审计上建立完整机制。
数据使用越频繁,脱敏治理越重要。
谁能把敏感字段识别、权限策略和脱敏执行结合起来,谁就更容易在保证数据安全的同时释放数据价值。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。