Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

设置 Amazon RDS 以使用 AWS CloudHSM Classic

要将 AWS CloudHSM Classic 用于使用 Oracle TDE 的 Oracle 数据库实例,您必须执行以下任务:

  • 确保与 Oracle 数据库实例关联的安全组允许访问 HSM 端口 1792。

  • 创建一个数据库子网组 (该子网组使用的子网与 HSM 使用的 VPC 中的子网相同),然后将该数据库子网组分配给 Oracle 数据库实例。

  • 设置 Amazon RDS CLI。

  • 为在访问 AWS CloudHSM Classic 时要使用的 Amazon RDS 添加 IAM 权限。

  • 使用 Amazon RDS CLI 将 TDE_HSM 选项添加到与 Oracle 数据库实例关联的选项组。

  • 将两个新的数据库实例参数添加到将使用 AWS CloudHSM Classic 的 Oracle 数据库实例。tde-credential-arn 参数是通过 create-hapg 命令返回的高可用性 (HA) 分区组的 Amazon 资源编号 (ARN)。tde-credential-password 是在初始化 HA 分区组时使用的分区密码。

Amazon RDS CLI 文档可在什么是 AWS Command Line Interface?使用 AWS Command Line Interface 进行设置部分中找到。可在使用 AWS Command Line Interface中找到有关使用 AWS CLI 的一般指导。

以下各节说明如何设置 Amazon RDS CLI、为 RDS 添加所需的权限以访问您的 HSM、创建带 TDE_HSM 选项的选项组,以及如何创建或修改将使用 TDE_HSM 选项的数据库实例。

安全组

要允许 RDS 实例与 HSM 进行通信,分配给 HSM 设备的安全组 ENI 必须授权从数据库实例在 TCP 端口 1792 上进行入口连接。此外,与 HSM 的 ENI 关联的网络 ACL 必须允许来自 RDS 实例的入口 TCP 端口 1792,以及从 HSM 到 RDS 实例上的动态端口范围的出口连接。有关动态 TCP 端口范围的更多信息,请参阅 Amazon VPC 文档

如果您使用 AWS CloudFormation 模板创建 AWS CloudHSM Classic 环境,请修改安全组以允许来自公有子网的 SSH 和 NTLS。如果您没有使用 AWS CloudFormation 模板,请修改与分配给 HSM 设备的 ENI 关联的安全组。

数据库子网组

您分配给 Oracle 数据库实例的数据库子网组具有的子网必须与 AWS CloudHSM Classic 在 VPC 中使用的子网相同。有关如何创建数据库子网组的信息,请参阅创建数据库子网组,您也可以使用 AWS CLI create-db-subnet-group 命令创建数据库子网组。

设置 Amazon RDS CLI

Amazon RDS CLI 可安装在运行 Linux 或 Windows 操作系统并已安装 Java 版本 1.6 或更高版本的计算机上。

可执行以下步骤来安装和配置 Amazon RDS CLI:

  1. 此处下载 Amazon RDS CLI。解压缩该文件。

  2. 设置以下环境变量:

    Copy
    AWS_RDS_HOME - <The directory where the deployment files were copied to> JAVA_HOME - <Java Installation home directory>

    对于 Linux,您可通过运行以下命令检查环境变量的设置是否正确;对于 Windows,应列出 describe-db-instances 和其他 AWS CLI 命令。

    针对 Linux、OS X 或 Unix:

    Copy
    ls ${AWS_RDS_HOME}/bin

    对于 Windows:

    Copy
    dir %AWS_RDS_HOME%\bin
  3. ${AWS_RDS_HOME}/bin (Linux) 或 %AWS_RDS_HOME%\bin (Windows) 添加到您的路径

  4. 将 AWS 地区的 RDS 服务 URL 信息添加到外壳程序配置。例如:

    Copy
    export RDS_URL=https://rds.us-east-1.amazonaws.com export SERVICE_SIG_NAME=rds
  5. 如果您使用的是 Linux 系统,请使用以下命令对 bin 目录中的所有文件设置执行权限:

    Copy
    chmod +x ${AWS_RDS_HOME}/bin/*
  6. 为 Amazon RDS CLI 提供 AWS 用户凭证。可通过两种方式提供凭证:AWS 密钥或使用 X.509 证书。

    如果您使用的是 AWS 密钥,请执行以下操作:

    1. 编辑压缩文件 ${AWS_RDS_HOME}/credential-file-path.template 中包含的凭证文件以添加 AWS 凭证。如果您使用的是 Linux 系统,请限制对凭证文件所有者的权限:

      Copy
      $ chmod 600 <credential file>
    2. 或者,您可以将以下选项与每条命令一起提供:

      Copy
      aws rds <AWSCLIcommand> --aws-credential-file <credential file>
    3. 或者,可以在命令行中显式指定凭证:--I ACCESS_KEY --S SECRET_KEY

    如果您使用的是 X.509 认证,请执行以下操作:

    1. 将您的证书和私有密钥保存在文件中,如 my-cert.pem 和 my-pk.pem。

    2. 设置以下环境变量:

      Copy
      EC2_CERT=<path_to_my_cert> EC2_PRIVATE_KEY=<path_to_my_private_key>
    3. 或者,可在每条命令的命令行中直接指定文件:

      针对 Linux、OS X 或 Unix:

      Copy
      aws rds <AWSCLIcommand> \ --ec2-cert-file-path <path_to_my_cert> \ --ec2-private-key-file-path <path_to_my_private_key>

      对于 Windows:

      Copy
      aws rds <AWSCLIcommand> ^ --ec2-cert-file-path <path_to_my_cert> ^ --ec2-private-key-file-path <path_to_my_private_key>

可以通过运行以下命令测试您是否已正确设置 AWS CLI。第一条命令应输出所有 Amazon RDS 命令的用法页面。第二条命令应输出针对所用账户的所有数据库实例的信息。

Copy
aws rds --help aws rds describe-db-instances --headers

为 Amazon RDS 添加 IAM 权限以访问 AWS CloudHSM Classic

您可以通过单个 AWS 账户来使用 Amazon RDS 和 AWS CloudHSM Classic,也可以使用两个不同的账户,一个用于 Amazon RDS,另一个用于 AWS CloudHSM Classic。本节提供有关这两个过程的信息。

为用于 Amazon RDS 的单个账户添加 IAM 权限以访问 AWS CloudHSM Classic API

要创建 Amazon RDS 用于访问 AWS CloudHSM Classic API 的 IAM 角色,请使用以下过程。当您创建或修改使用 AWS CloudHSM Classic 的数据库实例时,Amazon RDS 将检查此 IAM 角色是否存在。

为 Amazon RDS 创建 IAM 角色以访问 AWS CloudHSM Classic API

  1. 通过以下网址打开 IAM 控制台https://console.amazonaws.cn

  2. 在左侧导航窗格中,单击 Roles

  3. 单击 Create New Role

  4. Role Name 文本框中,键入 RDSCloudHsmAuthorization。目前,您必须使用该名称。单击 Next Step

  5. 单击 AWS Service Roles,滚动到 Amazon RDS,然后选择 Select

  6. Attach Policy 页面上,单击 Next Step。已将正确的策略挂载到该角色。

  7. 检查角色信息,然后单击 Create

将不同的 AWS CloudHSM Classic 和 Amazon RDS 账户用于 Amazon RDS 以访问 AWS CloudHSM Classic

如果您要单独管理您的 AWS CloudHSM Classic 和 Amazon RDS 资源,则可以通过不同的账户使用这两项服务。要使用两个不同的账户,您必须按下节所述设置每个账户。

要使用两个账户,您必须拥有以下项:

  • 为 AWS CloudHSM Classic 服务启用并且作为硬件安全模块 (HSM) 设备所有者的账户。通常,此账户是 AWS CloudHSM Classic 账户,其客户 ID 是 HSM_ACCOUNT_ID。

  • 可以用于创建和管理使用 Oracle TDE 的数据库实例的 Amazon RDS 账户。通常,此账户是数据库账户,其客户 ID 是 DB_ACCOUNT_ID。

添加数据库账户权限以访问 AWS CloudHSM Classic 账户下的 AWS CloudHSM Classic 资源

  1. 通过以下网址打开 IAM 控制台https://console.amazonaws.cn/

  2. 使用数据库账户登录。

  3. 在左侧导航窗格中,选择 Roles

  4. 选择 Create New Role

  5. 对于 Role Name,键入 RDSCloudHsmAssumeAuthorization。当前必须使用此角色名称才能使此方法起作用。选择 Next Step

  6. 选择 AWS Service Roles,滚动到 Amazon RDS,然后选择 Select

  7. Attach Policy 页面,不要挂载策略。选择 Next Step

  8. 检查信息,然后选择 Create Role

  9. 对于“Roles”,选择 RDSCloudHsmAssumeAuthorization 角色。

  10. 对于“Permissions”,选择 Inline Policies。提供链接的文本随即出现;单击 click here

  11. Set Permissions 页面中,选择 Custom Policy,然后选择 Select

  12. 对于 Policy Name,键入 AssumeRole

  13. 对于 Policy Document,键入以下策略信息:

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "*" } ] }
  14. 选择 Apply Policy,然后注销数据库账户。

修改 AWS CloudHSM Classic 账户以信任访问 AWS CloudHSM Classic 账户下的 AWS CloudHSM Classic 资源的权限

  1. 通过以下网址打开 IAM 控制台https://console.amazonaws.cn/

  2. 使用 AWS CloudHSM Classic 账户登录。

  3. 在左侧导航窗格中,选择 Roles

  4. 选择 RDSCloudHsmAuthorization 角色。此角色是为单个账户 CloudHSM-RDS 创建的角色。

  5. 选择 Edit Trust Relationship

  6. 添加数据库账户作为可信账户。策略文档应类似于以下这样 (使用您的数据库账户替换 <DB_ACCOUNT_ID> 占位符):

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com", "AWS":[ "arn:aws-cn:iam::$<DB_ACCOUNT_ID>$:role/RDSCloudHsmAssumeAuthorization" ] }, "Action": "sts:AssumeRole" } ] }
  7. 选择 Update Trust Policy

使用可以连接到 HSM 的数据库账户创建 Amazon VPC

HSM 设备预置到特定于 HSM 的 Amazon VPC 中。默认情况下,只有 HSM VPC 内部的主机才能看到 HSM 设备。因此,所有数据库实例都需要在 HSM VPC 内或在能够使用 VPC 对等链接到 HSM VPC 的 VPC 中创建。

要将 AWS CloudHSM Classic 用于不同 VPC 中的 Amazon RDS 数据库实例 (在数据库账户下创建的实例,如 在 VPC 中创建数据库实例 中所述),请设置从包含数据库实例的 VPC 到包含 HSM 设备的 HSM 特定 VPC 的 VPC 对等。

设置两个 VPC 之间的 VPC 对等

  1. 使用在数据库账户下创建的现有 VPC,或使用数据库账户创建新 VPC。VPC 的任何 CIDR 范围都不应与特定于 HSM 的 VPC 的 CIDR 范围重叠。

  2. 在数据库 VPC 与 HSM VPC 之间执行 VPC 对等。有关说明,请转至 Amazon Virtual Private Cloud 用户指南中的 VPC 对等

  3. 确保 VPC 路由表在 HSM 网络接口上与 VPC 子网和 VPC 安全组正确关联。

请注意,您必须配置两个 VPC 的路由表,从而使网络流量进入正确的 VPC (从数据库 VPC 到 HSM VPC,以及从 HSM VPC 到数据库 VPC)。两个 VPC 无需共享同一个安全组,不过安全组不得阻止两个 VPC 之间的网络流量。

创建带 TDE_HSM 选项的选项组

可像添加其他 Oracle 选项一样将 TDE_HSM 选项添加到现有选项组,也可以创建新的选项组并添加 TDE_HSM 选项。以下 Amazon RDS CLI 示例将为 Oracle Enterprise Edition 11.2 创建一个名为 tdehsm-option-group 的选项组。

针对 Linux、OS X 或 Unix:

Copy
aws rds create-option-group \ --option-group-name tdehsm-option-group \ --option-group-description "Option Group with TDE_HSM" \ --engine-name oracle-ee \ --major-engine-version 11.2

对于 Windows:

Copy
aws rds create-option-group ^ --option-group-name tdehsm-option-group ^ --option-group-description "Option Group with TDE_HSM" ^ --engine-name oracle-ee ^ --major-engine-version 11.2

命令的输出应类似以下示例:

Copy
OPTIONGROUP tdehsm-option-group oracle-ee 11.2 Option Group with TDE_HSM n

创建选项组后,您可以使用以下命令将 TDE_HSM 选项添加到该选项组。

针对 Linux、OS X 或 Unix:

Copy
aws rds add-option-to-option-group \ --option-group-name tdehsm-option-group \ --option-name TDE_HSM

对于 Windows:

Copy
aws rds add-option-to-option-group ^ --option-group-name tdehsm-option-group ^ --option-name TDE_HSM

命令的输出应类似以下示例:

Copy
OPTION TDE_HSM y n Oracle Advanced Security - TDE with HSM

将 AWS CloudHSM Classic 参数添加到 Oracle 数据库实例

使用 AWS CloudHSM Classic 的 Oracle Enterprise Edition 数据库实例必须已添加两个新参数。tde-credential-arntde-credential-password 参数是创建新的数据库实例或修改现有数据库实例以使用 AWS CloudHSM Classic 时必须包含的新参数。

创建适用于 AWS CloudHSM Classic 的带附加参数的新 Oracle 数据库实例

创建新数据库实例以将其与 AWS CloudHSM Classic 结合使用时,有以下几点要求:

  • 您必须包含带 TDE_HSM 选项的选项组

  • 您必须提供 tde-credential-arntde-credential-password 参数的值。tde-credential-arn 参数值是通过 create-hapg 命令返回的 HA 分区组的 Amazon 资源编号 (ARN)。您也可以使用 list-hapgs 命令检索所有高可用性分区组的 ARN。

    tde-credential-password 是在初始化 HA 分区组时使用的分区密码。

  • 必须创建提供跨服务访问权的 IAM 角色。

  • 您必须创建 Oracle Enterprise Edition 数据库实例。

以下命令将创建一个名为 HsmInstance-test01 的新 Oracle Enterprise Edition 数据库实例,该实例包括两个提供 AWS CloudHSM Classic 访问权的参数并使用一个名为 tdehsm-option-group 的选项组。

针对 Linux、OS X 或 Unix:

Copy
aws rds create-db-instance \ --db-instance-identifier HsmInstance-test01 \ --db-instance-class <instance class> \ --engine oracle-ee \ --tde-credential-arn <ha partition group ARN> \ --tde-credential-password <partition password> \ --db-name <Oracle DB instance name> \ --db-subnet-group-name <subnet group name> \ --connection-timeout <connection timeout value> \ --master-user-password <master user password> \ --master-username <master user name> \ --allocated-storage <storage value> \ --option-group-name <TDE option group>

对于 Windows:

Copy
aws rds create-db-instance ^ --db-instance-identifier HsmInstance-test01 ^ --db-instance-class <instance class> ^ --engine oracle-ee ^ --tde-credential-arn <ha partition group ARN> ^ --tde-credential-password <partition password> ^ --db-name <Oracle DB instance name> ^ --db-subnet-group-name <subnet group name> ^ --connection-timeout <connection timeout value> ^ --master-user-password <master user password> ^ --master-username <master user name> ^ --allocated-storage <storage value> ^ --option-group-name <TDE option group>

命令的输出应类似以下示例:

Copy
DBINSTANCE hsminstance-test01 db.m1.medium oracle-ee 40 fooooo creating 1 **** n 11.2.0.2.v7 bring-your-own-license AL52UTF8 n VPCSECGROUP sg-922xvc2fd active SUBNETGROUP dev-test test group Complete vpc-3facfe54 SUBNET subnet-1fd6a337 us-east-1e Active SUBNET subnet-28aeff43 us-east-1c Active SUBNET subnet-5daeff36 us-east-1b Active SUBNET subnet-2caeff47 us-east-1d Active PARAMGRP default.oracle-ee-11.2 in-sync OPTIONGROUP tdehsm-option-group pending-apply

修改现有数据库实例以添加适用于 AWS CloudHSM Classic 的参数

以下命令修改一个现有 Oracle Enterprise Edition 数据库实例并添加 tde-credential-arntde-credential-password 参数。请注意,您还必须将包含 TDE_HSM 选项的选项组包括在命令中。

针对 Linux、OS X 或 Unix:

Copy
aws rds modify-db-instance \ --db-instance-identifier hsm03 \ --tde-credential-arn <ha partition group ARN> \ --tde-credential-password <partition password> \ --option-group <tde hsm option group> \ --apply-immediately

对于 Windows:

Copy
aws rds modify-db-instance ^ --db-instance-identifier hsm03 ^ --tde-credential-arn <ha partition group ARN> ^ --tde-credential-password <partition password> ^ --option-group <tde hsm option group> ^ --apply-immediately

命令的输出应类似以下示例:

Copy
DBINSTANCE hsm03 2014-04-03T18:48:53.106Z db.m1.medium oracle-ee 40 fooooo available hsm03.c1iibpgwvdfo.us-east-1.rds.amazonaws.com 1521 us-east-1e 1 n 11.2.0.2.v7 bring-your-own-license AL32UTF8 n VPCSECGROUP sg-922dc2fd active SUBNETGROUP dev-test test group Complete vpc-3faffe54 SUBNET subnet-1fd6a337 us-east-1e Active SUBNET subnet-28aeff43 us-east-1c Active SUBNET subnet-5daeff36 us-east-1b Active SUBNET subnet-2caeff47 us-east-1d Active PARAMGRP default.oracle-ee-11.2 in-sync OPTIONGROUP tdehsm-option-group pending-apply OPTIONGROUP default:oracle-ee-11-2 pending-removal