使用 AWS CloudHSM 的 Oracle Database 透明数据加密 (TDE)
透明数据加密(TDE)用于数据库文件加密。使用 TDE,数据库软件可以先对数据进行加密,然后再将其存储在磁盘上。数据库的表列或表空间中的数据通过表密钥或表空间密钥进行加密。Oracle 数据库软件的某些版本提供 TDE。在 Oracle TDE 中,这些密钥通过 TDE 主加密密钥进行加密。通过将 TDE 主加密密钥存储在您的 AWS CloudHSM 集群中的 HSM 中,可以提高安全性。
在此解决方案中,您将使用安装在 Amazon EC2 实例上的 Oracle Database。Oracle Database 将与适用于 PKCS #11 的 AWS CloudHSM 软件库集成以将 TDE 主密钥存储在群集的 HSM 中。
重要
-
我们建议在 Amazon EC2 实例上安装 Oracle Database。
完成以下步骤以完成 Oracle TDE 与 AWS CloudHSM 的集成。
第 1 步。设置先决条件
要完成 Oracle TDE 与 AWS CloudHSM 的集成,您需要:
一个带至少一个 HSM 的活动 AWS CloudHSM 群集。
运行 Amazon Linux 操作系统并安装了以下软件的 Amazon EC2 实例:
AWS CloudHSM 客户端和命令行工具。
适用于 PKCS #11 的 AWS CloudHSM 软件库。
Oracle Database. AWS CloudHSM 支持 Oracle TDE 集成。客户端软件开发工具包 5.6 及更高版本支持适用于 Oracle Database 19c 的 Oracle TDE。客户端软件开发工具包 3 支持适用于 Oracle Database 11g 和 12c 的 Oracle TDE。
-
一个加密用户 (CU),该用户拥有和管理集群中的 HSM 上的 TDE 主加密密钥。
完成以下步骤可设置所有先决组件。
设置 Oracle TDE 与 AWS CloudHSM 的集成的先决条件
-
完成入门中的步骤。完成后,您将拥有一个带一个 HSM 的活动集群。您还将拥有一个运行 Amazon Linux 操作系统的 Amazon EC2 实例。系统还会安装和配置 AWS CloudHSM 客户端和命令行工具。
-
(可选) 向您的集群添加更多 HSM。有关更多信息,请参阅 向 AWS CloudHSM 集群添加 HSM。
-
连接到您的 Amazon C2 客户端实例并执行以下操作:
-
安装 Oracle Database。有关更多信息,请参阅 Oracle Database 文档
。客户端软件开发工具包 5.6 及更高版本支持适用于 Oracle Database 19c 的 Oracle TDE。客户端软件开发工具包 3 支持适用于 Oracle Database 11g 和 12c 的 Oracle TDE。 -
使用 cloudhsm_mgmt_util 命令行工具在您的集群上创建加密用户 (CU)。有关创建 CU 的更多信息,请参阅如何使用 CMU 管理 HSM 用户和HSM 用户。
步骤 3:生成 Oracle TDE 主加密密钥
要在您的集群中的 HSM 上生成 Oracle TDE 主密钥,请完成以下过程中的步骤。
生成主密钥
-
使用以下命令打开 Oracle SQL*Plus。在系统提示时,键入安装 Oracle Database 时设置的系统密码。
sqlplus / as sysdba
注意
使用客户端软件开发工具包 3 生成主密钥时,每次都必须设置
CLOUDHSM_IGNORE_CKA_MODIFIABLE_FALSE
环境变量。仅在生成主密钥时需要此变量。有关更多信息,请参阅“问题:Oracle 在主密钥生成过程中设置了 PKCS #11 属性CKA_MODIFIABLE
”,但在有关集成第三方应用程序的已知问题中 HSM 并不支持该属性。 -
运行 SQL 语句来创建主加密密钥,如以下示例所示。使用与您的 Oracle Database 的版本对应的语句。将
<CU user name>
替换为加密用户 (CU) 的用户名。将<password>
替换为 CU 密码。重要
仅运行以下命令一次。每次运行此命令时,它都会创建一个新的主加密密钥。
-
对于 Oracle Database 版本 11,运行以下 SQL 语句。
SQL>
alter system set encryption key identified by "
<CU user name>
:<password>
"; -
对于 Oracle Database 版本 12 和版本 19c,运行以下 SQL 语句。
SQL>
administer key management set key identified by "
<CU user name>
:<password>
";
如果响应是
System altered
或keystore altered
,则您已成功生成并设置 Oracle TDE 的主密钥。 -
-
(可选) 运行以下命令来验证 Oracle wallet 的状态。
SQL>
select * from v$encryption_wallet;
如果 wallet 未打开,请使用下列命令之一将其打开。将
<CU user name>
替换为加密用户 (CU) 的名称。将<password>
替换为 CU 密码。-
对于 Oracle 11,运行以下命令以打开 wallet。
SQL>
alter system set encryption wallet open identified by "
<CU user name>
:<password>
";要手动关闭 wallet,请运行以下命令。
SQL>
alter system set encryption wallet close identified by "
<CU user name>
:<password>
"; -
对于 Oracle 12 和 Oracle 19c,运行以下命令以打开 wallet。
SQL>
administer key management set keystore open identified by "
<CU user name>
:<password>
";要手动关闭 wallet,请运行以下命令。
SQL>
administer key management set keystore close identified by "
<CU user name>
:<password>
";
-