具有網路控制的任務關鍵性基準架構

Azure Front Door
Azure 防火牆
Azure 虛擬網路
Azure Kubernetes Service (AKS)

此架構提供指引,以設計具有嚴格網路控制的任務關鍵性工作負載,以防止未經授權的公用存取從網際網路存取任何工作負載資源。 其目的是要停止網路層的攻擊媒介,讓系統的整體可靠性不會受到影響。 例如,如果未核取,分散式阻斷服務 (DDoS) 攻擊,可能會導致資源變得無法使用,因為使用不具惡意的流量。

它會建置在 任務關鍵性基準架構上,其著重于在沒有網路控制的情況下將可靠性和運作效率最大化。 此架構會新增功能,以使用適當的雲端原生功能來限制輸入和輸出路徑,例如 Azure 虛擬網路 (VNet) 和私人端點、Azure Private Link、Azure 私用 DNS 區域等等。

建議您先熟悉基準,再繼續進行本文。

主要設計策略

任務 關鍵性基準的設計策略 仍適用于此使用案例。 以下是此架構的其他網路考慮:

  • 控制輸入流量

    必須限制輸入或輸入到虛擬網路的通訊,以防止惡意攻擊。

    在全域層級套用Web 應用程式防火牆 (WAF) 功能,以停止靠近攻擊來源的網路邊緣攻擊

    消除對 Azure 服務的公用連線。 其中一種方法是使用私人端點。

    在進入網路之前檢查流量。 網路安全性群組 (子網上的 NSG) ,藉由允許或拒絕流向已設定 IP 位址和埠的流量,協助篩選流量。 這種控制層級也有助於進行細微記錄。

  • 控制輸出流量

    必須限制從虛擬網路到該網路外部實體的輸出流量。 缺少控制項可能會導致惡意協力廠商服務的資料外泄攻擊。

    使用 Azure 防火牆 限制對網際網路的輸出流量。 防火牆可以使用完整功能變數名稱 (FQDN) ,以細微方式篩選流量。

  • 平衡與安全性的取捨

    當安全性功能新增至工作負載架構時,會有顯著的取捨。 您可能會注意到對效能、作業靈活度,甚至是可靠性造成一些影響。 不過, 拒絕服務 (DDoS) 、資料入侵和其他攻擊,可以鎖定系統的整體可靠性,最終導致無法使用

策略是以妥善 架構的任務關鍵性工作負載中針對任務關鍵性工作負載所提供的整體指引為基礎。 建議您在定義自己的任務關鍵性架構時,探索 網路和連線的設計區域 ,以取得建議和最佳做法。

架構

顯示區域戳記虛擬網路中私人端點子網的圖表。

下載這個架構的 Visio 檔案

此架構的元件可以以此方式廣泛分類。 如需 Azure 服務的產品檔,請參閱 相關資源

全域資源

全域資源存留期很長,並共用系統的存留期。 他們具備在多區域部署模型內容中全域提供的功能。 如需詳細資訊,請參閱 全域資源

Azure Front Door Premium SKU 會作為全域負載平衡器,以可靠地將流量路由傳送至透過私人端點公開的區域部署。

請參閱 架構完善的任務關鍵性工作負載:全域流量路由

適用于 NoSQL 的 Azure Cosmos DB 仍用來儲存計算叢集外部的狀態,並具有可靠性的基準組態設定。 存取權僅限於授權的私人端點連線。

請參閱 架構完善的任務關鍵性工作負載:全域散發的多寫入資料存放區

Azure Container Registry可用來儲存具有異地複寫功能的所有容器映射。 存取權僅限於授權的私人端點連線。

請參閱 架構完善的任務關鍵性工作負載:容器登錄

區域資源

區域資源會布建為單一 Azure 區域的 部署戳記 的一部分。 其存留時間很短,可提供更多復原能力、規模和鄰近性給使用者。 這些資源不會與另一個區域中的資源分享任何專案。 它們可以獨立移除或複寫至其他區域。 不過,它們彼此共用 全域資源 。 如需詳細資訊,請參閱 區域戳記資源

Azure 儲存體帳戶中的靜態網站會 裝載將要求傳送至後端服務的單一頁面應用程式 (SPA) 。 此元件具有與 基準前端相同的組態。 存取權僅限於授權的私人端點連線。

Azure 虛擬網路 提供執行工作負載和管理作業的安全環境。

內部負載平衡器 是應用程式來源。 Front Door 會使用此來源,以使用 Private Link 建立私人和直接連線至後端。

Azure Kubernetes Service (AKS) 是執行應用程式且無狀態之後端計算的協調器。 AKS 叢集會部署為私人叢集。 因此,Kubernetes API 伺服器不會公開至公用網際網路。 API 伺服器的存取權僅限於私人網路。 如需詳細資訊,請參閱此架構的 計算叢集 文章。

請參閱 架構完善的任務關鍵性工作負載:容器協調流程和 Kubernetes

Azure 防火牆會檢查並保護來自 Azure 虛擬網路資源的所有輸出流量。

Azure 事件中樞會當做訊息代理程式使用。 存取權僅限於授權的私人端點連線。

請參閱 架構完善的任務關鍵性工作負載:鬆散結合的事件驅動架構

Azure 金鑰保存庫會作為區域秘密存放區使用。 存取權僅限於授權的私人端點連線。

請參閱 架構完善的任務關鍵性工作負載:資料完整性保護

部署管線資源

任務關鍵性應用程式的建置和發行管線必須完全自動化,以確保部署已驗證戳記的一致方式。

GitHub 仍會用於原始檔控制,作為高可用性的 Git 型平臺。

Azure Pipelines 選擇將建置、測試及部署工作負載所需的管線自動化,以在生產階段 生產環境中執行。

請參閱 架構完善的任務關鍵性工作負載:DevOps 程式

自我裝載的 Azure DevOps 組建代理程式組件 區可用來更充分掌控組建和部署。 需要這種自主性層級,因為計算叢集和所有 PaaS 資源都是私人的,這需要 Microsoft 裝載組建代理程式上無法進行的網路層級整合。

可檢視性資源

全域資源和區域資源的監視資料會獨立儲存。 不建議使用單一集中式可檢視性存放區,以避免單一失敗點。 如需詳細資訊,請參閱 可檢視性資源

  • Azure Log Analytics 可用來作為統一接收,以儲存所有應用程式和基礎結構元件的記錄和計量。

  • Azure 應用程式 Insights會作為應用程式效能管理 (APM) 工具來收集所有應用程式監視資料,並將其直接儲存在 Log Analytics 中。

請參閱 架構完善的任務關鍵性工作負載:預測性動作和 AI 作業

管理資源

基準架構的重大設計變更是計算叢集。 在此設計中,AKS 叢集是私人的。 這項變更需要布建額外的資源才能取得存取權。

私人組建代理程式和跳板實例的Azure 虛擬機器擴展集,以針對叢集執行工具,例如 kubectl。

Azure Bastion 可讓您安全地存取跳躍方塊 VM,並移除 VM 具有公用 IP 的需求。

PaaS 服務的私人端點

若要處理商務或部署作業,應用程式和組建代理程式必須連線到數個全域布建的 Azure PaaS 服務、區域內,甚至是戳記內。 在基準架構中,該通訊是透過服務的公用端點。

在此設計中,這些服務已受到私人端點的保護,以從公用網際網路存取中移除這些服務。 這種方法可減少整體受攻擊面區域,以減輕來自非預期來源的直接服務竄改。 不過,它引進了另一個潛在的失敗點,並增加複雜度。 在採用這種方法之前,請仔細考慮安全性的取捨。

私人端點應該放在戳記虛擬網路的專用子網中。 私人 IP 位址會從該子網指派給私人端點。 基本上,虛擬網路中的任何資源都可以透過連線到私人 IP 位址來與服務通訊。 請確定位址空間夠大,足以容納該戳記所需的所有私人端點。

若要透過私人端點連線,您需要 DNS 記錄。 建議將與服務相關聯的 DNS 記錄保留在 Azure 私用 DNS Azure DNS 所服務的區域。 請確定 FQDN (完整功能變數名稱) 解析為私人 IP 位址。

此圖顯示區域戳記虛擬網路中的私人端點子網。

在此架構中,私人端點已針對Azure Container Registry、Azure Cosmos DB、金鑰保存庫、儲存體資源和事件中樞進行設定。 此外,AKS 叢集會部署為私人叢集,這會為叢集網路中的 Kubernetes API 服務建立私人端點。

此設計中布建了兩個虛擬網路,而且都有專用的子網,可保存所有這些服務的私人端點。 網路設定會在 虛擬網路配置中說明。

當您將更多元件新增至架構時,請考慮新增更多私人端點。 例如,您可以將限制新增至 可觀察性資源。 Azure Log Analytics 和 Azure 應用程式 Insights 都支援使用私人端點。 如需詳細資訊,請參閱使用Azure Private Link將網路連線到 Azure 監視器

它們可以建立在相同虛擬網路內的相同或不同子網上。 您可以在訂用帳戶中建立的私人端點數目有所限制。 如需詳細資訊,請參閱 Azure 限制

使用 子網上的網路安全性群組,進一步控制服務的存取。

私人輸入

Azure Front Door Premium SKU 會作為所有傳入用戶端流量的全域進入點。 它會使用Web 應用程式防火牆 (WAF) 功能來允許或拒絕網路邊緣的流量。 設定的 WAF 規則即使在進入戳記虛擬網路之前,仍會防止攻擊。

此架構也會利用 Front Door 的功能,使用Azure Private Link存取應用程式來源,而不需要在後端上使用公用 IP/端點。 這需要戳記虛擬網路中的內部負載平衡器。 此資源位於叢集中執行的 Kubernetes 輸入控制器前面。 在此私人Load Balancer之上,AKS 會建立Private Link服務,此服務會用於 Front Door 的私人連線。

建立連線之後,Front Door 網路上的私人端點會透過 Private Link,與戳記網路中負載平衡器和靜態網站直接連線。

如需詳細資訊,請參閱Private Link的運作方式

顯示從 Front Door 存取應用程式後端Private Link的圖表。

請參閱 架構完善的任務關鍵性工作負載:應用程式傳遞服務

限制的輸出

應用程式可能需要一些輸出網際網路連線。 控制該流量可提供限制、監視和限制輸出流量的方式。 否則,非預期的內部存取可能會導致入侵,而且可能是不可靠的系統狀態。 限制的輸出也可以解決其他安全性考慮,例如資料外泄。

使用防火牆和網路安全性群組 (NSG) 可確保已檢查並記錄來自應用程式的輸出流量。

在此架構中,Azure 防火牆是單一輸出點,用來檢查來自虛擬網路的所有傳出流量。 使用者定義路由 (UDR) 用於能夠產生輸出流量的子網,例如應用程式子網。

此圖顯示用來限制輸出流量Azure 防火牆。

如需限制輸出流量的資訊,請參閱控制 Azure Kubernetes Service (AKS) 中叢集節點的輸出流量

虛擬網路配置

隔離個別虛擬網路中的區域資源和管理資源。 它們具有不同的特性、用途和安全性考慮。

  • 流量類型:參與商務工作處理的區域資源需要更高的安全性控制。 例如,計算叢集必須受到保護,免于直接網際網路流量。 管理資源只會布建,以存取作業的區域資源。

  • 存留期:這些資源的預期存留期也不同。 區域資源必須是短期 (暫時) 。 它們會建立為部署戳記的一部分,並在戳記損毀時終結。 管理資源會共用區域的存留期,並即時顯示戳記資源。

在此架構中,有兩個虛擬網路:戳記網路和作業網路。 使用子網和網路安全性群組 (NSG) ,在每個虛擬網路內建立進一步隔離,以保護子網之間的通訊。

請參閱 架構完善的任務關鍵性工作負載:隔離的虛擬網路

區域戳記虛擬網路

部署戳記會在每個區域中布建虛擬網路。

此圖顯示任務關鍵性工作負載的安全全域路由。

虛擬網路分成這些主要子網。 所有子網都有網路安全性群組 (NSG) 指派,以封鎖來自虛擬網路的任何未經授權的存取。 NSG 會限制應用程式子網與網路中其他元件之間的流量。

  • 應用程式子網

    AKS 叢集節點集區會隔離在子網中。 如果您需要進一步隔離系統節點集區與背景工作節點集區,您可以將它們放在不同的子網中。

  • 戳記輸入子網

    每個戳記的進入點是位於專用子網的內部 Azure Standard Load Balancer。 也會在這裡放置用於 Front Door 私人連線的Private Link服務。

    這兩個資源都會布建為戳記部署的一部分。

  • 戳記輸出子網

    Azure 防火牆會放在個別的子網中,並使用使用者定義的路由 (UDR) 來檢查來自應用程式子網的輸出流量。

  • 私人端點子網

    應用程式子網必須存取區域戳記中的 PaaS 服務、金鑰保存庫和其他服務。 此外,需要存取全域資源,例如容器登錄。 在此架構中, 所有 PaaS 服務都會遭到鎖定 ,而且只能透過私人端點來連線。 因此,系統會為這些端點建立另一個子網。 此子網的輸入存取受到僅允許來自應用程式的流量的 NSG 保護。

    您可以使用 私人端點的 UDR 支援來新增進一步的限制,讓此流量也可以透過戳記輸出子網輸出。

作業虛擬網路

作業流量會隔離在個別的虛擬網路中。 因為 AKS 叢集的 API 服務在此架構中是私人的,所以所有部署和操作流量也必須來自私人資源,例如自我裝載的組建代理程式和跳躍方塊。 這些資源會部署在不同的虛擬網路中,並透過自己的私人端點,直接連線到應用程式資源。 組建代理程式和跳躍方塊位於不同的子網中。

替代方法是使用虛擬網路對等互連,而不是使用私人端點。 不過,對等互連會增加難以管理的複雜度,特別是當虛擬網路設計為暫時時。

建置代理程式 (和選擇性地跳躍方塊) 必須存取位於全球和區域戳記內的 PaaS 服務。 類似于區域戳記虛擬網路,系統會為私人端點建立專用子網,以取得必要的 PaaS 服務。 此子網上的 NSG 可確保只允許來自管理和部署子網的輸入流量。

顯示管理網路流程的圖表。

管理作業

典型的使用案例是操作員需要存取計算叢集來執行管理工具和命令。 私人叢集中的 API 服務無法直接存取。 這就是為什麼在操作員可以執行工具的地方布建跳躍方塊的原因。 跳躍方塊有個別的子網。

但是,這些跳躍方塊也必須受到保護,以防止未經授權的存取。 應該避免透過開啟 RDP/SSH 埠直接存取跳板。 建議使用 Azure Bastion 作為此用途,而且需要此虛擬網路中的專用子網。

警告

透過 Azure Bastion 和跳板的連線可能會影響開發人員生產力,例如執行偵錯工具需要額外的程式。 在決定強化任務關鍵性工作負載的安全性之前,請先留意這些影響。

您可以使用只允許透過 SSH 從 Bastion 子網輸入流量的 NSG,進一步限制對跳躍箱子網的存取。

部署作業

若要建置部署管線,您必須布建額外的計算來執行組建代理程式。 這些資源不會直接影響工作負載的執行時間可用性,但可靠性失敗可能會危害部署或服務任務關鍵性環境的能力。 因此,可靠性功能應該延伸至這些資源。

此架構會針對組建代理程式和跳躍方塊使用虛擬機器擴展集, (而不是單一 VM) 。 此外,網路分割也透過使用子網來提供。 輸入僅限於 Azure DevOps。

成本考量

對任務關鍵性工作負載的成本有重大影響。 在此架構中,使用 Azure Front Door Premium SKU 和在每個戳記中布建Azure 防火牆等技術選擇將會導致成本增加。 此外,也新增了與維護和作業資源相關的成本。 在採用受網路控制的基準架構版本之前,必須先仔細考慮這類取捨。

部署此架構

此架構的網路層面是在任務關鍵連線實作中實作。

注意

連線實作旨在說明依賴組織資源、與其他工作負載整合,以及使用共用服務的任務關鍵性工作負載。 此架構是以此架構為基礎,並使用本文所述的網路控制項。 不過,連線案例假設虛擬私人網路或 Azure 私用 DNS區域已存在於 Azure 登陸區域連線訂用帳戶內。

下一步

如需此架構中設計決策的詳細資訊,請檢閱 Azure 架構中任務關鍵性工作負載的網路和連線設計區域。

如需此架構中所用 Azure 服務的產品檔,請參閱這些文章。