使用 AWS CloudHSM 的 Oracle Database 透明数据加密 (TDE) - AWS CloudHSM

使用 AWS CloudHSM 的 Oracle Database 透明数据加密 (TDE)

透明数据加密(TDE)用于数据库文件加密。使用 TDE,数据库软件可以先对数据进行加密,然后再将其存储在磁盘上。数据库的表列或表空间中的数据通过表密钥或表空间密钥进行加密。Oracle 数据库软件的某些版本提供 TDE。在 Oracle TDE 中,这些密钥通过 TDE 主加密密钥进行加密。通过将 TDE 主加密密钥存储在您的 AWS CloudHSM 集群中的 HSM 中,可以提高安全性。

将 Oracle TDE 主加密密钥存储在 AWS CloudHSM 中。

在此解决方案中,您将使用安装在 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 的集成的先决条件
  1. 完成入门中的步骤。完成后,您将拥有一个带一个 HSM 的活动集群。您还将拥有一个运行 Amazon Linux 操作系统的 Amazon EC2 实例。系统还会安装和配置 AWS CloudHSM 客户端和命令行工具。

  2. (可选) 向您的集群添加更多 HSM。有关更多信息,请参阅 向 AWS CloudHSM 集群添加 HSM

  3. 连接到您的 Amazon C2 客户端实例并执行以下操作:

    1. 安装适用于 PKCS #11 的 AWS CloudHSM 软件库。

    2. 安装 Oracle Database。有关更多信息,请参阅 Oracle Database 文档。客户端软件开发工具包 5.6 及更高版本支持适用于 Oracle Database 19c 的 Oracle TDE。客户端软件开发工具包 3 支持适用于 Oracle Database 11g 和 12c 的 Oracle TDE。

    3. 使用 cloudhsm_mgmt_util 命令行工具在您的集群上创建加密用户 (CU)。有关创建 CU 的更多信息,请参阅如何使用 CMU 管理 HSM 用户HSM 用户

步骤 3:生成 Oracle TDE 主加密密钥

要在您的集群中的 HSM 上生成 Oracle TDE 主密钥,请完成以下过程中的步骤。

生成主密钥
  1. 使用以下命令打开 Oracle SQL*Plus。在系统提示时,键入安装 Oracle Database 时设置的系统密码。

    sqlplus / as sysdba
    注意

    使用客户端软件开发工具包 3 生成主密钥时,每次都必须设置 CLOUDHSM_IGNORE_CKA_MODIFIABLE_FALSE 环境变量。仅在生成主密钥时需要此变量。有关更多信息,请参阅“问题:Oracle 在主密钥生成过程中设置了 PKCS #11 属性CKA_MODIFIABLE”,但在有关集成第三方应用程序的已知问题中 HSM 并不支持该属性。

  2. 运行 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 alteredkeystore altered,则您已成功生成并设置 Oracle TDE 的主密钥。

  3. (可选) 运行以下命令来验证 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>";