此FAQ来源于官网链接。此为新版,老版的博客参见Oracle TDE(Transparent Data Encryption) 常见问题解答。
TDE 以透明方式加密 Oracle 数据库中的静态数据。它可以阻止操作系统未经授权尝试访问存储在文件中的数据库数据,而不会影响应用程序使用 SQL 访问数据的方式。TDE 可以加密整个应用程序表空间或特定的敏感列。TDE 与 Oracle 数据库完全集成。加密数据在数据库中保持加密状态,无论是在表空间存储文件、临时表空间、撤消表空间中,还是 Oracle 数据库所依赖的其他文件(如重做日志)中。此外,TDE 还可以加密整个数据库备份 (RMAN) 和数据泵导出。
TDE 对业务应用程序透明,不需要更改应用程序。加密和解密发生在数据库存储级别,不会影响应用程序使用的 SQL 接口(无论是入站 SQL 语句还是出站 SQL 查询结果)。
请注意,TDE 已通过认证,可用于常见的打包应用程序。这些认证主要用于分析不同应用程序工作负载下的 TDE 性能,以及获取应用程序部署技巧、脚本和最佳实践。一些应用程序供应商会进行更深入的集成,并使用自己的工具包提供 TDE 配置步骤。
我们的建议是使用 TDE 表空间加密。在大多数情况下,TDE 表空间加密具有更好、更一致的性能特征。此外,表空间加密尤其利用基于硬件的加密加速(如果可用),将性能影响进一步降至“接近零”的范围。自 Oracle Database 11g Release 2 Patchset 1 (11.2.0.2) 起,支持基于硬件的加密加速,适用于配备 AES-NI 和现代 Oracle SPARC 处理器的 Intel 芯片组。
有关特定于您的 Oracle Database 版本的 TDE 列加密的更多详细信息,请参阅此处提供的 Oracle Database 产品文档中“安全性”下的“高级安全指南”。
TDE 表空间加密 (Oracle Database 11g+) | |
---|---|
存储 | 无额外存储开销。 |
性能 | 根据内部基准测试和运行生产工作负载的客户的反馈,性能开销通常为个位数。从 Oracle Database 11g Release 2 Patchset 1 (11.2.0.2) 开始,TDE 表空间加密会自动利用最新 Intel 处理器中提供的基于 AES-NI 的硬件加密加速,从而使 TDE 表空间加密成为“几乎零影响”的加密解决方案。 |
不,无法插入其他加密算法。Oracle 提供被广泛接受的加密算法,并将在新标准算法可用时添加它们。
从 Oracle Database 18c 开始,您可以创建用户定义的主加密密钥,而不必要求始终在数据库中生成 TDE 主加密密钥。这在业界通常被称为自带密钥 (BYOK)。
TDE 表空间加密没有任何限制。
有关 TDE 列加密限制的信息,请参阅此处提供的 Oracle Database 产品文档“安全性”下的“高级安全指南”部分,标题为“关于加密表中的列”。
使用 TDE 加密的数据在从数据库文件读取时会被解密。如果这些数据在网络上传输,它将以明文形式传输。但是,传输中的数据可以使用 Oracle 的本机网络加密或 TLS 进行加密。这将加密通过 SQL*Net 往返于 Oracle 数据库的所有数据。
了解数据库中存储了哪些敏感数据总是好的,为此,Oracle 提供了 Oracle 数据库安全评估工具、企业管理器应用程序数据建模,或者如果您在云中拥有 Oracle 数据库 - 数据安全。此标识是应用进一步控制来保护数据的关键,但对于启动加密项目而言并非必不可少。由于芯片组的最新进展加速了加密/解密操作、监管环境不断发展以及哪些数据被视为敏感数据的概念不断发展,大多数客户选择使用表空间加密来加密所有应用程序数据,并将主加密密钥存储在 Oracle Key Vault 中。
DBMS_CRYPTO 包可用于手动加密数据库中的数据。但是,应用程序必须管理加密密钥并通过调用 API 执行所需的加密和解密操作。这种方法需要付出大量努力来管理,并且会产生性能开销。TDE 表空间加密不需要更改应用程序,对最终用户透明,并提供自动化的内置密钥管理。
TDE 列加密和 TDE 表空间加密均使用基于密钥的两层架构。未经授权的用户(例如试图进行安全攻击的入侵者)无法从存储和备份媒体读取数据,除非他们拥有解密数据的 TDE 主加密密钥。
TDE 主加密密钥存储在外部安全模块(软件或硬件密钥库)中。默认情况下,TDE 将其主密钥存储在 Oracle Wallet(基于 PKCS#12 标准的密钥存储文件)中。钱包为少量加密数据库提供了简单的解决方案。拥有许多 Oracle 数据库和其他加密 Oracle 服务器的客户可以许可并使用 Oracle Key Vault,这是一种安全强化的软件设备,可为企业提供集中式密钥和钱包管理。它使用行业标准 OASIS 密钥管理互操作性协议 (KMIP) 进行通信。客户可以保留本地 Oracle 钱包和 Java 密钥库,使用 Key Vault 作为中心位置定期备份它们,或者他们可以完全从环境中删除密钥库文件,转而使用始终在线的 Key Vault 连接。Key Vault 和数据库服务器之间的所有网络连接都使用 SSL/TLS 进行加密和相互认证。TDE 主密钥可以根据您的安全策略定期轮换,无需停机,也无需重新加密任何存储的数据。历史主密钥保留在密钥库中,以防以后必须恢复加密的数据库备份。密钥库中的主密钥使用一组 SQL 命令进行管理(在 Oracle Database 12c 中引入)。为了分工,只有拥有新的 SYSKM 管理权限或更高权限的安全管理员才能访问这些命令。除了使用 SQL 命令之外,您还可以使用 Oracle Enterprise Manager 12c 或 13c 管理 TDE 主密钥。
TDE 支持 AES256、AES192(TDE 列加密的默认算法)、AES128(TDE 表空间加密的默认算法)、ARIA128、ARIA192、ARIA256、GOST256、SEED128 和 3DES168。
TDE 主密钥管理使用 PKCS#12 和 PKCS#5 等标准作为 Oracle Wallet 密钥库。Oracle Key Vault 使用 OASIS 密钥管理互操作性协议 (KMIP) 和 PKCS #11 标准进行通信。客户可以选择 Oracle Wallet 或 Oracle Key Vault 作为其首选密钥库。
TDE 在 Oracle Database 19c 中使用的加密库已通过美国 FIPS 140-2 验证。请参阅此处获取该库的 FIPS 140 证书(搜索文本“Crypto-C Micro Edition”;TDE 使用版本 4.1.2)。此外,请参阅此处获取有关 Oracle Database 认证和验证的最新摘要信息。
TDE 表空间加密利用 Oracle Exadata 进一步提高性能。例如,Exadata Smart Scans 可在多个存储单元之间并行执行加密处理,从而加快对加密数据的查询速度。TDE 还受益于 Exadata 中服务器处理器对硬件加密加速的支持。TDE 与 Exadata 混合列压缩 (EHCC) 的集成首先压缩数据,通过大大减少要加密和解密的数据总量来提高加密性能。
Oracle 提供了其他静态数据加密技术,可以与 TDE 搭配使用,以保护非结构化文件数据、非 Oracle 数据库的存储文件等,如下表所示。
其他加密技术
用例 | Oracle 技术 |
---|---|
使用 Oracle 文件系统和操作系统加密文件(非表空间) | Oracle ZFS - 适用于 Solaris 和其他操作系统的加密文件系统 Oracle ACFS - 在 Oracle 自动存储管理 (ASM) 上运行的加密文件系统 Oracle Linux 本机加密模块,包括 dm-crypt 和 eCryptFS |
使用 Oracle 数据库加密文件(非表空间) | Oracle 安全文件与 TDE 结合使用。对安全文件 LOB 的支持是数据库的核心功能 |
在数据库层以编程方式加密数据 | Oracle 数据库包加密工具包 (DBMS_CRYPTO),用于使用 PL/SQL 加密数据库列 |
在应用程序层以编程方式加密数据 | Oracle Java (JCA/JCE),应用程序层加密可能会限制数据库的某些查询功能。提前考虑是否适合您的用例 |
Oracle 提供了在应用程序层加密敏感数据的解决方案 - 尽管这对数据库有影响,您必须提前考虑(请参阅此处的详细信息)。请注意,TDE 是唯一推荐的解决方案,专门用于加密存储在 Oracle 数据库表空间文件中的数据。
Oracle 透明数据加密和 Oracle RMAN
应用程序数据 | 使用 RMAN 压缩进行备份 | 使用 RMAN 加密进行备份 | 使用 RMAN 压缩和加密进行备份 |
---|---|---|---|
未加密 | 数据压缩 | 数据加密 | 先压缩数据,然后加密 |
使用 TDE 列加密进行加密 | 数据压缩;加密列被视为未加密 | 数据加密;加密列双重加密 | 先压缩数据,然后加密;加密列被视为未加密;加密列双重加密 |
使用 TDE 表空间加密进行加密 | 加密表空间被解密、压缩并重新加密 | 加密表空间不加改变地传递到备份 | 加密表空间被解密、压缩并重新加密 |
无论使用 TDE 主加密密钥还是密码来加密文件,都需要 Oracle Advanced Security 许可证才能将 RMAN 备份加密到磁盘。
可以,但需要将包含主密钥的钱包复制(或提供,例如使用 Oracle Key Vault)到辅助数据库。如果移动了表空间并且主密钥不可用,则辅助数据库在访问表空间中的数据时将返回错误。
使用 TDE 表空间加密的客户可以充分利用压缩(标准和高级压缩,以及 Exadata 混合列压缩 (EHCC)),因为压缩是在数据块加密之前应用的。使用 TDE 列加密的客户只能在未加密的表列上充分利用压缩。使用 TDE 列加密加密的单个表列的压缩级别要低得多,因为加密是在高级压缩过程之前在 SQL 层进行的。
TDE 提供多种技术将现有的明文数据迁移到加密表空间或列。在线和离线迁移均有解决方案。现有表空间可以在生产系统上进行在线加密,无需停机,也可以在维护期间进行离线加密,无需存储开销。在线表空间转换在 Oracle Database 12.2.0.1 及更高版本上可用,而离线表空间转换已在 Oracle Database 11.2.0.4 和 12.1.0.2 上反向移植。
或者,您可以使用 Oracle Online Table Redefinition (DBMS_REDEFINITION) 将现有的明文数据复制到新的加密表空间中。它在后台进行复制,无需停机。此方法适用于 11g 和 12c 数据库。此方法包括 Oracle Database 12c 产品文档中描述的某些限制。使用 Oracle Data Guard 的客户可以使用 Data Guard 和 Oracle Data Pump 加密现有的明文数据,几乎无需停机(请参阅此处的详细信息)。此过程首先在备用服务器上加密(使用 DataPump 导出/导入),然后切换,最后在新的备用服务器上加密。数据库停机时间仅限于执行 Data Guard 切换所需的时间。沿途的多个同步点会从过程中执行的查询中捕获数据更新。如果您计划在计划维护期间离线迁移到加密表空间,则可以使用 Data Pump 进行批量迁移。您还可以使用 SQL 命令(例如 ALTER TABLE MOVE、ALTER INDEX REBUILD(用于移动索引)和 CREATE TABLE AS SELECT)来迁移单个对象。使用 TDE 列加密,您可以使用单个 SQL 命令(例如 ALTER TABLE MODIFY)在后台加密现有的清除列。这是一个完全在线的操作。
从 Oracle Database 11g Release 2 开始,Oracle Advanced Security 透明数据加密 (TDE) 的客户可以选择使用 PKCS11 接口将 TDE 主加密密钥存储在外部设备中。在此设置中,主密钥直接存储在第三方设备中,而不是存储在随附的 Oracle Wallet 中。
使用 PKCS11 时,第三方供应商提供存储设备、PKCS11 软件客户端库、从设备到 PKCS11 客户端(在数据库服务器上运行)的安全通信、身份验证、审计和其他相关功能。供应商还负责测试并确保 TDE 主加密密钥在各种数据库服务器环境和配置中的高可用性。客户应联系设备供应商以获取有关任何相关问题的帮助。
TDE 是 Oracle Advanced Security 的一部分,其中还包括数据编辑。它作为 Oracle Database Enterprise Edition 的附加许可选项提供。在 Oracle 自治数据库和数据库云服务中,它默认已包含、配置和启用。
有关 TDE 优势的更多信息,请参阅 Oracle 技术网络上的产品页面。此页面上提供了各种有用的信息,包括产品数据表、客户参考、视频、教程等。
有关特定 Oracle 数据库版本的更多最佳实践,请参阅此处提供的 Oracle 数据库产品文档中“安全性”下的“高级安全指南”。