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

使用CNAME主机名访问AWS RDS失败:认证令牌与SSL疑问

AWS RDS IAM认证:CNAME生成令牌无法登录的问题解决

核心结论

CNAME记录可用于RDS连接,但不能直接用CNAME主机名生成IAM认证令牌,必须使用RDS实例的官方端点主机名生成令牌,再结合CNAME进行连接。

问题原因

AWS RDS的IAM认证插件(AWSAuthenticationPlugin)会严格校验令牌信息:

  • 生成令牌时指定的hostname必须与实际连接的RDS实例官方主机名完全匹配
  • RDS SSL证书仅包含官方端点域名(如xxx.us-east-1.rds.amazonaws.com),自定义CNAME不在证书的SAN列表中

当用CNAME生成令牌时:

  1. 令牌签名的主机名是自定义CNAME,与RDS实例真实主机名不符,插件直接返回Access denied
  2. 即使SSL连接启用,CNAME与证书域名不匹配会触发验证问题(即使跳过证书验证,认证插件的主机名校验依然会失败)

解决步骤

  1. 用RDS官方端点生成认证令牌
    替换命令中的hostname为你的RDS Writer实例官方端点(而非CNAME):

    aws rds generate-db-auth-token --hostname rds-dev-mysql56.us-east-1.rds.amazonaws.com --port 3306 --region us-east-1 --username readonly
    

    生成令牌后,在Datagrip中仍使用CNAME(rds-dev-mysql56.lock.internal)作为连接主机,填入该令牌作为密码即可登录。

  2. 正确配置SSL证书验证

    • 在Datagrip连接配置中,SSL选项选择Verify CA Certificate
    • 下载对应区域的RDS CA证书(如us-east-1的rds-ca-2019-root.pem)并上传,确保证书验证通过
  3. 确认CNAME解析正确性
    执行以下命令验证CNAME是否正确指向RDS官方端点:

    nslookup rds-dev-mysql56.lock.internal
    

    确保解析结果与RDS Writer实例的官方端点一致。

补充说明

直接使用实例端点生成令牌能成功,是因为令牌中的主机名与实际连接的实例主机名完全匹配,同时SSL证书也对应,满足认证插件和SSL的双重校验要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:02:24