本文结合数据库系统,讲述现有数据库系统中应用加密技术的不同之处,以及如何根据业务需求选择合适的加密技术。
引言
日常生活中会通过添加门禁的方式来限制不同的人员进入指定区域,如分别在小区入口、单元楼入口、以及入户门添加门禁:小区门禁能够防止小区外部人员进入,单元楼门禁能够防止非本楼人员进入,入户门门禁能够防止非本户人员进入。显然,同样都是使用门禁系统,在不同位置、不同区域添加门禁所达到的限定效果是不同的。加密技术也是如此,采用加密技术对系统中的敏感数据进行加密保护是很直观的,但同样是对敏感数据进行加密,在系统关键路径中的不同位置、不同粒度数据应用加密,能达到的预期安全效果也是完全不同的。
数据库加密技术简介
云盘加密
云盘加密是指在创建ECS实例(选择系统盘、数据盘)或者单独创建数据盘时为云盘勾选加密选项,创建完成后ECS实例操作系统内的数据会在云盘所在宿主机(ECS实例服务器)被自动加密,无需自建和维护密钥管理基础设施,就能保护数据的隐私性和自主性,为业务数据提供安全边界。云盘加密可以解决数据在设备(IaaS层)中落盘安全问题。更多信息,请参见加密云盘。
Transparent Data Encryption(简称TDE)
在将数据库内存数据写入文件系统前,在引擎内部对数据先进行加密,然后将加密后的密文结果写入到文件系统。TDE可以解决数据在文件系统(PaaS层)中落盘安全问题。更多信息,请参见设置透明数据加密TDE。
选择列加密(全密态基础版)
选择列加密(全密态基础版)对查询结果在离开数据库前进行加密,并将密文结果返回给数据库客户端,由具备密钥的客户端后续自行解密,使得数据在除了客户端以及数据库内的外部流动中全程以密文形式存在。选择列加密可以解决在线数据链路的运行时安全。更多信息,请参见全密态功能概述。
潜在数据库攻击行为
数据库是一个系统应用工程,在每一个系统环节都存在潜在的安全威胁。现有数据库面临的安全问题以及可能的攻击路径如下图所示(详情请参见Oracle’s Maximum Security Architecture for Database Security):
下表将对图例中的不同攻击进行介绍:
图例攻击 | 攻击说明 | 攻击方式 |
Attack Admins | 攻击系统管理员,例如OS管理员。系统管理员具备高权限,一旦攻击者获取管理员账号,可以管理和访问所有的存储、系统、以及外设。在数据库场景下,可以对系统管理员进一步细分如下:
| OS系统漏洞、 管理员账密泄露、 系统配置不当。 |
Attack Users | 攻击终端用户,例如数据库用户。终端用户可以连接数据库系统并访问部分数据,攻击者在获得用户账号后可以访问该用户的数据(例如逻辑破坏),甚至通过提权方式(如SQL注入)获得管理员权限。 | 用户账密泄露、 逻辑拖库。 |
Attack Apps | 攻击应用服务,例如黑入网站服务器。相比于防护更严密的后端数据库,应用服务是公开可访问的,暴露面更大,更加容易被攻破。 | 应用服务漏洞、 OS系统漏洞。 |
Attack Network | 攻击网络连接,例如监听拦截网络数据。网络攻击通常以旁路方式进行,不易被检测。 | 网络监听/拦截。 |
Bypass Database | 绕过数据库系统获取数据,以旁路方式窃取数据库数据,例如PaaS人员可拷贝数据库落盘的数据文件、备份文件等(即物理拖库)。 | 物理拖库。 |
Bypass OS | 绕过OS文件系统获取数据,以旁路方式窃取磁盘上数据,例如IaaS人员可直接拷贝云盘/磁盘数据。 | 挂载攻击。 |
Exploit Database | 利用数据库的系统缺陷,例如代码bug,直接或间接访问数据库。 | 数据库系统漏洞。 |
Target Data Copies | 很多系统中是直接将生产数据同步到开发测试库进行使用的,而缺少对开发测试库上的数据安全防护,攻击开发测试库会比攻击生产库更容易。 | 以上均可能。 |
针对这些不同系统应用路径下的潜在数据库安全威胁,通常需要一个整体的安全解决方案来应对,这可能囊括了SSL与证书服务、认证与访问控制、白名单与安全组、数据加密与脱敏、安全审计等在内的不同安全技术和管理手段。
数据库加密技术能力矩阵
现有加密技术在数据库中的应用主要有云盘加密、透明数据加密以及选择列加密。下表从不同维度给出了不同数据库加密技术的特性、以及能解决的安全问题。您可以结合目标要解决的问题、以及实际场景下业务对加密粒度、改造成本、以及性能的考量,选择合适的加密技术。
数据库加密技术 | 云盘加密(DiskEncryption) | 透明数据加密 (TDE) | 选择列加密 (全密态基础版) |
能解决的问题 | Bypass OS、Attack Admins(IaaS) | Bypass Database、Bypass OS、Attack Admins(PaaS&IaaS) | Attack Users、Attack Apps、Attack Admins(DBA1)、Attack Network、Target Data Copies |
数据库运维人员(如DBA)可见数据 | 可见 | 可见 | 不可见 |
PaaS运维人员(如OS)可见数据 | 可见 | 不可见 | 可见1 |
IaaS运维人员(如物理PE)可见数据 | 不可见 | 不可见 | 可见1 |
加密粒度 | 实例 | 表/库 | 列 |
业务改造 | 无 | 无 | 需要将JDBC替换为集成EncJDBC,无需代码改造。 |
性能 | 损耗极小,几乎无损失。 |
|
|
DBA1和可见1:全密态基础版无法防止PaaS以及IaaS层运维人员访问数据明文。您可以选用全密态基础版的安全升级版本,全密态硬件加固版,结合可信硬件技术,能够抵御来自PaaS以及IaaS层的攻击。
数据库加密技术原理对比
架构视角
下图从架构视角,展示了不同加密方式在数据库系统中的作用位置:
云盘加密作用在宿主机/ECS OS层面上,对OS文件进行加解密,同一个宿主机/ECS上的所有数据库实例共用云盘加密。
TDE作用在数据库实例上,对数据库缓存文件进行加解密,每个实例单独生效。
选择列加密作用在数据库实例上,对数据库内存查询结果进行加解密,返回密文数据给到应用程序,每个实例单独生效。
选择列加密、TDE或云盘加密可以叠加组合使用。
数据视角
下图从数据视角,展示了不同加密方式下,数据在数据库系统中的明文和密文状态。
云盘加密下,数据在云盘以密文形式存在,而在OS文件以及数据库内均以明文形式存在。
TDE加密下,数据在云盘以及OS文件内均以密文形式存在,而在数据库内以明文形式存在。
选择列加密下,数据在数据库内(引擎内部除外)以密文形式存在,而在OS文件以及云盘以明文形式存在,即运行时数据密文、落盘数据明文。
选择列加密+TDE叠加组合加密方式可以确保数据全链路以密文方式存在。
不同数据库加密技术差异汇总
存储安全技术 | 云盘加密 | TDE | 选择列加密 |
作用位置 | OS | 数据库内核 | 数据库内核 |
作用范围 | 宿主机/ECS实例 | 数据库实例 | 数据库实例 |
加密粒度 | 实例 | 库/表 | 列 |
应用感知 | 对应用透明 | 对应用透明 | 应用需切换JDBC |
总结
目前数据库加密技术已经非常成熟,但从用户的角度来看,数据库仍然面临着各种安全威胁。针对这些威胁,有不同的数据库加密技术可供选择,包括云盘加密、TDE加密、选择列加密等。您可以结合具体的应用场景,根据目标安全诉求、业务改造成本、性能等不同维度因素,选择适用的数据库加密技术。