使用防火牆設定 Azure HDInsight 叢集的輸出網路流量

本文提供使用 Azure 防火牆 保護 HDInsight 叢集輸出流量的步驟。 下列步驟假設您要為現有的叢集設定 Azure 防火牆。 如果您要在防火牆後方部署新的叢集,請先建立 HDInsight 叢集和子網。 然後遵循本指南中的步驟。

背景

HDInsight 叢集通常會部署在虛擬網路中。 叢集與該虛擬網路外部的服務相依性。

輸入管理流量無法透過防火牆傳送。 您可以使用 NSG 服務標籤作為輸入流量,如這裡所述

HDInsight 輸出流量相依性幾乎完全使用 FQDN 定義。 其後面沒有靜態IP位址。 缺少靜態位址表示網路安全組 (NSG) 無法鎖定來自叢集的輸出流量。 IP 位址通常會變更足夠的規則,無法根據目前的名稱解析和使用來設定規則。

使用防火牆保護輸出位址,以根據 FQDN 控制輸出流量。 Azure 防火牆 會根據目的地的 FQDN 來限制輸出流量或FQDN 標籤

使用 HDInsight 設定 Azure 防火牆

使用 Azure 防火牆 鎖定現有 HDInsight 輸出的步驟摘要如下:

  1. 建立子網路。
  2. 建立防火牆。
  3. 將應用程式規則新增至防火牆。
  4. 將網路規則新增至防火牆。
  5. 建立路由表。

建立新的子網

在叢集所在的虛擬網路中建立名為 AzureFirewallSubnet 的子網。

為您的叢集建立新的防火牆

使用從教學課程:使用部署防火牆中的步驟,建立名為Test-FW01的防火牆:使用 Azure 入口網站 部署和設定 Azure 防火牆。

使用應用程式規則設定防火牆

建立可讓叢集傳送和接收重要通訊的應用程式規則集合。

  1. 從 Azure 入口網站 選取新的防火牆 Test-FW01

  2. 流覽至 設定> Rules> 應用程式規則集合>+ 新增應用程式規則集合。

    Title: Add application rule collection.

  3. 在 [ 新增應用程式規則集合 ] 畫面上,提供下列資訊:

    頂端區段

    屬性
    名稱 FwAppRule
    優先順序 200
    動作 允許

    FQDN 標記區段

    名稱 來源位址 FQDN 標籤 備註
    Rule_1 * WindowsUpdate 和 HDInsight HDI 服務的必要專案

    目標 FQDN 區段

    名稱 來源位址 通訊協定:連接埠 目標 FQDNS 備註
    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安全性更新

    Title: Enter application rule collection details.

  4. 選取 [新增]。

使用網路規則設定防火牆

建立網路規則以正確設定 HDInsight 叢集。

  1. 從上一個步驟繼續,流覽至 [網路規則集合>+ 新增網路規則集合]。

  2. 在 [ 新增網络規則集合 ] 畫面上,提供下列資訊:

    頂端區段

    屬性
    名稱 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 資料庫 和 Azure Synapse Analytics 連線架構,以瞭解除了 1433 之外,還需要 11000-11999 埠範圍的原因。
    Rule_7 TCP * Azure 監視器 * (選擇性)計劃使用自動調整功能的客戶應新增此規則。

    Title: Enter application rule collection.

  3. 選取 [新增]。

建立及設定路由表

使用下列專案建立路由表:

  • 來自 健康情況和管理服務 的所有IP位址,都有下一個躍點類型的 因特網。 它應該包含 4 個泛型區域的 IP,以及您特定區域的 2 個 IP。 只有在 ResourceProvider 連線 ion 設定為 [輸入] 時,才需要此規則。 如果 ResourceProvider 連線 ion 設定為輸出,則 UDR 中不需要這些 IP。

  • IP 位址 0.0.0.0/0 的一個虛擬設備路由,下一個躍點是您 Azure 防火牆 私人 IP 位址。

例如,若要為在美國「美國東部」區域中建立的叢集設定路由表,請使用下列步驟:

  1. 選取您的 Azure 防火牆 Test-FW01。 複製 [概觀] 頁面上所列的私人IP位址。 在此範例中,我們將使用 10.0.2.4的範例位址。

  2. 然後流覽至 [所有服務>網络>路由表] 和 [建立路由表]。

  3. 從新的路由中,流覽至 設定> Routes>+ Add。 新增下列路由:

路由名稱 位址前置詞 下一個躍點類型 下一個躍點位址
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

完成路由表設定:

  1. 選取 [設定 底下的子網],將您建立的路由表指派給 HDInsight 子網

  2. 選取 [+ 建立關聯]

  3. 在 [ 建立子網關聯] 畫面上,選取叢集建立的虛擬網路。 以及您用於 HDInsight 叢集的子網

  4. 選取 [確定]。

邊緣節點或自定義應用程式流量

上述步驟可讓叢集在沒有問題的情況下運作。 您仍然需要設定相依性,以容納在邊緣節點上執行的自定義應用程式,如果適用的話。

應用程式相依性必須識別並新增至 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。 如果路由未正確設定,您會看到逾時錯誤。

下一步