2013-02-11 308 views
0

我一直無法找到有關如何預測Azure認爲您的IP地址的任何文檔。Azure客戶端IP地址

下面是我指的是,在紅色IP:我想實現當前客戶端IP地址xxx.xxx.xxx.xxx加入編程允許的IP地址

Windows Azure Server SQL database server configuration panel

回答

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; 
    } 
} 
+0

我剛纔看到你用「powershell」標記了這個問題,我認爲這個想法也可能轉移到了powershell腳本中。 – Nico 2013-02-11 17:06:43

1

您的IP地址取決於您所在網絡的NAT,除非您來自擁有固定公用IP地址的計算機。除非您的客戶端計算機從同一個網絡連接,並且您已詳細瞭解網絡,否則您不可能可靠地預測客戶端IP地址。唯一的解決方法是添加一個範圍從86.0.0.0到86.255.255.255,並希望它涵蓋了你所連接的網絡 - 但是大量的「不受歡迎的人」也會在這個範圍內登陸。

客戶端IP地址功能不應用於除直接管理訪問之外的任何操作,可以根據需要隨時手動設置。它也可以使用本地防火牆規則鎖定,通過將端口1433的訪問限制在特定的本地網絡機器上。任何更多的一般訪問應限制爲各種服務 - 例如OData風格,mobile services或使用某種port bridge,這可以通過VPN,VM和其他IaaS服務來實現。

我建議您先強烈思考您的使用案例 - 直接SQL訪問不是雲計算的可行模式。存在更快,更安全,更易於管理的許多替代方案。另外,至少你正在進入一個痛苦的世界,試圖讓這些人在安全方面爲他們的防火牆找出SQL端口的漏洞。