使用防火牆設定 Azure HDInsight 叢集的輸出網路流量
本文將逐步說明如何使用 Azure 防火牆保護來自 HDInsight 叢集的輸出流量。 下列步驟假設您要為現有的叢集設定 Azure 防火牆。 如果您要在防火牆後方部署新的叢集,請先建立您的 HDInsight 叢集和子網路。 接著,依照指南中的步驟進行。
背景
HDInsight 叢集通常會部署在虛擬網路中。 叢集在該虛擬網路外部的服務上具有相依性。
輸入的管理流量不能透過防火牆傳送。 您可以如此處所述,針對輸入流量使用 NSG 服務標籤。
HDInsight 輸出流量相依性幾乎完全是以 FQDN 進行定義。 其後面沒有靜態 IP 位址。 缺少靜態位址表示網路安全性群組 (NSG) 無法鎖定來自叢集的輸出流量。 這些 IP 位址經常變更,使得無法根據目前的名稱解析和用法來設定規則。
使用防火牆來保護輸出位址,以根據 FQDN 來控制輸出流量。 Azure 防火牆會根據目的地的 FQDN 或 FQDN 標記來限制輸出流量。
使用 HDInsight 設定 Azure 防火牆
使用 Azure 防火牆來鎖定現有 HDInsight 輸出流量的彙總步驟如下:
- 建立子網路。
- 建立防火牆。
Add application
規則至防火牆。- 將網路規則新增至防火牆。
- 建立路由表。
建立新的子網路
在您叢集所在的虛擬網路中建立名為 AzureFirewallSubnet 的子網路。
為叢集建立新的防火牆
使用從教學課程:使用 Azure 入口網站部署及設定 Azure 防火牆<部署防火牆>中的步驟,建立名為 Test-FW01 的防火牆。
使用應用程式規則設定防火牆
建立應用程式規則集合,讓叢集能夠傳送和接收重要通訊。
從 Azure 入口網站選取新的防火牆 TEST-FW01。
瀏覽至 [設定>規則>] 應用程式規則集合。>+
Add application rule collection
在
Add application rule collection
畫面中,提供下列資訊:上方區段
屬性 值 名稱 FwAppRule 優先順序 200 動作 允許 FQDN 標記區段
名稱 來源位址 FQDN 標籤 備註 Rule_1 * WindowsUpdate 和 HDInsight HDI 服務的必要項目 目標 FQDN 區段
名稱 來源位址 通訊協定:連接埠 目標 FQDN 備註 Rule_2 * https:443 login.windows.net 允許 Windows 登入活動 Rule_3 * https:443 login.microsoftonline.com 允許 Windows 登入活動 Rule_4 * https:443 storage_account_name.blob.core.windows.net 以您實際的儲存體帳戶名稱取代 storage_account_name
。 請務必在儲存體帳戶上啟用 [需要安全傳輸]。 如果您使用私人端點來存取記憶體帳戶,則不需要此步驟,而且記憶體流量不會轉送至防火牆。Rule_5 * http:80 azure.archive.ubuntu.com 允許在叢集上安裝 Ubuntu 安全性更新 Rule_6 * https:433 pypi.org、pypi.python.org、files.pythonhosted.org 允許 Azure 監視的 Python 套件安裝 選取 [新增]。
使用網路規則設定防火牆
建立網路規則,以正確設定您的 HDInsight 叢集。
繼續進行先前的步驟,瀏覽至 [網路規則集合]>
+ Add network rule collection
。在
Add network rule collection
畫面中,提供下列資訊:上方區段
屬性 值 名稱 FwNetRule 優先順序 200 動作 允許 服務標記區段
名稱 通訊協定 來源位址 服務標籤 目的地連接埠 備註 Rule_6 TCP * SQL 1433, 11000-11999 如果您使用 HDInsight 所提供的預設 SQL 伺服器,請在 SQL 的 [服務卷標] 區段中設定網路規則,以允許您記錄和稽核 SQL 流量。 除非您已在 HDInsight 子網路上設定 SQL Server 的服務端點 (這麼做將會略過防火牆)。 如果您針對Ambari、Oozie、Ranger和Hive中繼存放區使用自定義 SQL Server,則只需要允許流量流向您自己的自定義 SQL Server。 請參閱 Azure SQL Database 和 Azure Synapse Analytics 連線結構,以查看除了 1433 之外,還需要 11000-11999 連接埠範圍的原因。 Rule_7 TCP * Azure 監視器 * (選擇性) 計畫使用「自動調整」功能的客戶應新增此規則。 選取 [新增]。
建立及設定路由資料表
建立包含下列項目的路由表:
健康情況和管理服務中的所有 IP 位址,並以網際網路作為下一個躍點類型。 其應包含 4 個泛型區域的 IP,以及特定區域的 2 個 IP。 只有在 ResourceProviderConnection 設定為輸入時,才需要遵循此規則。 如果 ResourceProviderConnection 設定為 輸出 ,則 UDR 中不需要這些 IP。
IP 位址 0.0.0.0/0 的其中一個虛擬設備路由,並且以 Azure 防火牆私人IP 位址作為下一個躍點。
例如,如果叢集建立在美國的「美國東部」區域中,請使用使用下列步驟來為該叢集設定路由表:
選取您的 Azure 防火牆 Test-FW01。 複製 [概觀] 頁面上所列的私人 IP 位址。 在此範例中,我們將使用範例位址 10.0.2.4。
然後瀏覽至 [所有服務]>[網路]>[路由表] 和 [建立路由表]。
從新的路由中,瀏覽至 [設定]>[路由]>[+ 新增]。 新增下列路由:
路由名稱 | 位址首碼 | 下一個躍點類型 | 下一個躍點位址 |
---|---|---|---|
168.61.49.99 | 168.61.49.99/32 | 網際網路 | NA |
23.99.5.239 | 23.99.5.239/32 | 網際網路 | NA |
168.61.48.131 | 168.61.48.131/32 | 網際網路 | NA |
138.91.141.162 | 138.91.141.162/32 | 網際網路 | NA |
13.82.225.233 | 13.82.225.233/32 | 網際網路 | NA |
40.71.175.99 | 40.71.175.99/32 | 網際網路 | NA |
0.0.0.0 | 0.0.0.0/0 | 虛擬設備 | 10.0.2.4 |
完成路由表設定:
在 [設定] 底下選取 [子網路],將您建立的路由表指派給您的 HDInsight 子網路。
選取 [+ 建立關聯]。
在 [關聯子網路] 畫面上,選取其中已建立您叢集的虛擬網路。 以及用於 HDInsight 叢集的子網路。
選取 [確定]。
邊緣節點或自訂應用程式流量
上述步驟可讓叢集在沒有問題的情況下運作。 但您仍然需要設定相依性,以配合邊緣節點上執行的自訂應用程式 (如果有的話)。
應用程式相依性必須能加以識別並新增至 Azure 防火牆或路由表。
必須為應用程式流量建立路由,以避免非對稱式路由問題。
如果您的應用程式有其他相依性,這些相依性必須新增至您的 Azure 防火牆。 建立應用程式規則來允許 HTTP/HTTPS 流量,以及建立網路規則來允許其他一切流量。
記錄與級別
Azure 防火牆可以將記錄傳送到幾個不同的儲存系統。 如需為防火牆設定記錄的指示,請遵循教學課程:監視 Azure 防火牆記錄和計量。
完成記錄設定後,如果您正在使用 Log Analytics,您可以使用下列查詢來檢視已封鎖的流量:
AzureDiagnostics | where msg_s contains "Deny" | where TimeGenerated >= ago(1h)
第一次執行應用程式時,將 Azure 防火牆與 Azure 監視器記錄整合將會十分實用。 特別是當您任不知道所有應用程式相依性時。 您可以從分析 Azure 監視器中的記錄資料深入了解 Azure 監視器記錄
若要深入了解 Azure 防火牆和要求增加的級別限制,請參閱此文件,或參閱常見問題集。
存取叢集
成功設定防火牆之後,您可以使用內部端點 (https://CLUSTERNAME-int.azurehdinsight.net
) 從虛擬網路內部存取 Ambari。
若要使用公用端點 (https://CLUSTERNAME.azurehdinsight.net
) 或 ssh 端點 (CLUSTERNAME-ssh.azurehdinsight.net
),請確定路由表中的路由正確並具有 NSG 規則,以避免此處所述的非對稱式路由問題。 具體而言,在此情況下,您必須允許輸入 NSG 規則中的用戶端 IP 位址,並將其新增至下一個躍點設定為 internet
的使用者定義路由表。 如果路由未正確設定,您會看到逾時錯誤。