Amazon Database Migration Service 中的安全性 - Amazon 数据库迁移服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Database Migration Service 中的安全性

Amazon 的云安全性具有优先级最高。作为 Amazon 客户,您将从专为满足大多数安全敏感型组织的要求而打造的数据中心和网络架构中受益。

安全性是Amazon和您的共同责任。责任共担模式将其描述为云安全性和云的安全性:

  • 云的安全性 – Amazon 负责保护在 Amazon 云中运行 Amazon 服务的基础设施。Amazon 还向您提供可安全使用的服务。作为 Amazon 合规性计划的一部分,第三方审核人员将定期测试和验证安全性的有效性。要了解适用于 Amazon DMS 的合规性计划,请参阅合规性计划范围内的 Amazon 服务

  • 云中的安全性 - 您的责任由您使用的 Amazon 服务决定。您还需要对其他因素负责,包括您的数据的敏感性、您组织的要求以及适用的法律法规。

此文档将帮助您了解如何在使用 Amazon DMS 时应用责任共担模型。以下主题说明如何配置 Amazon DMS 以实现您的安全性和合规性目标。您还将了解如何使用其他 Amazon 服务来帮助您监控和保护 Amazon DMS 资源。

您可以管理对 Amazon DMS 资源和数据库 (DB) 的访问。用来管理访问的方法取决于您需要对 Amazon DMS 执行的复制任务:

  • 使用 Amazon Identity and Access Management (IAM) 策略分配决定谁可以管理 Amazon DMS 资源的权限。如果您以 IAM 用户身份登录,Amazon DMS 要求您具有适当权限。例如,您可以使用 IAM 确定哪些人可以创建、描述、修改和删除数据库实例和集群,为资源添加标签或修改安全组。有关 IAM 以及将其与 Amazon DMS 配合使用的更多信息,请参阅的身份和访问管理 Amazon Database Migration Service

  • Amazon DMS 使用带传输层安全性 (TLS) 的安全套接字层 (SSL) 进行终端节点连接。有关将 SSL/TLS 与 Amazon DMS 一起使用的更多信息,请参阅将 SSL 与 Amazon Database Migration Service 配合使用

  • Amazon DMS 使用 Amazon Key Management Service (Amazon KMS) 加密密钥对复制实例及其端点连接信息所使用的存储进行加密。Amazon DMS 还使用 Amazon KMS 加密密钥来保护 Amazon S3 和 Amazon Redshift 目标端点的静态目标数据。有关更多信息,请参阅设置加密密钥和指定 Amazon KMS 权限

  • Amazon DMS 始终在基于 Amazon VPC 服务的虚拟私有云 (VPC) 中创建复制实例以尽可能获得最大的网络访问控制。对于数据库实例和实例集群,请使用与复制实例相同的 VPC,或使用其他 VPC 来匹配此级别的访问控制。使用的每个 Amazon VPC 必须与安全组关联,该安全组应具有规则,允许所有端口上的所有流量离开(传出)VPC。使用此方法,只要这些终端节点上启用了正确的传入,就允许从复制实例与您的源和目标数据库终端节点通信。

    有关 Amazon DMS 的可用网络配置的更多信息,请参阅 为复制实例设置网络。有关在 VPC 中创建数据库实例或实例集群的更多信息,请参阅 Amazon 文档中的 Amazon 数据库安全和集群管理文档。有关 Amazon DMS 支持的网络配置的更多信息,请参阅 为复制实例设置网络

  • 要查看数据库迁移日志,您使用的 IAM 角色需要适当的 Amazon CloudWatch Logs 权限。有关 Amazon DMS 日志记录的更多信息,请参阅 使用 Amazon CloudWatch 监控复制任务

设置加密密钥和指定 Amazon KMS 权限

Amazon DMS 加密复制实例使用的存储以及终端节点连接信息。对于加密复制实例使用的存储,Amazon DMS 使用在您的 Amazon 账户中唯一的 Amazon Key Management Service (Amazon KMS) 密钥。您可以使用 Amazon KMS 查看和管理此密钥。您可以使用您账户 (aws/dms) 中的默认 KMS 密钥,也可以创建自定义 KMS 密钥。如果您有现有的 KMS 密钥,也可以使用该密钥加密。

注意

用作加密密钥的任何自定义或现有 Amazon KMS 密钥都必须是对称密钥。Amazon DMS 不支持使用非对称加密密钥。有关对称和非对称加密密钥的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的https://docs.amazonaws.cn/kms/latest/developerguide/symmetric-asymmetric.html

在首次启动复制实例时,如果未从创建复制实例页面的高级部分中选择自定义 KMS 密钥,将创建默认 KMS 密钥 (aws/dms)。如果您使用默认的 KMS 密钥,您只需要将 kms:ListAliaseskms:DescribeKey 权限授予用于迁移的 IAM 用户账户。有关使用默认 KMS 密钥的更多信息,请参阅 使用 Amazon DMS 所需的 IAM 权限

要使用自定义 KMS 密钥,请使用以下选项之一为自定义 KMS 密钥分配权限:

  • 以 Amazon KMS 自定义密钥的密钥管理员或密钥用户的身份添加用于迁移的 IAM 用户账户。这样做可确保将必需的 Amazon KMS 权限授予 IAM 用户账户。除了向 IAM 用户账户授予使用 Amazon DMS 的 IAM 权限之外,还需执行此操作。有关向密钥用户授予权限的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的允许密钥用户使用 KMS 密钥

  • 如果您不希望添加 IAM 用户账户作为自定义 KMS 密钥的密钥管理员或密钥用户,则除了必须向 IAM 用户账户授予使用 Amazon DMS 的 IAM 权限以外,还需授予以下附加权限。

    { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey", "kms:CreateGrant", "kms:Encrypt", "kms:ReEncrypt*" ], "Resource": "*" },

Amazon DMS 也适用于 KMS 密钥别名。有关创建您自己的 Amazon KMS 密钥以及授予用户对 KMS 密钥的访问权限的更多信息,请参阅《Amazon KMS 开发人员指南

如果您没有指定 KMS 密钥标识符,Amazon DMS 将使用您的默认加密密钥。Amazon KMS 为您的 Amazon 账户创建 Amazon DMS 的默认加密密钥。您的 Amazon 账户对每个 Amazon 区域具有不同的默认加密密钥。

要管理用于加密 Amazon DMS 资源的 Amazon KMS 密钥,您可以使用 Amazon Key Management Service。Amazon KMS 将安全、高度可用的硬件和软件结合起来,提供可扩展到云的密钥管理系统。通过使用 Amazon KMS,您可创建加密密钥并定义控制这些密钥的使用方式的策略。

您可以在 Amazon Web Services Management Console中查找 Amazon KMS。
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Key Management Service (Amazon KMS) 控制台:https://console.aws.amazon.com/kms

  2. 要更改 Amazon Web Services 区域,请使用页面右上角的区域选择器。

  3. 选择以下选项之一以使用 Amazon KMS 密钥:

    • 要查看您账户中 Amazon 为您所创建和管理的密钥,请在导航窗格中选择 Amazon managed keys(Amazon 托管式密钥)。

    • 要查看您账户中自己所创建和管理的密钥,请在导航窗格中选择 Customer managed keys (客户托管密钥)

Amazon KMS 支持 Amazon CloudTrail,因此,您可审核密钥使用情况以验证密钥是否使用得当。您可以将 Amazon KMS 密钥与 Amazon DMS 和支持的 Amazon 服务(例如 Amazon RDS、Amazon S3、Amazon Redshift 和 Amazon EBS)结合使用。

您也可以专门创建自定义 Amazon KMS 密钥来加密以下 Amazon DMS 终端节点的目标数据:

在创建 Amazon DMS 资源以及 KMS 密钥后,无法更改这些资源的加密密钥。请确保先确定加密密钥要求,然后再创建 Amazon DMS 资源。

Amazon Database Migration Service 网络安全

在使用 Amazon Database Migration Service 时为网络创建的安全要求取决于配置网络的方式。Amazon DMS 网络安全的一般规则如下:

  • 复制实例必须具有对源和目标终端节点的访问权限。复制实例的安全组必须具有网络 ACL 或规则来允许从实例数据库端口上传出到数据库终端节点。

  • 数据库终端节点必须包括网络 ACL 和安全组规则,允许来自复制实例的传入访问。根据配置,您可以使用复制实例的安全组、私有 IP 地址、公有 IP 地址或 NAT 网关的公有地址来实现这一点。

  • 如果您的网络使用 VPN 隧道,则充当 NAT 网关的 Amazon EC2 实例必须使用具有规则的安全组,该规则允许复制实例通过它发送流量。

默认情况下,Amazon DMS 复制实例使用的 VPC 安全组具有允许传出到所有端口上的 0.0.0.0/0 的规则。如果您修改此安全组或者使用自己的安全组,则必须至少允许传出到相应数据库端口上的源和目标终端节点。

您可用于数据库迁移的网络配置均要求有特定安全注意事项:

  • 一个 VPC 中具有所有数据库迁移组件的配置 – 端点使用的安全组必须允许从复制实例向数据库端口上的传入。确保由复制实例使用的安全组已传入到终端节点,或者您可以在由终端节点使用的安全组中创建规则,允许访问复制实例的私有 IP 地址。

  • 多 VPC 配置 – 复制实例使用的安全组规则必须具有针对数据库上的 VPC 范围和数据库端口的规则。

  • 使用 Amazon Direct Connect 或 VPN 配置到 VPC 的网络 – VPN 隧道,允许流量从 VPC 通过隧道流向本地 VPN。在此配置中,VPC 包含路由规则,会将以特定 IP 地址或范围为目标的流量发送到主机,该主机可以桥接从 VPC 到本地 VPN 的流量。如果是这种情况,NAT 主机包括自己的安全组设置,必须允许从复制实例私有 IP 地址或安全组到 NAT 实例的流量。

  • 使用 Internet 连接 VPC 的网络配置 – VPC 安全组必须包括路由规则,将并非以 VPC 为目标的流量发送到互联网网关。在此配置中,与终端节点的连接显示为来自复制实例上的公有 IP 地址。

  • 使用不在 VPC 中的 RDS 数据库实例与 VPC 中的数据库实例进行配置 ClassicLink – 当源或目标 Amazon RDS 数据库实例不在 VPC 中,并且不与复制实例所在的 VPC 共享安全组时,您可以设置代理服务器并使用 ClassicLink 连接源数据库和目标数据库。

  • 源端点位于复制实例所使用的 VPC 的外部并使用 NAT 网关 – 您可以使用绑定到单个弹性网络接口的单个弹性 IP 地址来配置网络地址转换 (NAT) 网关。之后,该弹性网络接口会收到一个 NAT 标识符 (nat-#####)。如果 VPC 包含到 NAT 网关而不是 Internet 网关的默认路由,复制实例将改为显示使用 Internet 网关的公有 IP 地址连接数据库终端节点。在这种情况下,对 VPC 外部的数据库终端节点的传入需要允许从 NAT 地址的传入,而不是复制实例的公有 IP 地址。

  • 适用于非 RDBMS 引擎的 VPC 端点 – Amazon DMS 不支持适用于非 RDBMS 引擎的 VPC 端点。

更改数据库密码

在大多数情况下,更改源或目标终端节点的数据库密码非常直接。如果您需要更改当前在迁移或复制任务中使用的终端节点的数据库密码,过程会略微复杂。以下过程演示了如何完成此操作。

更改迁移或复制任务中的终端节点的数据库密码
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon DMS 控制台:https://console.aws.amazon.com/dms/v2/

    如果以 IAM 用户身份登录,请确保具有适当的 Amazon DMS 访问权限。有关所需权限的更多信息,请参阅使用 Amazon DMS 所需的 IAM 权限

  2. 在导航窗格中,选择数据库迁移任务

  3. 选择使用要更改数据库密码的终端节点的任务,然后选择停止

  4. 任务停止时,您可以使用数据库中的本机工具来更改终端节点的数据库密码。

  5. 返回到 DMS 管理控制台,然后从导航窗格中选择终端节点

  6. 选择已更改密码的数据库的终端节点,然后选择修改

  7. 密码框中键入新密码,然后选择保存

  8. 从导航窗格中选择数据库迁移任务

  9. 选择之前停止的任务,然后选择重新启动/恢复

  10. 根据您希望如何继续执行该任务,选择重新启动恢复,然后选择启动任务