0

我无法找到任何有关如何预测 Azure 将您视为 IP 地址的文档。

这是我指的IP,红色:

Windows Azure Server SQL 数据库服务器配置面板

我正在尝试以编程方式实现当前客户端 IP 地址 xxx.xxx.xxx.xxx 添加到允许的 IP 地址。

4

2 回答 2

1

您的 IP 地址由您所在网络的 NAT 决定,除非您来自具有固定公共 IP 地址的机器。除非您有客户端计算机从同一网络连接,并且您详细了解网络,否则您不太可能可靠地预测客户端 IP 地址。唯一的解决方案是添加一个从 86.0.0.0 到 86.255.255.255 的范围,并希望它覆盖您连接的网络 - 但是很多“不受欢迎的”也会落在该范围内。

客户端 IP 地址功能不应用于直接管理员访问以外的任何其他用途,可以根据需要不时手动设置。也可以使用本地防火墙规则将其锁定,方法是将端口 1433 上的访问限制为特定的本地网络机器。任何更一般的访问都应仅限于某种服务——例如 OData 样式、移动服务或使用某种端口桥接,这可以通过 VPN、VM 和其他 IaaS 服务来促进。

我建议您首先认真考虑您的用例 - 直接 SQL 访问不是云计算的可行模式。存在许多更快、更安全和更易于管理的替代方案。此外,至少你正在进入一个痛苦的世界,试图让安全人员在他们的防火墙中为 SQL 端口戳洞。

于 2013-02-11T16:51:05.457 回答
1

这对我有用:有一个“AutoDetectClientIP”管理 API 调用将现有的防火墙异常更新为调用者的 IP 地址。

但是您需要访问对给定订阅有效的管理证书、订阅 ID、SQL Azure 服务器的名称和防火墙例外的名称。

public static bool SetFirewallRuleAutoDetect(string certFilename, string certPassword, string subscriptionId, string serverName, string ruleName)
{
    try
    {
       string url = string.Format("https://management.database.windows.net:8443/{0}/servers/{1}/firewallrules/{2}?op=AutoDetectClientIP",
                                  subscriptionId, 
                                  serverName, 
                                  ruleName);

       HttpWebRequest webRequest = HttpWebRequest.Create(url) as HttpWebRequest;

       webRequest.ClientCertificates.Add(new X509Certificate2(certFilename, certPassword));
       webRequest.Method = "POST";
       webRequest.Headers["x-ms-version"] = "1.0";
       webRequest.ContentLength = 0;

       // call the management api
       // there is no information contained in the response, it only needs to work
       using (WebResponse response = webRequest.GetResponse())
       using (Stream stream = webResponse.GetResponseStream())
       using (StreamReader sr = new StreamReader(stream))
       {
           Console.WriteLine(sr.ReadToEnd());
       }

       // the firewall was successfully updated
       return true;
   }
   catch
   {
       // there was an error and the firewall possibly not updated
       return false;
   }
}
于 2013-02-11T17:05:18.163 回答