使用 Oracle TDE AWS CloudHSM:配置数据库并生成主加密密钥 - AWS CloudHSM

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Oracle TDE AWS CloudHSM:配置数据库并生成主加密密钥

要将 Oracle TDE 与您的 AWS CloudHSM 集群集成,请参阅以下主题:

  1. 更新 Oracle Database 配置以使用您的群集中的 HSM 作为外部安全模块。有关外部安全模块的信息,请参阅《Oracle Database 高级安全指南》中的透明数据加密简介

  2. 在您的集群中的 HSM 上生成 Oracle TDE 主加密密钥

更新 Oracle Database 配置

要将 Oracle Database 配置更新为使用您的集群中的 HSM 作为外部安全模块,请完成以下步骤。有关外部安全模块的信息,请参阅《Oracle Database 高级安全指南》中的透明数据加密简介

更新 Oracle 配置
  1. 连接到您的 Amazon EC2 客户端实例。这是在其中安装 Oracle Database 的实例。

  2. 为名为 sqlnet.ora 的文件创建备份副本。有关此文件的位置,请参阅 Oracle 文档。

  3. 使用文本编辑器编辑名为 sqlnet.ora 的文件。添加以下行。如果文件中的现有行以 encryption_wallet_location 开头,请将现有行替换为以下行。

    encryption_wallet_location=(source=(method=hsm))

    保存该文件。

  4. 运行以下命令创建 Oracle 数据库期望在其中查找 AWS CloudHSM PKCS #11 软件库库的库文件的目录。

    sudo mkdir -p /opt/oracle/extapi/64/hsm
  5. 运行以下命令将 PKCS #11 文件的 AWS CloudHSM 软件库复制到您在上一步中创建的目录中。

    sudo cp /opt/cloudhsm/lib/libcloudhsm_pkcs11.so /opt/oracle/extapi/64/hsm/
    注意

    /opt/oracle/extapi/64/hsm 目录只能包含一个库文件。删除该目录中存在的所有其他文件。

  6. 运行以下命令更改 /opt/oracle 目录的所有权及其包含的所有内容。

    sudo chown -R oracle:dba /opt/oracle
  7. 启动 Oracle Database。

生成 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>";