You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS DMS Serverless连接自定义KMS加密RDS源时权限错误排查

解决AWS DMS Serverless访问加密PostgreSQL RDS的KMS权限问题

可能的遗漏点及修复步骤

1. 检查KMS密钥策略是否存在冲突的拒绝规则

KMS密钥策略遵循拒绝规则优先于允许规则的逻辑,如果你的密钥策略中存在其他Effect: Deny的语句,会直接覆盖你添加的允许权限。

  • 打开KMS控制台,找到目标密钥的「密钥策略」标签。
  • 排查是否有任何规则包含Deny效果,且可能限制了DMS服务关联角色的访问。
  • 若存在冲突的拒绝规则,根据安全要求调整或删除该规则。

2. 补充账户根用户的KMS权限(可选但推荐)

自定义KMS密钥策略时,若未明确允许账户根用户访问,可能导致权限链断裂。添加根用户权限不会降低安全性,反而能避免隐式权限丢失:

{
    "Sid": "Allow root access",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::59018XXXXXXX:root"
    },
    "Action": "kms:*",
    "Resource": "*"
}

3. 确保DMS Serverless的VPC允许访问KMS

DMS Serverless的工作节点运行在你指定的VPC中,若VPC未配置KMS访问路径,会触发类似权限错误的连接失败:

  • 方案1:配置KMS VPC端点
    在VPC中创建KMS接口端点(com.amazonaws.us-east-1.kms),并确保安全组允许DMS工作节点访问该端点的443端口。
  • 方案2:放行VPC出站HTTPS流量
    确认DMS使用的安全组允许出站HTTPS(443端口)流量到KMS公网服务。

4. 检查RDS实例资源策略是否限制DMS访问

如果PostgreSQL RDS实例配置了资源策略,需确保该策略允许DMS服务访问:
添加如下语句到RDS资源策略(替换占位符):

{
    "Effect": "Allow",
    "Principal": {
        "Service": "dms.amazonaws.com"
    },
    "Action": [
        "rds:DescribeDBInstances",
        "rds:Connect"
    ],
    "Resource": "arn:aws:rds:us-east-1:59018XXXXXXX:db:pgdb"
}

5. 验证服务关联角色的信任策略

虽然AWSServiceRoleForDMSServerless不可修改,但可确认其信任策略是否正确允许DMS服务假设该角色:

  • 打开IAM控制台,找到AWSServiceRoleForDMSServerless角色。
  • 查看「信任关系」标签,确认存在如下核心策略:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "dms.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

测试验证

完成上述调整后,重新测试DMS端点和复制配置的连接。若问题仍存在,可通过AWS CloudTrail查看KMS的Decrypt或DescribeKey操作日志,确认具体的权限拒绝原因(如请求主体是否正确、是否有权限边界限制)。

内容的提问来源于stack exchange,提问作者bphya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:52:38