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

AWS Aurora Serverless v2 IAM认证结合aws:SourceIp无法正常工作

问题分析与解决方案

为什么IpAddress条件无法连接,IpAddressIfExists却能无限制访问?

当使用IpAddress条件时,AWS会强制校验aws:SourceIp是否匹配指定IP范围,一旦该值不存在或不匹配就会直接拒绝访问。你遇到的情况本质是rds-db:connect动作的上下文里,aws:SourceIp没有被正确识别或传递,常见原因包括:

  • 你的客户端实际出口IP并非123.241.200.168/32(比如使用了代理、VPN,或者运营商NAT导致IP动态变化)
  • Aurora Serverless v2公有集群在处理IAM认证连接时,无法正确获取客户端的公网源IP(比如通过AWS中转网络导致IP被替换)

换成IpAddressIfExists后,只要aws:SourceIp不存在就会跳过校验,所以能从任意地址连接,但这完全失去了IP限制的作用。

实现IP访问限制的正确方式

优先用RDS安全组做IP限制,这是网络层面的控制,比IAM策略更直接可靠:

  • 找到集群关联的安全组,添加入站规则:允许123.241.200.168/32访问PostgreSQL默认端口5432(或你自定义的端口)。

如果一定要通过IAM策略实现,先确认客户端的真实出口IP:

  • 在客户端执行aws sts get-caller-identity,查看请求的源IP是否与你指定的一致,再调整策略中的IP范围。

能否在账户级别配置IP限制?

可以,两种方案可选:

1. 服务控制策略(SCP)—— 适合AWS Organizations账户

如果你的账户属于AWS Organizations,可在组织根或OU层级创建SCP,全局限制所有账户内的rds-db:connect动作仅允许指定IP:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "rds-db:connect",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": ["123.241.200.168/32"]
                }
            }
        }
    ]
}

注意:SCP是Deny优先,需确保已有Allow策略允许合法访问,SCP仅用于缩小权限范围。

2. 账户级IAM权限边界

为账户内所有IAM实体(用户、角色)设置权限边界,限制rds-db:connect的源IP范围。但这种方式需要逐个配置实体,效率不如SCP高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:06:45