场景一
问题描述
用户的公网IP不固定,使用本地IP查看工具定位到的IP不准确,即使将查询到的本地IP加入了RDS的白名单中,连接RDS的时候也报错。所以,用户需要查询到准确的客户端IP才能访问RDS。
获取客户端IP
将IP地址0.0.0.0/0或您公司的IP段加入RDS实例的白名单中,操作方法请参见设置白名单。
说明:将IP地址0.0.0.0/0添加到RDS实例的白名单中,代表允许任何IP访问RDS实例。
使用客户端连接RDS的SQL Server数据库。
执行如下命令,查询客户端IP。SELECT CONNECTIONPROPERTY('PROTOCOL_TYPE') AS PROTOCOL_TYPE,- CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') AS CLIENT_NET_ADDRESS
为确保RDS数据库的安全,获取到客户端IP后,请修改RDS实例的白名单,将在步骤1中添加的0.0.0.0/0或您公司的IP段从白名单中删除。
场景二
问题描述
若您想要统计已连接到RDS的SQL Server数据库的所有IP,或定位一些安全问题,如链接泄露等,您可以使用获取已连接到数据库的所有IP的方法。
获取所有连接到数据库的IP
将IP地址0.0.0.0/0或您公司的IP段加入RDS实例的白名单中,操作方法请参见设置白名单。
说明:将IP地址0.0.0.0/0添加到RDS实例的白名单中,代表允许任何IP访问RDS实例。
使用客户端连接RDS的SQL Server数据库。
执行如下命令,查询所有连接到数据库的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'
为确保RDS数据库的安全,获取到所有IP后,请修改RDS实例的白名单,将在步骤1中添加的0.0.0.0/0或您公司的IP段从白名单中删除。
查看更详细的连接参数配置
在查询到已连接到数据库的所有IP后,若您需要查看单个连接更详细的参数配置,请执行如下命令:
SELECT * FROM SYS.DM_EXEC_SESSIONS WHERE SESSION_ID=<之前获取的SPID>