實作網路安全性

已完成

網路安全性的定義是藉由控制網路流量,來防止有人未經授權存取或攻擊資源的一種程序。 雖然您可以透過各種方式來進行控制,但目標要放在確保只允許合法流量。

以下範例架構所呈現的是部署了網路安全性的 HDInsight 叢集,並且會有如何實現此部署的相關討論。 黑色箭號代表輸入流量,藍色箭號代表輸出流量

Network Security

上述設計的目標是要確保只有源自受信任來源的網路流量可以到達 HDInsight 叢集,而且從 HDInsight 叢集離開的網路流量會前往受信任的目的地。 此外,會限制只有源自 HDInsight 的網路流量能到達儲存體和中繼存放區服務。

請查看下列領域,以深入了解上述設計的詳細資料

  1. 輸入安全性和叢集存取
  2. 輸出安全性
  3. VNet 服務端點。

輸入安全性

使用指派給子網路的網路安全性群組 (NSG) 即可實現輸入網路安全性。 NSG 會使用 HDInsight 服務標籤和 IP 範圍來限制能前往受信任來源的連入流量。

Inbound network security

在上面的示意圖中,網路安全性群組上建立了兩組輸入安全性規則。 第一個輸入安全性規則使用 HDInsight 服務標籤以允許來自 HDInsight 健康情況和管理服務的輸入流量。 第二個輸入安全性規則則是 IP 範圍,可讓特定 IP 位址範圍內的使用者存取 HDInsight 上的特定連接埠 (例如 SSH 連接埠 22)。

在 HDInsight 叢集部署所在的子網路上使用 NSG 規則,即可實現輸入網路安全性。 以下舉例說明如何建立這些 NSG 的規則。

  • 視需要建立具有多個子網路的 VNet。 其中一個子網路用來裝載 HDInsight 叢集,而且會與 NSG 相關聯。

    Creating a Vnet

  • 建立網路安全性群組 (NSG)。 在 NSG 中,左側的 [設定] 區段底下有兩組安全性規則:[輸入] 和 [輸出]。 我們會使用 [輸入安全性規則] 區段,並將其他規則新增至現有的規則集。

    Creating a Network Security Group

  • 識別要在其中部署 HDInsight 服務的區域,並根據該區域來識別需要使用的服務標籤。 根據受限權限的區域和層級,您可能必須套用某些排列和組合的服務標籤才能實現目的。 按一下 [新增],在網路安全性群組上建立額外的輸入安全性規則,並根據部署的區域來指派服務標籤。

    Creating a service tags

  • 以下舉例說明區域對上服務標籤的組合。 您可以在 Azure HDInsight 的網路安全性群組 (NSG) 服務標籤中找到區域對上服務標籤組合的完整清單。

服務標籤類型 Country 區域 服務標籤 描述
全球 NA NA HDInsight 適用於 HDInsight 的單一全域服務標籤
地區 美國 美國西部 2 HDInsight.WestUS2 單一服務標籤
地區 美國 美國東部 2 HDInsight.EastUS2 HDInsight.WestUS HDInsight.EastUS 服務標籤的組合
地區 中國 中國北部 HDInsight.ChinaNorth HDInsight.ChinaEast 服務標籤的組合
  • 根據您的設計需求,您現在可以在 [輸入規則] 區段中新增額外的規則,以允許來自其他受信任來源的輸入流量。

使用 VNet 部署的 HDInsight 叢集存取

從安全性的觀點來看,HDInsight 叢集的所有公用端點通常都無法存取,在這種情況下,有多種替代方式可存取 VNet 中的 HDInsight 叢集,其說明請見下方的範例表示法。 HDInsight 叢集建立於 VNet 內時,會同時公開公用和私人負載平衡端點。

HDInsight cluster access with deployed with a VNet

在網路路徑 1 中,透過一般公用網際網路對叢集的存取會遭到封鎖,但可以建立 NSG 規則,以允許 Azure 外部的特定用戶端使用 HTTPS 透過連接埠 443 經由公用端點安全地存取叢集 (使用 https://<clustername>.azurehdinsight.net)。

在網路路徑 2 中,若要略過 NSG,應在 HDInsight 子網路所在的 VNet 內建立 Jumpbox。 使用者可透過 RDP 連線至此 Jumpbox,然後使用 <clustername> 透過連接埠 443 存取 HDInsight 私人端點 (使用 https://<clustername>.azurehdinsight.net)。

在網路路徑 3 中,我們修改 NSG 規則,允許 Azure 外部的用戶端經由公用端點透過連接埠 22 使用 SSH 存取叢集 (使用 https://<clustername>-ssh.azurehdinsight.net)。

輸出安全性

來自 HDInsight 的流量必須能前往多個目的地,服務才能正常運作。 不過,使用者也須審慎確保這些目的地是受信任的。
HDInsight 的輸出流量相依性是使用完整網域名稱 (FQDN) 定義的,且沒有靜態 IP 位址。 假設 FQDN 的 IP 位址有可能變更,NSG 就不能用來控制來自 HDInsight 叢集的輸出流量。 因此,會改為使用 Azure 防火牆服務或客戶託管的網路虛擬設備來控制源自於叢集的輸出流量。 在實際案例中,從 HDInsight 子網路流出的流量會使用「使用者定義的路由」(UDR) 透過通道傳至網路虛擬設備或 Azure 防火牆,繼而在該處根據 HDInsight 服務標籤所定義的安全性規則,允許輸出流量。

在下列範例中,您會看到 HDInsight 子網路的輸出流量流入 Azure 防火牆中,而其中已執行 HDInsight 服務標籤的評估,以確保輸出流量的目標為受信任的目的地。 雖然允許流量前往中繼存放區、儲存體和 HDInsight 管理 IP 等位置,但仍會封鎖流向未經核准的網際網路目的地的流量。 雖然 HDInsight 服務標籤中的目的地是由 Microsoft 所維護,但客戶若有特定輸出流量需求無法由 HDInsight 服務標籤滿足,仍可選擇從已發佈至 HDInsight FQDN (且可由客戶維護和更新) 自行建立服務標籤。 如需路由表設定和防火牆設定的詳細資訊,可檢閱 HDInsight 的限制輸出流量頁面

Outbound Security Rules

以下是啟用輸出流量限制所需的步驟:

  1. 建立 Azure 防火牆
  2. 將應用程式和輸出安全性網路規則新增至防火牆
  3. 建立使用者定義的路由

虛擬網路服務端點

虛擬網路服務端點會將 VNet 的身分識別延伸至 Azure 服務。 在服務上啟用 VNet 服務端點,會授與從特定 VNet/子網路組合存取該服務的權限,然後透過最佳且安全的路徑,將來自該子網路的流量路由至服務。 HDInsight 服務需要存取的資源 (例如儲存體帳戶和 SQL 中繼存放區) 可透過 VNET 服務端點來保護,如下列範例架構所示。

在此範例中,VNet 服務端點設定於 ADLS Gen2 儲存體和 Hive 中繼存放區服務 (在 Azure SQL Server 上),且將允許來自 HDInsight VNet 的流量。

「資料存取安全性」一節會更詳盡地說明建立 VNet 服務端點的步驟。

VNet Service Endpoints