场景一
问题描述
用户的公网IP不固定,使用本地IP查看工具定位到的IP不准确,即使将查询到的本地IP加入了RDS的白名单中,连接RDS的时候也报错。所以,用户需要查询到准确的客户端IP才能访问RDS。
获取客户端IP
说明:将IP地址0.0.0.0/0添加到RDS实例的白名单中,代表允许任何IP访问RDS实例。
说明:将IP地址0.0.0.0/0添加到RDS实例的白名单中,代表允许任何IP访问RDS实例。
SELECT * FROM SYS.DM_EXEC_SESSIONS WHERE SESSION_ID=<之前获取的SPID>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您的场景描述中,您提到了两种情况:一是用户需要查询到准确的客户端IP以确保能够成功访问阿里云RDS(SQL Server),二是统计并管理已连接到RDS的所有IP地址,以进行安全监控或问题定位。下面是对这两个场景操作步骤的总结和补充说明:
临时开放白名单:首先,为了能够从任何IP地址连接到RDS实例进行测试,将0.0.0.0/0
添加到RDS实例的白名单设置中。这一步骤是临时的,目的是确保当前客户端IP可以连接数据库。
查询客户端IP:通过SQL Server客户端连接RDS后,执行以下SQL命令来查询当前客户端的IP地址:
SELECT CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') AS CLIENT_NET_ADDRESS;
这个命令会直接返回客户端的网络地址。
调整白名单策略:一旦获取到准确的客户端IP,应立即登录阿里云控制台,将之前添加的0.0.0.0/0
从RDS实例的白名单中移除,并仅添加查询到的具体客户端IP地址,以增强数据库的安全性。
同样开放白名单:与场景一类似,先将0.0.0.0/0
加入白名单,允许所有IP连接,以便收集连接信息。
查询所有连接IP:使用更详细的SQL查询来获取所有活跃连接的详细信息,包括IP地址、端口等:
SELECT SP.SPID, SP.LOGINAME, SP.LOGIN_TIME, SP.HOSTNAME, SP.PROGRAM_NAME,
DC.CLIENT_TCP_PORT, DC.CLIENT_NET_ADDRESS
FROM SYS.SYSPROCESSES AS SP
INNER JOIN SYS.DM_EXEC_CONNECTIONS AS DC ON SP.SPID = DC.SESSION_ID
WHERE SP.SPID > 50 AND DC.AUTH_SCHEME='SQL';
此命令不仅列出IP,还提供了进程ID、登录名、登录时间、主机名、程序名称和TCP端口等额外信息,有助于进一步分析和管理连接。
精细化管理与安全加固:完成IP信息收集后,及时调整RDS实例的白名单,移除0.0.0.0/0
,根据实际需求只保留必要的信任IP地址。同时,根据查询结果,对异常或不再需要的连接进行审查和处理,以维护数据库的安全性和性能。