7.2 加密与数据保护:四件武器的边界


7.2 加密与数据保护:四件武器的边界

本节摘要:加密不是一把万能锁,而是四把用途不同的门:传输加密防窃听,透明数据加密(TDE)防磁盘与备份被偷,动态脱敏让低权限者"只见格式不见内容",Always Encrypted 连数据库管理员都看不到明文。本节讲清每件武器的保护边界与代价,并给一张按数据分级选型的决策表——选错武器比不加密更危险,因为它制造了虚假的安全感。

加密不是一把锁,是四把不同的门

先画对手画像再谈加密,因为每种加密防的对手不同。传输加密(TLS 连接加密)防的是网络链路上的窃听——数据在网线上是密文,进实例解密处理。TDE防的是存储介质失守——数据文件、日志文件、备份文件整盘密文,磁盘被拔走、备份被拷走,拿到的都是乱码;但数据在实例内存里、在合法会话眼里完全是明文——它防不了数据库管理员,也防不了 SQL 注入。动态数据脱敏防的是越权围观——低权限用户查询手机号返回的是打码形态(一三八某某某某五六七八),但底层存储仍是明文,说明白点它是"授权的展示层",不是加密。Always Encrypted是天花板:加密解密发生在客户端驱动层,密钥根本不进数据库——服务器端全程只见密文,DBA 查表看到的手机号也是密文;代价是服务端无法对密文列做范围查询与索引查找(确定性加密可等值查),功能受限显著。

四件武器的边界用一张表收拢:

武器 防住谁 防不住谁 性能代价 典型对象
TLS 传输加密 链路窃听 端点内所有人 极小 全部连接标配
TDE 静态加密 磁盘与备份窃取 管理员与注入 个位数百分比 全库标配
动态脱敏 越权围观明文值 真正的加密需求 几乎为零 手机号证件号展示
Always Encrypted 连 DBA 在内的一切服务端 需要服务端计算的场景 明显,功能受限 支付卡号核心机密

落地:TDE 的三步与三个坑

TDE 是全库标配的默认选项,落地三步:建主钥匙、建证书、开加密。三个坑要提前知道。其一,证书必须立即备份——丢了证书等于把库锁进保险柜又吞了钥匙,备份库在别处还原时没有证书就是一堆密文;其二,可用性组与镜像环境里证书要同步到每个副本,否则副本初始化直接失败,这是第 6 章演练清单的隐藏项;其三,tempdb 会被连带加密——实例级影响,开 TDE 前要评估实例上所有库。

-- TDE 三步 USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'强口令-入密钥库'; CREATE CERTIFICATE cert_TDE_Orders WITH SUBJECT = N'订单库TDE证书'; BACKUP CERTIFICATE cert_TDE_Orders TO FILE = N'Z:\secure\cert_TDE.cer' WITH PRIVATE KEY ( FILE = N'Z:\secure\cert_TDE.pvk', ENCRYPTION BY PASSWORD = N'另一强口令' ); -- 坑一:立即异地备份 USE 订单库; CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256; ALTER DATABASE 订单库 SET ENCRYPTION ON; -- 后台逐步加密,期间可正常服务
-- 动态脱敏:三分钟给敏感列上展示层保护 ALTER TABLE dbo.客户 ALTER COLUMN Phone ADD MASKED WITH (FUNCTION = 'partial(3,4)'); ALTER TABLE dbo.客户 ALTER COLUMN IdNo ADD MASKED WITH (FUNCTION = 'default()'); GRANT UNMASK TO [CORP\csr_lead]; -- 只有坐席主管可看全量 -- 低权限会话查 Phone 得到:138****5678;管理员与 UNMASK 授权者见全量。

按分级选型:一张决策表跑完敏感字段

把字段分级再对号入座,选型就不会漏。一级机密(支付卡号、密钥本体):Always Encrypted,宁可牺牲服务端计算能力也要做到"管理员不可见",同时约束应用侧密钥管理。二级敏感(身份证、手机号、住址):TDE 全库打底加动态脱敏管展示,需要精确匹配的(登录手机号校验)走库内哈希比对而不是明文存储。三级内部(业务流水、订单内容):TDE 全库加密即可,权限层(7.1)管住访问。传输与备份:TLS 全连接标配;备份文件随 TDE 自动加密,云对象存储再叠一层服务端加密——备份是窃取者最爱的"离线全量数据库",双保险不冤枉。

一次翻车案例归档:某系统为"合规过检"给手机号列上了 Always Encrypted,上线后发现"按手机号尾号模糊查询"全数瘫痪——决策时没人问"这个字段需要服务端做什么运算"。正确路径是二级敏感方案:脱敏展示加哈希等值比对。加密选型的第一问不是"哪个最安全",而是"这个字段在服务端还需要哪些运算能力"——运算需求与加密强度成反比,这是本节最重要的一个判断。

备份加密与密钥轮换

TDE 让备份顺带加密,但还有一类场景需要独立的备份加密:库没开 TDE、或需要把备份送到外部保管时单独加密。备份加密在备份语句上直接指定证书与算法,还原时持同证书即可——证书的保管比备份本身更关键,证书加私钥要异地多份、口令分人保管,丢了证书的备份是石头。密钥轮换的纪律也一并立好:TDE 证书按年轮换(轮换只影响新写入的加密层,旧数据照常可读),备份加密证书随备份保留期同步归档——三年保留期的备份,其证书就要保三年,时间轴对不齐是密钥管理最常见的翻车点。
把加密相关的"钥匙清单"做成一张表:对象(库、备份)、密钥(主钥匙、证书)、保管位置、口令持有人、轮换周期、恢复演练日期。安全审查时这张表就是答卷——加密体系是否可靠,不看算法多新,看钥匙的生命周期是否有人负责。

本节要点回顾

  • 四件武器防四类对手:传输防窃听、TDE 防偷盘、脱敏防围观、Always Encrypted 防管理员,边界不同不可互替;
  • TDE 是全库标配:性能代价小,但证书备份与副本同步是两个致命细节;
  • 脱敏是展示层不是加密:底层明文,配合权限使用,防的是越权围观;
  • Always Encrypted 是天花板也是窄门:密钥不进服务器,代价是服务端运算能力大幅受限;
  • 选型先问运算需求:服务端要算什么决定加密强度上限,虚假的安全感比不加密更危险;
  • 备份是离线全量库:TDE 加对象存储双层加密,是防窃取的最后一道。

数据看不懂了,但"谁在什么时候碰过数据"还要说得清——下一节进入审计与合规,给整个安全体系装上行车记录仪。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U