amazon-web-services - Bastion 机器后面的 RDS 实例的跨账户 DMS 复制
问题描述
我在生产帐户中有生产堆栈,在开发帐户中有开发堆栈。堆栈是相同的,设置如下:
- 每个堆栈都作为自己的 VPC。
- VPC 中有两个跨 AZ 的公有子网和两个跨 AZ 的私有子网。
- 私有子网包含 RDS 实例。
- 公共子网包含一个可以访问 RDS 实例的 Bastion EC2 实例。
要访问 RDS 实例,我必须通过 SSH 连接到 Bastion 机器并从那里访问它,或者我通过 Bastion 创建一个 SSH 隧道以通过数据库客户端应用程序(例如 PGAdmin)访问它。
当前 DMS 设置:
我希望能够使用 DMS(数据库迁移服务)将 RDS 实例从生产复制到开发。到目前为止,我正在尝试以下操作,但无法使其正常工作:
在开发 VPC 和生产 VPC 之间创建 VPC 对等连接 在开发 VPC 的私有子网中创建复制实例 更新开发 VPC 中的私有子网路由表,以通过 VPC 对等连接将流量路由到生产 VPC 的 CIDR 确保复制实例的安全组可以访问两个 RDS 实例。
主要问题:
在 DMS 中创建源端点时,向导仅显示来自同一帐户和同一区域的 RDS 实例,并且仅允许使用服务器名称和端口配置 RDS 实例,但是,我的堆栈中的 RDS 实例只能通过以下方式访问使用隧道的堡垒机。因此,测试端点连接总是失败。
关于如何实现这种跨账户复制的任何想法?
有没有详细介绍如何执行此操作的详细循序渐进的博客?我发现了一些,但它们似乎没有 RDS 实例位于堡垒机后面,因此它们都假设可以使用服务器名称和端口填充端点配置向导。
非常感谢。
解决方案
通过堡垒主机保护 RDS 实例是可靠的安全实践,当然,对于开发人员/操作人员访问而言。
但是,对于 DMS 迁移服务,您应该期望同时为目标和源 RDS 数据库实例打开安全组,以允许迁移实例同时访问这两者。
来自 AWS Database Migration Service 的网络安全:
复制实例必须有权访问源端点和目标端点。复制实例的安全组必须具有允许从数据库端口上的实例出站到数据库端点的网络 ACL 或规则。
数据库端点必须包含允许来自复制实例的传入访问的网络 ACL 和安全组规则。您可以使用复制实例的安全组、私有 IP 地址、公共 IP 地址或 NAT 网关的公共地址来实现此目的,具体取决于您的配置。
请参阅 https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.Network.html
对于网络寻址和打开 RDS 私有子网,您需要在源和目标上都有一个 NAT。它们可以轻松添加,然后在迁移后终止。
您现在可以使用网络地址转换 (NAT) 网关,这是一种高度可用的 AWS 托管服务,可以轻松地从 AWS Virtual Private Cloud (VPC) 中的私有子网内的实例连接到 Internet。
推荐阅读
- flow-project - Flow DepartLane 定义异常
- java - 如何使用 ”?” 没有获得路径休息?
- ios - 修复 Swift 中的内存问题
- python - python字典上的spark2-submit意外自动排序
- python - 如何在不聚合原始 RDD 分区的情况下与多个 RDD 进行分组?
- xml - 在 XSLT 样式表中加密来自 XML 的字符串
- mysql - 选择并比较多个表 MYSQL PHP
- jenkins - 从 Jenkins 调用 ansible-playbook 不起作用
- javascript - 如何在 Cloudflare 中缓存一个简单的 javascript 数组并将其返回给 Slack?
- r - 从列表中删除列表