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

为 Amazon RDS Custom for SQL Server 设置环境

在为 Amazon RDS Custom for SQL Server 数据库实例创建和管理数据库实例之前,请确保执行以下任务。

注意

设置 RDS Custom for SQL Server 的先决条件

在创建 RDS Custom for SQL Server 数据库实例之前,请确保您的环境符合本主题中描述的要求。也可以使用 CloudFormation 模板在您的Amazon Web Services 账户中设置先决条件。有关更多信息,请参阅使用 Amazon CloudFormation 进行配置

RDS Custom for SQL Server 要求您配置以下先决条件:

  • 配置创建实例所需的 Amazon Identity and Access Management(IAM)权限。这是向 RDS 发出 create-db-instance 请求所需的 Amazon Identity and Access Management(IAM)用户或角色。

  • 配置 RDS Custom for SQL Server 数据库实例所需的必备资源:

    • 配置加密 RDS Custom 实例所需的 Amazon KMS 密钥。RDS Custom 在创建实例时需要使用客户托管密钥进行加密。KMS 密钥 ARN、ID、别名 ARN 或别名在创建 RDS Custom 数据库实例的请求中作为 kms-key-id 参数传递。

    • 在 RDS Custom for SQL Server 数据库实例中配置所需的权限。RDS Custom 在创建实例时会将实例配置文件附加到数据库实例,并使用它在数据库实例中进行自动化。在 RDS Custom 创建请求中,实例配置文件名称设置为 custom-iam-instance-profile。可以从 Amazon Web Services Management Console创建实例配置文件或手动创建实例配置文件。有关更多信息,请参阅使用 Amazon Web Services Management Console自动创建实例配置文件手动创建您的 IAM 角色和实例配置文件

    • 根据对 RDS Custom for SQL Server 的要求配置网络设置。RDS Custom 实例位于您在创建实例时提供的子网中(配置有数据库子网组)。这些子网必须允许 RDS Custom 实例与实现 RDS 自动化所需的服务进行通信。

注意

要满足上述要求,请确保没有任何限制账户级别权限的服务控制策略(SCP)。

如果您使用的账户属于 Amazon 组织,则该账户可能具有限制账户级别权限的服务控制策略(SCP)。确保 SCP 不会限制对于您使用以下过程创建的用户和角色的权限。

有关 SCP 的更多信息,请参阅《Amazon Organizations 用户指南》中的服务控制策略 (SCP)。使用 Amazon CLI 命令 describe-organization 检查您的账户是否属于 Amazon 组织。

有关 Amazon Organizations 的更多信息,请参阅《Amazon Organizations 用户指南》中的什么是 Amazon Organizations

有关 RDS Custom for SQL Server 的一般要求,请参阅 RDS Custom for SQL Server 的一般要求

使用 Amazon Web Services Management Console自动创建实例配置文件

RDS Custom 要求您创建和配置实例配置文件以启动任何 RDS Custom for SQL Server 数据库实例。使用 Amazon Web Services Management Console只需一个步骤即可创建和附加新的实例配置文件。此选项位于创建数据库还原快照还原到时间点控制台页面的“RDS Custom 安全性”部分。选择创建新的实例配置文件以提供实例配置文件名称后缀。Amazon Web Services Management Console将创建新的实例配置文件,该配置文件具有执行 RDS Custom 自动化任务所需的权限。要自动创建新的实例配置文件,您的登录 Amazon Web Services Management Console用户必须具有 iam:CreateInstanceProfileiam:AddRoleToInstanceProfileiam:CreateRoleiam:AttachRolePolicy 权限。

注意

此选项只在 Amazon Web Services Management Console中可用。如果您使用的是 CLI 或 SDK,请使用 RDS Custom 提供的 CloudFormation 模板或手动创建实例配置文件。有关更多信息,请参阅手动创建您的 IAM 角色和实例配置文件

步骤 1:为您的 IAM 主体授予所需的权限

确保您有足够的访问权限来创建 RDS Custom 实例。可以使用控制台或 CLI 创建 RDS Custom for SQL Server 数据库实例的 IAM 用户或 IAM 角色(称为 IAM 主体)必须实施以下任一策略,才能成功创建数据库实例:

  • AdministratorAccess 策略

  • 具有以下其他权限的 AmazonRDSFullAccess 策略:

    iam:SimulatePrincipalPolicy cloudtrail:CreateTrail cloudtrail:StartLogging s3:CreateBucket s3:PutBucketPolicy s3:PutBucketObjectLockConfiguration s3:PutBucketVersioning kms:CreateGrant kms:DescribeKey kms:Decrypt kms:ReEncryptFrom kms:ReEncryptTo kms:GenerateDataKeyWithoutPlaintext kms:GenerateDataKey ec2:DescribeImages ec2:RunInstances ec2:CreateTags

    RDS Custom 在创建实例期间使用这些权限。这些权限在您的账户中配置执行 RDS Custom 操作所需的资源。

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

以下示例 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-*" }, { "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", "kms:DescribeKey" ], "Resource": "*" } ] }

IAM 主体需要以下额外权限,才能使用自定义引擎版本(CEV):

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfigureKmsKeyEncryptionPermission", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account_id:key/key_id" }, { "Sid": "CreateEc2Instance", "Effect": "Allow", "Action": [ "ec2:DescribeImages", "ec2:RunInstances", "ec2:CreateTags" ], "Resource": "*" } ] }

account_id 替换为您用来创建实例的账户 ID。将 region 替换为您用来创建实例的 Amazon Web Services 区域。将 key_id 替换为客户自主管理型密钥 ID。可以根据需要添加多个密钥。

有关启动 EC2 实例所需的资源级权限的更多信息,请参阅启动实例(RunInstances)

此外,IAM 主体需要对 IAM 角色具有 iam:PassRole 权限。必须将其附加到在请求的 custom-iam-instance-profile 参数中传递的实例配置文件,以创建 RDS Custom 数据库实例。实例配置文件及其附加的角色稍后将在步骤 2:配置网络、实例配置文件和加密中创建。

注意

确保之前列出的权限不受服务控制策略 (SCP)、权限边界或与 IAM 主体关联的会话策略的限制。

步骤 2:配置网络、实例配置文件和加密

您可以使用以下任一过程来配置 IAM 实例配置文件角色、虚拟私有云 (VPC) 和 Amazon KMS 对称加密密钥:

注意

如果您的账户属于任一 Amazon Organizations,请确保实例配置文件角色所需的权限不受服务控制策略(SCP)限制。

此主题中的网络配置在与不公开访问的数据库实例配合使用时效果最佳。您无法从 VPC 外部直接连接到此类数据库实例。

使用 Amazon CloudFormation 进行配置

为了简化设置,您可以使用 Amazon CloudFormation 模板文件创建 CloudFormation 堆栈。CloudFormation 模板根据 RDS Custom 的要求创建所有网络配置、实例配置文件和加密资源。

要了解如何创建堆栈,请参阅《Amazon CloudFormation 用户指南》中的在 Amazon CloudFormation 控制台上创建堆栈

有关如何使用 Amazon CloudFormation 模板启动 Amazon RDS Custom for SQL Server 的教程,请参阅 Amazon 数据库博客 中的通过 Amazon CloudFormation 模板开始使用 Amazon RDS Custom for SQL Server

CloudFormation 所需的参数

使用 CloudFormation 配置 RDS Custom 必备资源需要以下参数:

参数组 参数名称 默认值 描述
可用性配置 为先决条件设置选择可用性配置 多可用区 指定是在单可用区还是多可用区配置中,为 RDS Custom 实例设置先决条件。如果您在配置中至少需要一个多可用区数据库实例,则应使用多可用区配置
网络配置 为 VPC 指定 IPv4 CIDR 块 10.0.0.0/16

为 VPC 指定 IPv4 CIDR 块(或 IP 地址范围)。此 VPC 配置为创建和使用 RDS Custom 数据库实例。

为两个私有子网中的第一个指定 IPv4 CIDR 块 10.0.128.0/20

为您的第一个私有子网指定 IPv4 CIDR 块(或 IP 地址范围)。这是可在其中创建 RDS Custom 数据库实例的两个子网之一。这是一个私有子网,无法访问互联网。

为两个私有子网中的第二个指定 IPv4 CIDR 块 10.0.144.0/20

为第二个私有子网指定 IPv4 CIDR 块(或 IP 地址范围)。这是可在其中创建 RDS Custom 数据库实例的两个子网之一。这是一个私有子网,无法访问互联网。

为公有子网指定 IPv4 CIDR 块 10.0.0.0/20

为您的公有子网指定 IPv4 CIDR 块(或 IP 地址范围)。这是可以在其中创建 EC2 实例与 RDS Custom 数据库实例连接的子网之一。这是一个可以访问互联网的公有子网。

RDP 访问配置 您的源的 IPv4 CIDR 块

指定您的源的 IPv4 CIDR 块(或 IP 地址范围)。这是您与公有子网中的 EC2 实例建立 RDP 连接的 IP 范围。如果未设置,则不配置与 EC2 实例的 RDP 连接。

设置 RDP 对 RDS Custom for SQL Server 实例的访问权限

指定是否建立从 EC2 实例到 RDS Custom for SQL Server 实例的 RDP 连接。默认情况下,不配置从 EC2 实例到数据库实例的 RDP 连接。

使用默认设置成功创建 CloudFormation 堆栈会在您的 Amazon Web Services 账户中创建以下资源:

  • 对称加密 KMS 密钥,用于加密 RDS Custom 管理的数据。

  • 使用 AmazonRDSCustomInstanceProfileRolePolicy 将实例配置文件与 IAM 角色相关联,以提供 RDS Custom 所需的权限。有关更多信息,请参阅《Amazon 托管策略参考指南》中的 AmazonRDSCustomServiceRolePolicy

  • 将 CIDR 范围指定为 CloudFormation 参数的 VPC。默认值为 10.0.0.0/16

  • 在参数中指定了 CIDR 范围的两个私有子网,以及 Amazon Web Services 区域中的两个不同可用区。子网 CIDR 的默认值为 10.0.128.0/2010.0.144.0/20

  • 一个在参数中指定了 CIDR 范围的公有子网。子网 CIDR 的默认值为 10.0.0.0/20。EC2 实例位于此子网中,可用于连接到 RDS Custom 实例。

  • 为 VPC 设置了 DHCP 选项,域名解析为 Amazon 域名系统 (DNS) 服务器。

  • 与两个私有子网关联但无法访问互联网的路由表。

  • 与公有子网关联且可以访问互联网的路由表。

  • 与 VPC 关联且允许互联网访问公有子网的互联网网关。

  • 网络访问控制列表(ACL),与两个私有子网关联并且在 VPC 内只能访问 HTTPS 和数据库端口。

  • 要与 RDS Custom 实例关联的 VPC 安全组。限制对 RDS Custom 所需的 Amazon Web Services 服务端点的出站 HTTPS 访问,以及对 EC2 实例安全组的入站数据库端口的访问。

  • 要与公有子网中的 EC2 实例关联的 VPC 安全组。限制出站数据库端口对 RDS Custom 实例安全组的访问。

  • 对于为 RDS Custom 所需的 Amazon Web Services 服务端点创建的 VPC 端点,要与它们关联的 VPC 安全组。

  • 在其中创建 RDS Custom 实例的数据库子网组。此模板创建的两个私有子网已添加到数据库子网组中。

  • 对应于 RDS Custom 所需的每个 Amazon Web Services 服务端点的 VPC 端点。

除了上述列表之外,将可用性配置设置为多可用区还会创建以下资源:

  • 允许私有子网之间通信的网络 ACL 规则。

  • 对与 RDS Custom 实例关联的 VPC 安全组中多可用区端口的入站和出站访问权限。

  • 与进行多可用区通信所需的 Amazon 服务端点连接的 VPC 端点。

此外,设置 RDP 访问配置还会创建以下资源:

  • 配置从您的源 IP 地址对公有子网的 RDP 访问权限:

    • 允许建立从您的源 IP 到公有子网的 RDP 连接的网络 ACL 规则。

    • 对从您的源 IP 连接到与 EC2 实例关联的 VPC 安全组的 RDP 端口进行入口访问。

  • 配置从公有子网中的 EC2 实例到私有子网中的 RDS Custom 实例的 RDP 访问权限:

    • 允许建立从公有子网到私有子网的 RDP 连接的网络 ACL 规则。

    • 对从与 EC2 实例关联的 VPC 安全组连接到与 RDS Custom 实例关联的 VPC 安全组的 RDP 端口进行入站访问

使用以下过程为 RDS Custom for SQL Server 创建 CloudFormation 堆栈。

下载 Amazon CloudFormation 模板文件

下载模板文件
  1. 打开链接 custom-sqlserver-onboard.zip 的上下文(右键单击)菜单,然后选择 Save Link As(将链接另存为)。

  2. 将文件保存并提取到您的计算机中。

使用 CloudFormation 配置资源

使用 CloudFormation 配置资源
  1. 通过以下网址打开 CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  2. 要启动 Create Stack(创建堆栈)向导,请选择 Create Stack(创建堆栈)。

    此时会显示 Create stack(创建快照)。

  3. 对于 Prerequisite - Prepare template(先决条件 - 准备模板),请选择 Template is ready(模板已就绪)。

  4. 对于 Select Template(选择模板),执行以下操作:

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

    2. 对于选择文件,请导航到并选择正确的文件。

  5. 选择下一步

    此时将出现 Specify stack details(指定堆栈详细信息)页面。

  6. 对于堆栈名称,输入 rds-custom-sqlserver

  7. 对于 Parameters(参数),请执行以下操作:

    1. 要保留原定设置选项,请选择 Next(下一步)。

    2. 要更改选项,请选择相应的可用性配置、网络配置和 RDP 访问配置,然后选择下一步

      在更改参数之前,请仔细阅读每个参数的说明。

    注意

    如果您选择在此 CloudFormation 堆栈中至少创建一个多可用区实例,请确保 CloudFormation 堆栈参数为先决条件设置选择可用性配置设置为 Multi-AZ。如果您将 CloudFormation 堆栈创建为单可用区,请在创建第一个多可用区实例之前将 CloudFormation 堆栈更新为多可用区配置。

  8. 配置堆栈选项页面上,请选择下一步

  9. Review rds-custom-sqlserver(查看 rds-custom-sqlserver)页面上,请执行以下操作:

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

    2. 选择创建堆栈

注意

请勿直接从资源页面更新从该 Amazon CloudFormation 堆栈创建的资源。这可以防止您使用 Amazon CloudFormation 模板将后续更新应用于这些资源。

CloudFormation 创建 RDS Custom for SQL Server 所需的资源。如果堆栈创建失败,请通读 Events(事件)选项卡,以查看哪项资源创建失败及其状态原因。

对于将作为参数传递以创建 RDS Custom for SQL Server 数据库实例的所有资源,控制台中此 CloudFormation 堆栈的 Outputs(输出)选项卡应包含有关它们的信息。确保使用 CloudFormation 为 RDS Custom 数据库实例创建的 VPC 安全组和数据库子网组。原定设置情况下,RDS 会尝试附加原定设置 VPC 安全组,该安全组可能没有您所需的访问权限。

如果您使用了 CloudFormation 来创建资源,则可以跳过手动配置

您还可以在创建后更新 CloudFormation 堆栈的一些相关配置。可以更新的配置包括:

  • RDS Custom for SQL Server 的可用性配置

    • 为先决条件设置选择可用性配置:更新此参数可在单可用区和多可用区配置之间切换。如果您将此 CloudFormation 堆栈用于至少一个多可用区实例,则必须更新该堆栈以选择多可用区配置。

  • RDS Custom for SQL Server 的 RDP 访问配置

    • 您的源的 IPv4 CIDR 块:您可以通过更新此参数来更新您的源的 IPv4 CIDR 块(或 IP 地址范围)。将此参数设置为空白会删除从源 CIDR 块到公有子网的 RDP 访问配置。

    • 设置对 RDS Custom for SQL Server 的 RDP 访问:启用或禁用从 EC2 实例到 RDS Custom for SQL Server 实例的 RDP 连接。

在从 CloudFormation 堆栈中删除所有使用资源的 RDS Custom 实例后,即可删除该堆栈。RDS Custom 不会跟踪 CloudFormation 堆栈,因此当存在使用堆栈资源的数据库实例时,它不会阻止删除该堆栈。在删除该堆栈时,请确保没有使用堆栈资源的 RDS Custom 数据库实例。

注意

当您删除 CloudFormation 堆栈时,该堆栈创建的所有资源都会被删除,但 KMS 密钥除外。KMS 密钥会进入等待删除状态并且将在 30 天后删除。要保留 KMS 密钥,请在 30 天宽限期内执行 CancelKeyDeletion 操作。

手动配置

如果您选择手动配置资源,请执行以下任务。

注意

为了简化设置,您可以使用 Amazon CloudFormation 模板文件来创建 CloudFormation 堆栈,而不是手动配置。有关更多信息,请参阅 使用 Amazon CloudFormation 进行配置

也可以使用 Amazon CLI 来完成本部分的操作。如果是,请下载并安装最新的 CLI。

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

RDS Custom 需要对称的加密 Amazon KMS key。在创建 RDS Custom for SQL Server 数据库实例时,确保提供 KMS 密钥标识符做为参数 kms-key-id。有关更多信息,请参阅 为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例

您有以下选项:

  • 如果您的 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 实例配置文件中的 kms:Decrypt(IAM)角色授予对 kms:GenerateDataKey 和 Amazon Identity and Access Management 操作的访问权限。如果您的账户中有一个新的对称加密密钥,不需要进行任何更改。否则,请确保对称加密密钥的策略授予对这些操作的访问权限。

有关更多信息,请参阅 步骤 4:为 RDS Custom for Oracle 配置 IAM

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

可以手动创建实例配置文件并使用它来启动 RDS Custom 实例。如果计划在 Amazon Web Services Management Console中创建实例,请跳过此部分。Amazon Web Services Management Console允许您创建实例配置文件并将其附加到 RDS Custom 数据库实例。有关更多信息,请参阅 使用 Amazon Web Services Management Console自动创建实例配置文件

手动创建实例配置文件时,请将实例配置文件名称作为 custom-iam-instance-profile 参数传递给 create-db-instance CLI 命令。RDS Custom 使用与此实例配置文件关联的角色,通过运行自动化功能来管理实例。

为 RDS Custom for SQL Server 创建 IAM 实例配置文件和 IAM 角色
  1. 创建名为 AWSRDSCustomSQLServerInstanceRole 的 IAM 角色,并带有信任策略,以便 Amazon EC2 可代入此角色。

  2. 将 Amazon 托管策略 AmazonRDSCustomInstanceProfileRolePolicy 添加到 AWSRDSCustomSQLServerInstanceRole

  3. 为名为 AWSRDSCustomSQLServerInstanceProfile 的 RDS Custom for SQL Server 创建 IAM 实例配置文件。

  4. AWSRDSCustomSQLServerInstanceRole 添加到实例配置文件。

创建 AWSRDSCustomSQLServerInstanceRole IAM 角色

以下示例将创建 AWSRDSCustomSQLServerInstanceRole 角色。信任策略将允许 Amazon EC2 代入该角色。

aws iam create-role \ --role-name AWSRDSCustomSQLServerInstanceRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }'
将访问策略添加到 AWSRDSCustomSQLServerInstanceRole

要提供所需的权限,请将 Amazon 托管策略 AmazonRDSCustomInstanceProfileRolePolicy 附加到 AWSRDSCustomSQLServerInstanceRoleAmazonRDSCustomInstanceProfileRolePolicy 允许 RDS Custom 实例发送和接收消息,并执行各种自动化操作。

注意

确保访问策略中的权限不受 SCP 或与实例配置文件角色关联的权限边境所限制。

以下示例将 Amazon 托管策略 AWSRDSCustomSQLServerIamRolePolicy 附加到 AWSRDSCustomSQLServerInstanceRole 角色。

aws iam attach-role-policy \ --role-name AWSRDSCustomSQLServerInstanceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonRDSCustomInstanceProfileRolePolicy
创建您的 RDS Custom for SQL Server 实例配置文件

实例配置文件是包含单个 IAM 角色的容器。RDS Custom 使用实例配置文件将角色传递给实例。

如果使用 Amazon Web Services Management Console创建 Amazon EC2 角色,该控制台会自动创建实例配置文件,将其命名为与所创建角色相同的名称。请按如下方式创建您的实例配置文件,将其命名为 AWSRDSCustomSQLServerInstanceProfile

aws iam create-instance-profile \ --instance-profile-name AWSRDSCustomSQLServerInstanceProfile
请将 AWSRDSCustomSQLServerInstanceRole 添加到您的 RDS Custom for SQL Server 实例配置文件中

AWSRDSCustomInstanceRoleForRdsCustomInstance 角色添加到先前创建的 AWSRDSCustomSQLServerInstanceProfile 配置文件中。

aws iam add-role-to-instance-profile \ --instance-profile-name AWSRDSCustomSQLServerInstanceProfile \ --role-name AWSRDSCustomSQLServerInstanceRole

手动配置您的 VPC

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

RDS Custom 将通信从数据库实例发送到其他 Amazon Web Services 服务。确保可以从您在其中创建 RDS Custom 数据库实例的子网访问以下服务:

  • Amazon CloudWatch

  • Amazon CloudWatch Logs

  • Amazon CloudWatch Events

  • Amazon EC2

  • Amazon EventBridge

  • Amazon S3

  • Amazon Secrets Manager

  • Amazon Systems Manager

如果创建多可用区部署

  • Amazon Simple Queue Service

如果 RDS Custom 无法与必需的服务通信,它会发布以下事件:

Database instance in incompatible-network. SSM Agent connection not available. Amazon RDS can't connect to the dependent Amazon services.
Database instance in incompatible-network. Amazon RDS can't connect to dependent Amazon services. Make sure port 443 (HTTPS) allows outbound connections, and try again. "Failed to connect to the following services: s3 events"

为避免 incompatible-network 错误,请确保您的 RDS Custom 数据库实例与 Amazon Web Services 服务之间通信所涉及的 VPC 组件满足以下要求:

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

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

  • RDS Custom 可以正确解析每个 Amazon Web Services 服务的端点的域名。

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

配置您的 VPC 安全组

安全组充当 VPC 实例的虚拟防火墙,以控制入站和出站流量。RDS Custom 数据库实例在其网络接口上附加了一个用于保护该实例的安全组。请确保该安全组允许通过 HTTPS 在 RDS Custom 和其他 Amazon Web Services 服务之间传输流量。可以将此安全组作为实例创建请求中的 vpc-security-group-ids 参数进行传递。

为 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 用户指南》中的创建虚拟私有云端点

  5. 对于 RDS Custom for SQL Server 多可用区实例,请确保与数据库实例关联的安全组允许在端口 1120 上建立与该安全组本身的入站和出站连接。这是在多可用区 RDS Custom for SQL Server 数据库实例上建立对等主机连接所必需的。

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

为依赖项 Amazon Web Services 服务配置端点

我们建议您按照以下说明为 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. 在导航窗格中,选择端点。在主窗格中,选择创建端点

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

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

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

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

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

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

    您可以使用安全组来控制对您的端点的访问,就像您使用防火墙一样。确保安全组允许端口 443 上来自数据库实例的入站连接。有关安全组的更多信息,请参阅 Amazon VPC 用户指南 中的您的 VPC 的安全组

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

  10. 选择创建端点

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

服务 端点格式 备注和链接

Amazon Systems Manager

采用以下端点格式:

  • ssm.region.amazonaws.com

  • ssmmessages.region.amazonaws.com

有关每个区域中端点的列表,请参阅《Amazon Web Services 一般参考》中的 Amazon Systems Manager 端点和限额

Amazon Secrets Manager

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

有关每个区域中端点的列表,请参阅《Amazon Web Services 一般参考》中的 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 Web Services 一般参考》中的 Amazon Elastic Compute Cloud 端点和限额

Amazon S3

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

有关每个区域中端点的列表,请参阅《Amazon Web Services 一般参考》中的 Amazon Simple Storage Service 端点和限额

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

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

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

Amazon Simple Queue Service

采用端点格式 sqs.region.amazonaws.com 要查看每个区域中端点的列表,请参阅 Amazon Simple Storage Service 端点和限额
配置实例元数据服务

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

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

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

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

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

跨实例限制

当您按照上述步骤创建实例配置文件时,系统会使用 Amazon 托管策略 AmazonRDSCustomInstanceProfileRolePolicy 向 RDS Custom 提供实现实例管理和监控自动化所需的权限。该托管策略可确保这些权限仅允许访问 RDS Custom 运行自动化功能所需的资源。建议使用该托管策略来支持新功能并满足安全要求,这些要求会自动应用于现有的实例配置文件,无需人工干预。有关更多信息,请参阅Amazon 托管策略:AmazonRDSCustomInstanceProfileRolePolicy

AmazonRDSCustomInstanceProfileRolePolicy 托管策略将实例配置文件限制为具有跨账户访问权限,但它可能允许在同一账户内跨 RDS Custom 实例访问某些 RDS Custom 托管资源。根据您的要求,您可以使用权限边界进一步限制跨实例访问。权限边界策略定义基于身份的策略可以授予实体的最大权限,但它本身并不授予权限。有关更多信息,请参阅评估有边界的有效权限

例如,以下策略限制实例配置文件角色对特定 Amazon KMS 密钥的访问,并限制跨使用不同 Amazon KMS 密钥的实例对 RDS Custom 托管资源的访问。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyOtherKmsKeyAccess", "Effect": "Deny", "Action": "kms:*", "NotResource": "arn:aws:kms:region:acct_id:key/KMS_key_ID" }, { "Sid": "NoBoundarySetByDefault", "Effect": "Allow", "Action": "*", "Resource": "*" } ] }
注意

请确保权限边界不会阻止 AmazonRDSCustomInstanceProfileRolePolicy 向 RDS Custom 授予的任何权限。