为 Amazon RDS Custom for Oracle 设置您的环境 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 Amazon RDS Custom for Oracle 设置您的环境

在基于 Amazon RDS Custom for Oracle 创建数据库实例之前,请执行以下任务。

创建 RDS Custom for Oracle 实例的先决条件

在创建 RDS Custom for Oracle 数据库实例之前,请确保您满足以下先决条件:

  • 您应有权访问 My Oracle Support(我的 Oracle 支持)和 Oracle Software Delivery Cloud(Oracle 软件传输云),以下载以下任何 Oracle Database 版本的企业版支持的安装文件和补丁列表:

    • Oracle Database 12c 第 1 版 (12.1)

    • Oracle Database 12c 第 2 版 (12.2)

    • Oracle Database 18c

    • Oracle Database 19c

    如果您使用未知的补丁程序,则自定义引擎版本 (CEV) 将创建失败。在这种情况下,请联系 RDS Custom 支持团队并要求添加缺少的补丁程序。

    有关更多信息,请参阅从 Oracle 软件传输云下载数据库安装文件和补丁

  • 您可以访问 Amazon S3,以便上载 Oracle 安装文件。创建 RDS Custom CEV 时,您可以使用安装文件。

    有关更多信息,请参阅 将安装文件上传到 Amazon S3创建 CEV

  • 您可以提供自己的 Virtual Private Cloud (VPC) 和安全组配置。有关更多信息,请参阅配置 IAM 和您的 VPC

  • 创建 CEV 或 RDS Custom 数据库实例的 Amazon Identity and Access Management (IAM) 用户具有 IAM、CloudTrail 和 Amazon S3 所需的权限。

    有关更多信息,请参阅为您的 IAM 用户授予所需的权限

对于每项任务,以下各节介绍了该任务的特定要求和限制。例如,当您创建 RDS Custom DB for Oracle 实例时,请使用运行 Oracle Linux 7 更新 6 的 db.m5 或 db.r5 实例类。有关适用于 RDS Custom 的一般要求,请参阅 Amazon RDS Custom for Oracle 的要求和限制

请确保您有对称的加密 Amazon KMS 密钥

RDS Custom 需要对称的加密 Amazon KMS 密钥。创建 RDS Custom for Oracle 数据库实例时,您需要提供 KMS 密钥标识符。有关更多信息,请参阅为 Amazon RDS Custom for Oracle 创建并连接到数据库实例

您有以下选项:

  • 如果您的 Amazon Web Services 账户 中有现有的 KMS 密钥,则可以将其与 RDS Custom 一起使用。无需进一步操作。

  • 如果您已经为不同的 RDS Custom 引擎创建了对称的加密 KMS 密钥,可以重复使用相同的 KMS 密钥。无需进一步操作。

  • 如果您的账户中没有对称的加密 KMS 密钥,请按照《Amazon Key Management Service 开发人员指南》中的创建密钥中的说明创建一个 KMS 密钥。

  • 如果您正在创建 CEV 或 RDS Custom 数据库实例,而您的 KMS 密钥位于其他 Amazon Web Services 账户 中,请务必使用 Amazon CLI。您不能将 Amazon 控制台与跨账户 KMS 密钥一起使用。

RDS Custom 不支持 Amazon 管理的 KMS 密钥。

确保您使用的对称加密密钥为 IAM 实例配置文件中的 Amazon Identity and Access Management (IAM) 角色提供对 kms:Decryptkms:GenerateDataKey 操作的访问权限。如果您的账户中有一个新的对称加密密钥,不需要进行任何更改。否则,请确保对称加密密钥的策略可以提供对这些操作的访问权限。

有关为 RDS Custom for Oracle 配置 IAM 的更多信息,请参阅配置 IAM 和您的 VPC

下载并安装 Amazon CLI

Amazon 为您提供了命令行界面以使用 RDS Custom 功能。您可以使用 Amazon CLI 的版本 1 或版本 2。

有关下载和安装 Amazon CLI 的信息,请参阅安装或更新 Amazon CLI 的最新版本

如果您计划仅从 Amazon Web Services Management Console 访问 RDS Custom,请跳过此步骤。

如果您已为 Amazon RDS 或其他 RDS Custom 引擎下载了 Amazon CLI,请跳过此步骤。

配置 IAM 和您的 VPC

您可以使用以下方法之一配置 IAM 角色和 Virtual Private Cloud (VPC):

使用 Amazon CloudFormation 配置 IAM 和 VPC

为了简化设置,您可以使用 Amazon CloudFormation 模板文件创建 CloudFormation 堆栈。要了解如何创建堆栈,请参阅《Amazon CloudFormation 用户指南》中的在 Amazon CloudFormation 控制台上创建堆栈

要下载模板文件

  1. 打开链接 custom-oracle-iam.json 的上下文(右键单击)菜单,然后选择 Save Link As(将链接另存为)。

  2. 将该文件保存到您的计算机。

  3. 为链接 custom-vpc.json 重复之前的步骤。

    如果您已经配置了适用于 RDS Custom for Server 的 VPC,请跳过此步骤。

要采用 CloudFormation 配置 IAM

  1. 通过以下网址打开 CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  2. 开启 Create Stack(创建堆栈)向导,然后选择 Create Stack(创建堆栈)。

  3. Select Template(选择模板)页面中,执行以下操作:

    1. Template source(模板来源)项下,选择 Upload a template file(上载模板文件)。

    2. 对于 Choose file(选择文件),请导航到 custom-oracle-iam.json 并选择。

    3. 选择 Next (下一步)

  4. Specify stack details(指定堆栈详细信息)页面中,请执行以下操作:

    1. 对于堆栈名称,输入 custom-oracle-iam

    2. 选择 Next (下一步)

  5. Configure stack options(配置堆栈选项) 页面上,请选择 Next(下一步)。

  6. Review custom-oracle-iam(查看 custom-oracle-iam)页面上,请执行以下操作:

    1. 对于 Capabilities(功能),请选中 I acknowledge that Amazon CloudFormation might create IAM resources with custom names(我确认 Amazon CloudFormation 可能使用自定义名称创建 IAM 资源)复选框。

    2. 选择 Create stack(创建堆栈)。

    CloudFormation 创建 RDS Custom for Oracle 所需的 IAM 角色。

要采用 CloudFormation 配置 VPC

此过程假定您已使用 CloudFormation 创建 IAM 角色。

如果您已经为其他 RDS Custom 引擎配置了 VPC,请跳过此步骤。

  1. 通过以下网址打开 CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  2. Stacks(堆栈)页面,对于 Create stack(创建堆栈),请选择 With new resources (standard)(采用新资源(标准))。

  3. Select Template(选择模板)页面中,执行以下操作:

    1. Template source(模板来源)项下,选择 Upload a template file(上载模板文件)。

    2. 对于 Choose file(选择文件),请转到 custom-vpc.json 并选择。

    3. 选择 Next (下一步)

  4. Specify stack details(指定堆栈详细信息)页面中,请执行以下操作:

    1. 对于堆栈名称,输入 custom-vpc

    2. 对于 Parameters(参数),请选择要用于 RDS Custom 数据库实例的私有子网。

    3. 选择要用于 RDS Custom 数据库实例的私有 VPC ID。

    4. 输入与私有子网关联的路由表。

    5. 选择 Next (下一步)

  5. Configure stack options(配置堆栈选项) 页面上,请选择 Next(下一步)。

  6. Review custom-vpc(查看 custom-vpc)页面,请选择 Create stack(创建堆栈)。

    CloudFormation 配置您的 VPC。

手动创建您的 IAM 角色和实例配置文件

要使用 RDS Custom,您可以创建名为 AWSRDSCustomInstanceProfileForRdsCustomInstance 的 IAM 实例配置文件。您还将为实例配置文件创建一个 IAM 角色 AWSRDSCustomInstanceRoleForRdsCustomInstance。然后您将 AWSRDSCustomInstanceRoleForRdsCustomInstance 添加到您的实例配置文件。

以下部分介绍如何在不使用 CloudFormation 的情况下执行任务。

要创建 RDS Custom 实例配置文件并向其添加必要的角色

  1. 创建名为 AWSRDSCustomInstanceRoleForRdsCustomInstance 的 IAM 角色,并带有信任策略,以便 Amazon EC2 可以用来代入此角色。

  2. AWSRDSCustomInstanceRoleForRdsCustomInstance 添加访问策略。

  3. 为名为 AWSRDSCustomInstanceProfileForRdsCustomInstance 的 RDS Custom 创建 IAM 实例配置文件。

  4. AWSRDSCustomInstanceRoleForRdsCustomInstance IAM 角色添加到实例配置文件。

创建角色 AWSRDSCustomInstanceRoleForRdsCustomInstance

以下示例将创建角色 AWSRDSCustomInstanceRoleForRdsCustomInstance。使用信任策略,以便 Amazon EC2 可以代入该角色。

aws iam create-role \ --role-name AWSRDSCustomInstanceRoleForRdsCustomInstance \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }'

将访问策略添加到 AWSRDSCustomInstanceRoleForRdsCustomInstance 中

在将内联策略嵌入 IAM 角色中时,内联策略将用作角色的访问(权限)策略的一部分。您将创建 AWSRDSCustomIamRolePolicy 策略,以允许 Amazon EC2 发送和接收消息,以及执行各种操作。

以下示例创建 AWSRDSCustomIamRolePolicy 名为的访问策略,然后将其添加到 IAM 角色 AWSRDSCustomInstanceRoleForRdsCustomInstance。此示例假定您已在 Amazon CLI 中设置了 $REGION$ACCOUNT_ID 变量。此示例还要求提供您要用于 RDS Custom 数据库实例的 Amazon KMS key 的 Amazon Resource Name (ARN)。

要指定多个 KMS 密钥,请将其添加到语句 ID (Sid) 11 的 Resources 部分。

aws iam put-role-policy \ --role-name AWSRDSCustomInstanceRoleForRdsCustomInstance \ --policy-name AWSRDSCustomIamRolePolicy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Action": [ "ssm:DescribeAssociation", "ssm:GetDeployablePatchSnapshotForInstance", "ssm:GetDocument", "ssm:DescribeDocument", "ssm:GetManifest", "ssm:GetParameter", "ssm:GetParameters", "ssm:ListAssociations", "ssm:ListInstanceAssociations", "ssm:PutInventory", "ssm:PutComplianceItems", "ssm:PutConfigurePackageResult", "ssm:UpdateAssociationStatus", "ssm:UpdateInstanceAssociationStatus", "ssm:UpdateInstanceInformation", "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation", "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": [ "*" ] }, { "Sid": "2", "Effect": "Allow", "Action": [ "ec2messages:AcknowledgeMessage", "ec2messages:DeleteMessage", "ec2messages:FailMessage", "ec2messages:GetEndpoint", "ec2messages:GetMessages", "ec2messages:SendReply" ], "Resource": [ "*" ] }, { "Sid": "3", "Effect": "Allow", "Action": [ "logs:PutRetentionPolicy", "logs:PutLogEvents", "logs:DescribeLogStreams", "logs:DescribeLogGroups", "logs:CreateLogStream", "logs:CreateLogGroup" ], "Resource": [ "arn:aws:logs:'$REGION':*:log-group:rds-custom-instance*" ] }, { "Sid": "4", "Effect": "Allow", "Action": [ "s3:putObject", "s3:getObject", "s3:getObjectVersion" ], "Resource": [ "arn:aws:s3:::do-not-delete-rds-custom-*/*" ] }, { "Sid": "5", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "cloudwatch:namespace": [ "RDSCustomForOracle/Agent" ] } } }, { "Sid": "6", "Effect": "Allow", "Action": [ "events:PutEvents" ], "Resource": [ "*" ] }, { "Sid": "7", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [ "arn:aws:secretsmanager:'$REGION':'$ACCOUNT_ID':secret:do-not-delete-rds-custom-*" ] }, { "Sid": "8", "Effect": "Allow", "Action": [ "s3:ListBucketVersions" ], "Resource": [ "arn:aws:s3:::do-not-delete-rds-custom-*" ] }, { "Sid": "9", "Effect": "Allow", "Action": "ec2:CreateSnapshots", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/AWSRDSCustom": "custom-oracle" } } }, { "Sid": "10", "Effect": "Allow", "Action": "ec2:CreateSnapshots", "Resource": [ "arn:aws:ec2:*::snapshot/*" ] }, { "Sid": "11", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:'$REGION':'$ACCOUNT_ID':key/abcd1234-5678-eeff-9012-123456abcdef" ] }, { "Sid": "12", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*", "Condition": { "StringLike": { "ec2:CreateAction": [ "CreateSnapshots" ] } } } ] }'

创建您的 RDS Custom 实例配置文件

按如下方式创建您的 IAM 实例配置文件,将其命名为 AWSRDSCustomInstanceProfileForRdsCustomInstance

aws iam create-instance-profile \ --instance-profile-name AWSRDSCustomInstanceProfileForRdsCustomInstance

将 AWSRDSCustomInstanceRoleForRdsCustomInstance 添加到 RDS Custom 实例配置文件

将 IAM 角色 AWSRDSCustomInstanceRoleForRdsCustomInstance 添加到配置文件 AWSRDSCustomInstanceProfileForRdsCustomInstance

aws iam add-role-to-instance-profile \ --instance-profile-name AWSRDSCustomInstanceProfileForRdsCustomInstance \ --role-name AWSRDSCustomInstanceRoleForRdsCustomInstance

手动配置您的 VPC

就像 Amazon EC2 实例或 Amazon RDS 实例一样,您的 RDS Custom 数据库实例位于基于 Amazon VPC 服务的虚拟私有云 (VPC) 中。您将提供并配置自己的 VPC。因此,您将能够完全控制实例联网设置。

RDS Custom 将通信从数据库实例发送到其他 Amazon Web Services。为了确保 RDS Custom 可以通信,它会验证与这些服务的网络连接。

您的数据库实例与以下 Amazon Web Services进行通信:

  • Amazon CloudWatch

  • Amazon CloudWatch Logs

  • Amazon CloudWatch Events

  • Amazon EC2

  • Amazon EventBridge

  • Amazon S3

  • Amazon Secrets Manager

  • Amazon Systems Manager

确保在配置涉及数据库实例和 Amazon Web Services 之间通信的 VPC 组件时满足以下要求:

  • 数据库实例可以在端口 443 上建立到其他 Amazon Web Services的出站连接。

  • VPC 允许对来自数据库实例的请求进行传入响应。

  • 正确解析每个 Amazon 服务的端点的域名。

如果您已经为其他 RDS Custom 引擎配置了 VPC,可以重复使用此 VPC 并跳过此过程。

配置您的实例安全组

安全组充当 VPC 实例的虚拟防火墙,以控制入站和出站流量。RDS Custom 数据库实例具有原定设置安全组,可用于保护实例。确保您的安全组允许 RDS Custom 和其他 Amazon Web Services之间的流量。

要为 RDS Custom 配置安全组

  1. 登录到Amazon Web Services Management Console并打开 Amazon VPC 控制台,网址:https://console.aws.amazon.com/vpc

  2. 允许 RDS Custom 使用原定设置安全组,或创建您自己的安全组。

    有关详细说明,请参阅通过创建安全组提供对 VPC 中的数据库实例的访问

  3. 确保您的安全组允许在端口 443 上建立出站连接。RDS Custom 需要此端口来与依赖项 Amazon Web Services进行通信。

  4. 如果您有私有 VPC 并且使用 VPC 端点,请确保与数据库实例关联的安全组允许在端口 443 上建立到 VPC 端点的出站连接。还要确保与 VPC 端点关联的安全组允许在端口 443 上建立来自数据库实例的入站连接。

    如果不允许传入连接,则 RDS Custom 实例无法连接到 Amazon Systems Manager 和 Amazon EC2 终端节点。有关更多信息,请参阅《Amazon Systems Manager 用户指南》中的创建虚拟私有云端点

有关安全组的更多信息,请参阅 Amazon VPC 开发人员指南中的您的 VPC 的安全组

为依赖项 Amazon Web Services配置端点

确保您的 VPC 允许建立到以下 Amazon Web Services(数据库实例与之通信)的出站流量:

  • Amazon CloudWatch

  • Amazon CloudWatch Logs

  • Amazon CloudWatch Events

  • Amazon EC2

  • Amazon EventBridge

  • Amazon S3

  • Amazon Secrets Manager

  • Amazon Systems Manager

我们建议您按照以下说明为 VPC 中的每项服务添加端点。但是,您也可以使用任何其他解决方案,只要使您的 VPC 能够与 Amazon 服务终端节点通信即可。例如,您可以使用网络地址转换 (NAT) 或 Amazon Direct Connect。

为与 RDS Custom 配合使用的 Amazon Web Services配置端点

  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航栏中,使用区域选择器来选择 Amazon Web Services 区域。

  3. 在导航窗格中,选择 Endpoints(端点)。在主窗格中,选择创建终端节点

  4. 对于 Service category(服务类别),选择 Amazon Web Services

  5. 对于 Service Name(服务名称),请选择表中显示的端点。

  6. 对于 VPC,选择您的 VPC。

  7. 对于子网,请从每个可用区中选择一个要包括的子网。

    VPC 端点可以跨越多个可用区。Amazon 为您选择的每个子网中的 VPC 终端节点创建一个弹性网络接口。每个网络接口有一个域名系统 (DNS) 主机名和私有 IP 地址。

  8. 对于 Security group(安全组),请选择或创建一个安全组。

    您可以使用安全组来控制对您的端点的访问,就像您使用防火墙一样。有关安全组的更多信息,请参阅 Amazon VPC 用户指南 中的您的 VPC 的安全组

  9. 或者,您可以将策略附加到 VPC 端点。端点策略可以控制对您要连接到的 Amazon Web Service的访问权限。原定设置策略允许所有请求通过端点。如果您使用自定义策略,请确保策略中允许来自数据库实例的请求。

  10. 选择 Create endpoint(创建端点)。

下表说明了如何查找您的 VPC 用于出站通信所需的端点列表。

服务 端点格式 备注和链接

Amazon Systems Manager

采用以下端点格式:

  • ssm.region.amazonaws.com

  • ssmmessages.region.amazonaws.com

有关每个区域中端点的列表,请参阅亚马逊云科技一般参考中的 Amazon Systems Manager 端点和配额

Amazon Secrets Manager

采用端点格式 secretsmanager.region.amazonaws.com

有关每个区域中端点的列表,请参阅亚马逊云科技一般参考中的 Amazon Secrets Manager 端点和配额

Amazon CloudWatch

采用以下端点格式:

  • 对于 CloudWatch 指标,请使用 monitoring.region.amazonaws.com

  • 对于 CloudWatch Events,请使用 events.region.amazonaws.com

  • 对于 CloudWatch Logs,请使用 logs.region.amazonaws.com

有关每个区域中的端点列表,请参阅:

Amazon EC2

采用以下端点格式:

  • ec2.region.amazonaws.com

  • ec2messages.region.amazonaws.com

有关各区域端点的列表,请参阅《亚马逊云科技一般参考》中的 Amazon Elastic Compute Cloud 端点和配额

Amazon S3

采用端点格式 s3.region.amazonaws.com

有关各区域端点的列表,请参阅亚马逊云科技一般参考中的 Amazon Simple Storage Service 端点和配额

要了解 Amazon S3 的网关端点的更多信息,请参阅《Amazon VPC 开发人员指南》中的 Amazon S3 端点

要了解如何创建访问点,请参阅《Amazon VPC 开发人员指南》中的创建访问点

要了解如何为 Amazon S3 创建网关终端节点,请参阅网关 VPC 终端节点

配置实例元数据服务

请确保您的实例可以执行以下操作:

  • 可使用 Instance Metadata Service Version 2 (IMDSv2) 来访问实例元数据服务。

  • 允许通过端口 80 (HTTP) 到 IMDS 链接 IP 地址的出站通信。

  • http://169.254.169.254 IMDSv2 链接请求实例元数据。

有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的使用 IMDSv2

RDS Custom for Oracle 自动化程序预设情况下使用 IMDSv2,方法是在底层 Amazon EC2 实例上设置 HttpTokens=enabled。但是,您也可以根据需要使用 IMDSv1。有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的配置实例元数据选项

为您的 IAM 用户授予所需的权限

确保创建 CEV 或数据库实例的 IAM 主体具有以下任一策略:

  • AdministratorAccess 策略

  • 具有 Amazon S3 和 Amazon KMS(创建 CEV 和数据库所需)、CEV 创建和数据库实例创建所需权限的 AmazonRDSFullAccess 策略。

Amazon S3 和 Amazon KMS 所需权限

要创建 CEV 或 RDS Custom for Oracle 数据库实例,IAM 主体需要访问 Amazon S3 和 Amazon KMS。以下示例 JSON 策略授予所需的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateS3Bucket", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutBucketPolicy", "s3:PutBucketObjectLockConfiguration", "s3:PutBucketVersioning" ], "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*" }, { "Sid": "CreateKmsGrant", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "*" } ] }

有关 kms:CreateGrant 权限的更多信息,请参阅 Amazon KMS key 管理

创建 CEV 所需的权限

要创建 CEV,IAM 主体需要以下额外权限:

s3:GetObjectAcl s3:GetObject s3:GetObjectTagging s3:ListBucket mediaimport:CreateDatabaseBinarySnapshot

以下示例 JSON 策略授予存储桶 my-custom-installation-files 及其内容额外的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessToS3MediaBucket", "Effect": "Allow", "Action": [ "s3:GetObjectAcl", "s3:GetObject", "s3:GetObjectTagging", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-custom-installation-files", "arn:aws:s3:::my-custom-installation-files/*" ] }, { "Sid": "PermissionForByom", "Effect": "Allow", "Action": [ "mediaimport:CreateDatabaseBinarySnapshot" ], "Resource": "*" } ] }

您可以使用 S3 存储桶策略向调用者的账户授予 Amazon S3 的类似权限。

从 CEV 创建数据库实例所需的权限

要从现有的 CEV 创建数据库实例,IAM 主体需要以下额外权限:

iam:SimulatePrincipalPolicy cloudtrail:CreateTrail cloudtrail:StartLogging

以下示例 JSON 策略授予所需的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ValidateIamRole", "Effect": "Allow", "Action": "iam:SimulatePrincipalPolicy", "Resource": "*" }, { "Sid": "CreateCloudTrail", "Effect": "Allow", "Action": [ "cloudtrail:CreateTrail", "cloudtrail:StartLogging" ], "Resource": "arn:aws:cloudtrail:*:*:trail/do-not-delete-rds-custom-*" } ] }