在 Amazon RDS 终端节点中使用 IAM 身份验证 AWS DMS - AWS数据库迁移服务

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

在 Amazon RDS 终端节点中使用 IAM 身份验证 AWS DMS

AWS身份和访问管理 (IAM) Access Management 数据库身份验证AWS通过 IAM 凭证管理数据库访问权限,从而增强您的 Amazon RDS 数据库的安全性。IAM 身份验证不是使用传统的数据库密码,而是使用 AWS 凭证生成短期身份验证令牌,有效期为 15 分钟。这种方法无需在应用程序代码中存储数据库密码,降低了凭证泄露的风险,并通过 IAM 提供集中式访问管理,从而显著提高了安全性。它还利用现有的 AWS IAM 角色和策略简化了访问管理,使您能够使用与用于其他AWS服务的相同 IAM 框架来控制数据库访问权限。

AWS DMS在亚马逊 RDS 上连接到 MySQL、PostgreSQL、Aurora PostgreSQL、Aurora MySQL 或 MariaDB 终端节点时,现在支持对运行 DMS 3.6.1 或更高版本的复制实例进行 IAM 身份验证。在为这些引擎创建新的端点时,您可以选择 IAM 身份验证并指定 IAM 角色,而不是提供数据库凭证。这种集成无需为迁移任务管理和存储数据库密码,从而增强了安全性。

在中为 Amazon RDS 终端节点配置 IAM 身份验证 AWS DMS

在创建端点时,您可以为 Amazon RDS 数据库配置 IAM 身份验证。要配置 IAM 身份验证,请执行以下操作:

  1. 确保 Amazon RDS 和数据库用户启用了 IAM 身份验证。有关更多信息,请参阅《Amazon Relational Database Service 用户指南》中的启用和禁用 IAM 数据库身份验证

  2. 导航到 IAM 控制台,使用以下策略创建 IAM 角色:

    Policy

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": "*" } ] }

    信任策略:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "dms.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. AWS DMS 控制台中配置端点期间,导航到端点数据库的访问权限部分,然后选择 IAM 身份验证

  4. RDS 数据库身份验证的 IAM 角色下拉菜单中,选择具有相应数据库访问权限的 IAM 角色。

    有关更多信息,请参阅创建源和目标端点

  1. 确保 Amazon RDS 和数据库用户启用了 IAM 身份验证。有关更多信息,请参阅《Amazon Relational Database Service 用户指南》中的启用和禁用 IAM 数据库身份验证

  2. 导航到 AWS CLI,创建 IAM 角色并允许 DMS 代入该角色:

    策略:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": "*" } ] }

    信任策略:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "dms.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. 运行以下命令以导入证书并下载 PEM 文件。有关更多信息,请参阅《Amazon Relational Database Service 用户指南》中的下载 Amazon RDS 的证书捆绑包

    aws dms import-certificate --certificate-identifier rdsglobal --certificate-pem file://~/global-bundle.pem
  4. 运行以下命令以创建 IAM 端点:

    • 对于 PostgreSQL/Aurora PostgreSQL 端点(sslmode如果设置required--certificate-arn,则不需要标记):

      aws dms create-endpoint --endpoint-identifier <endpoint-name> --endpoint-type <source/target> --engine-name <postgres/aurora-postgres> --username <db username with iam auth privileges> --server-name <db server name> --port <port number> --ssl-mode <required/verify-ca/verify-full> --postgre-sql-settings "{\"ServiceAccessRoleArn\": \"role arn created from step 2 providing permissions for iam authentication\", \"AuthenticationMethod\": \"iam\", \"DatabaseName\": \"database name\"}" --certificate-arn <if sslmode is verify-ca/verify full use cert arn generated in step 3, otherwise this parameter is not required>
    • 对于 MySQL、MariaDB 或 Aurora MySQL 端点:

      aws dms create-endpoint --endpoint-identifier <endpoint-name> --endpoint-type <source/target> --engine-name <mysql/mariadb/aurora> --username <db username with iam auth privileges> --server-name <db server name> --port <port number> --ssl-mode <verify-ca/verify-full> --my-sql-settings "{\"ServiceAccessRoleArn\": \"role arn created from step 2 providing permissions for iam authentication\", \"AuthenticationMethod\": \"iam\", \"DatabaseName\": \"database name\"}" --certificate-arn <cert arn from previously imported cert in step 3>
  5. 对所需的复制实例运行测试连接以创建实例端点关联,并验证所有设置是否正确:

    aws dms test-connection --replication-instance-arn <replication instance arn> --endpoint-arn <endpoint arn from previously created endpoint in step 4>
    注意

    使用 IAM 身份验证时,测试连接中提供的复制实例必须为 3.6.1 或更高AWS DMS版本。

限制

AWS DMS对 Amazon RDS 终端节点使用 IAM 身份验证时存在以下限制:

  • 目前,Amazon RDS PostgreSQL 和 Amazon Aurora PostgreSQL 实例不支持通过 IAM 身份验证建立 CDC 连接。有关更多信息,请参阅《Amazon Relational Database Service 用户指南》中的 IAM 数据库身份验证限制