我有一个使用不同服务器的不同数据库的Azure应用程序。这些数据库是独立的,我的应用程序的每个部分只使用一个数据库。
我尝试制作一个IP过滤器。此过滤器必须识别申请者的IP,并根据此过滤器允许或拒绝访问每个数据库。这为我提供了一种使用Azure安全性允许对A进行访问而不允许对B进行访问的IP,对另一个IP允许对B进行访问而不允许对A进行访问的方法,以及对于另一个不同的IP进行完全访问的方法。
这是否可能?
谢谢,期待答案!
PS:抱歉我的英语很糟糕!
我相信你已经解决了这个问题,因为它已经过去几个月了,但以防万一...
假设我理解正确,你有一堆客户端与你的应用服务器通信,然后查询多个数据库服务器之一。mellamokb建议的防火墙不是一个选项,因为客户端实际上没有访问数据库,所以需要在应用服务器上进行设置。
根据客户端的IP地址选择用于访问数据库的连接字符串可能是你想要的。如果你还需要使用本地安全性锁定数据库,你需要为每个客户端创建一个命名用户帐户。
或者,你可以调查Azure SQL数据库上的Federations,并使用客户端的IP地址或类似的标识符作为分发键。
假设您正在引用 SQL Azure 托管的数据库,您可以使用文档此处中记录的数据库级防火墙设置。
通过使用 sp_set_database_firewall_rule 存储过程创建数据库级防火墙规则。通过在 sp_set_database_firewall_rule 存储过程的 name 参数中指定唯一名称,为基于互联网的连接添加新的防火墙设置。使用 start_ip_address 参数指定该范围内最低的 IP 地址,并使用 end_ip_address 参数指定该范围内最高的 IP 地址。name 参数是 nvarchar 数据类型,start_ip_address 和 end_ip_address 参数是 varchar 数据类型。
同样,您可以使用参数 start_ip_address 和 end_ip_address 等于 0.0.0.0 的 sp_set_database_firewall_rule 存储过程启用来自 Windows Azure 的连接尝试。