此參考體系結(jié)構(gòu)顯示了一個可將本地網(wǎng)絡(luò)擴(kuò)展到Azure的安全混合網(wǎng)絡(luò)。該體系結(jié)構(gòu)實現(xiàn)了本地網(wǎng)絡(luò)和Azure虛擬網(wǎng)絡(luò)之間的外圍網(wǎng)絡(luò)(也稱為外圍網(wǎng)絡(luò))。所有入站和出站流量均通過Azure防火墻。部署此解決方案。
下載此體系結(jié)構(gòu)的Visio文件。
此體系結(jié)構(gòu)需要使用VPN網(wǎng)關(guān)或ExpressRoute連接來連接到本地數(shù)據(jù)中心。此體系結(jié)構(gòu)的典型用途包括:
在本地運行一部分工作負(fù)荷,在Azure中運行一部分工作負(fù)荷的混合應(yīng)用程序。
需要對從本地數(shù)據(jù)中心進(jìn)入Azure虛擬網(wǎng)絡(luò)的流量進(jìn)行精細(xì)控制的基礎(chǔ)結(jié)構(gòu)。
必須審核傳出流量的應(yīng)用程序。這通常是許多商業(yè)系統(tǒng)的監(jiān)管要求,可以幫助防止公開披露私有信息。
體系結(jié)構(gòu)
該體系結(jié)構(gòu)包括以下組件。
本地網(wǎng)絡(luò)。組織中實現(xiàn)的專用局域網(wǎng)。
Azure虛擬網(wǎng)絡(luò)。虛擬網(wǎng)絡(luò)承載在Azure中運行的應(yīng)用程序和其他資源。
網(wǎng)關(guān)。網(wǎng)關(guān)提供本地網(wǎng)絡(luò)中的路由器與虛擬網(wǎng)絡(luò)之間的連接。網(wǎng)關(guān)放在其自己的子網(wǎng)中。
Azure防火墻。Azure防火墻是作為服務(wù)托管的防火墻。防火墻實例放置在其自己的子網(wǎng)中。
虛擬網(wǎng)絡(luò)路由。虛擬網(wǎng)絡(luò)路由定義Azure虛擬網(wǎng)絡(luò)中的IP流量流。如上圖所示,有兩個用戶定義的路由表。
在網(wǎng)關(guān)子網(wǎng)中,發(fā)送到web層子網(wǎng)的流量(10.0.1.0/24)通過Azure防火墻實例進(jìn)行路由。
在web層子網(wǎng)中,由于VNet本身的地址空間沒有路由指向Azure防火墻,因此web層實例可以直接相互通信,而不能通過Azure防火墻進(jìn)行通信。
備注
根據(jù)VPN連接的要求,你可以配置邊界網(wǎng)關(guān)協(xié)議(BGP)路由,以實現(xiàn)將流量定向到本地網(wǎng)絡(luò)的轉(zhuǎn)發(fā)規(guī)則。
網(wǎng)絡(luò)安全組。使用安全組限制虛擬網(wǎng)絡(luò)中的網(wǎng)絡(luò)流量。例如,在隨此參考體系結(jié)構(gòu)一起提供的部署中,web層子網(wǎng)允許來自本地網(wǎng)絡(luò)和虛擬網(wǎng)絡(luò)中的TCP流量;業(yè)務(wù)層允許來自web層的流量;數(shù)據(jù)層允許來自業(yè)務(wù)層的流量。
堡壘。使用Azure堡壘,可以通過SSH或遠(yuǎn)程桌面協(xié)議(RDP)登錄到虛擬網(wǎng)絡(luò)中的vm,而無需直接向Internet公開vm。使用堡壘管理虛擬網(wǎng)絡(luò)中的Vm。
建議
以下建議適用于大多數(shù)方案。除非有優(yōu)先于這些建議的特定要求,否則請遵循這些建議。
訪問控制建議
使用azure RBAC)(azure基于角色的訪問控制來管理應(yīng)用程序中的資源??紤]創(chuàng)建以下自定義角色:
一個DevOps角色,具有管理應(yīng)用程序的基礎(chǔ)結(jié)構(gòu)、部署應(yīng)用程序組件以及監(jiān)視和重新啟動VM的權(quán)限。
一個集中式IT管理員角色,用于管理和監(jiān)視網(wǎng)絡(luò)資源。
安全I(xiàn)T管理員角色,用于管理安全網(wǎng)絡(luò)資源,例如防火墻。
DevOps和IT管理員角色不應(yīng)具有對防火墻資源的訪問權(quán)限。這應(yīng)限制為安全性IT管理員角色。
有關(guān)資源組的建議
可以通過將Vm、虛擬網(wǎng)絡(luò)和負(fù)載均衡器組合在一起來輕松管理Azure資源(例如Vm、虛擬網(wǎng)絡(luò)和負(fù)載均衡器)。將Azure角色分配給每個資源組以限制訪問。
建議創(chuàng)建以下資源組:
包含虛擬網(wǎng)絡(luò)的資源組(不包括Vm)、Nsg以及用于連接到本地網(wǎng)絡(luò)的網(wǎng)關(guān)資源。將集中式IT管理員角色分配給此資源組。
一個資源組,其中包含用于網(wǎng)關(guān)子網(wǎng)的Azure防火墻實例和用戶定義的路由。將安全性IT管理員角色分配給此資源組。
用于每個應(yīng)用層的單獨資源組,包含負(fù)載均衡器和VM。請注意,此資源組不應(yīng)包含每個層的子網(wǎng)。將DevOps角色分配給此資源組。
網(wǎng)絡(luò)建議
若要接受來自internet的入站流量,請將DNAT)規(guī)則(目標(biāo)網(wǎng)絡(luò)地址轉(zhuǎn)換添加到Azure防火墻。
目標(biāo)地址=防火墻實例的公共IP地址。
翻譯地址=虛擬網(wǎng)絡(luò)中的專用IP地址。
該示例部署將端口80的internet流量路由到web層負(fù)載均衡器。
使用站點到站點VPN隧道通過本地網(wǎng)絡(luò)強制隧道所有出站internet流量,并使用網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)路由到internet。這可以防止任何存儲在數(shù)據(jù)層中的機密信息的意外泄漏,并允許檢查和審核所有傳出流量。
請勿完全阻止來自應(yīng)用程序?qū)拥膇nternet流量,因為這會阻止這些層使用依賴公共IP地址的Azure PaaS服務(wù),例如VM診斷日志記錄、VM擴(kuò)展下載和其他功能。Azure診斷還要求組件可以讀取和寫入Azure存儲帳戶。
驗證出站Internet流量是否正確地強制隧道傳遞。如果使用的是本地服務(wù)器上的"路由和遠(yuǎn)程訪問"服務(wù)的VPN連接,請使用WireShark等工具。
請考慮使用應(yīng)用程序網(wǎng)關(guān)或Azure前門進(jìn)行SSL終止。
可伸縮性注意事項
有關(guān)VPN網(wǎng)關(guān)的帶寬限制的詳細(xì)信息,請參閱網(wǎng)關(guān)sku。對于更高帶寬,請考慮升級到ExpressRoute網(wǎng)關(guān)。ExpressRoute提供最多10 Gbps的帶寬,且延遲低于VPN連接。
有關(guān)Azure網(wǎng)關(guān)的可伸縮性的詳細(xì)信息,請參閱使用Azure和本地VPN實現(xiàn)混合網(wǎng)絡(luò)體系結(jié)構(gòu)和使用Azure ExpressRoute實現(xiàn)混合網(wǎng)絡(luò)體系結(jié)構(gòu)中的可伸縮性注意事項部分。
可用性注意事項
如果要使用Azure ExpressRoute在虛擬網(wǎng)絡(luò)和本地網(wǎng)絡(luò)之間提供連接,請將VPN網(wǎng)關(guān)配置為在ExpressRoute連接不可用時提供故障轉(zhuǎn)移。
有關(guān)為VPN和ExpressRoute連接保持可用性的特定信息,請參閱使用Azure和本地VPN實現(xiàn)混合網(wǎng)絡(luò)體系結(jié)構(gòu)和使用Azure ExpressRoute實現(xiàn)混合網(wǎng)絡(luò)體系結(jié)構(gòu)中的可用性注意事項。
可管理性注意事項
如果從本地網(wǎng)絡(luò)到Azure的網(wǎng)關(guān)連接已關(guān)閉,你仍可以通過Azure堡壘訪問Azure虛擬網(wǎng)絡(luò)中的Vm。
參考體系結(jié)構(gòu)中每個層的子網(wǎng)都受NSG規(guī)則保護(hù)??赡苄枰獎?chuàng)建一個規(guī)則以打開用于在Windows VM上進(jìn)行遠(yuǎn)程桌面協(xié)議(RDP)訪問的端口3389,或是用于在Linux VM上進(jìn)行安全外殼(SSH)訪問的端口22。其他管理和監(jiān)視工具可能需要規(guī)則打開其他端口。
如果要使用ExpressRoute在本地數(shù)據(jù)中心與Azure之間提供連接,請使用Azure連接工具包(AzureCT)監(jiān)視和解決連接問題.
可以在以下文章中找到有關(guān)監(jiān)視和管理VPN和ExpressRoute連接的其他信息:
使用Azure和本地VPN實現(xiàn)混合網(wǎng)絡(luò)體系結(jié)構(gòu)
使用Azure ExpressRoute實施混合網(wǎng)絡(luò)體系結(jié)構(gòu)
安全注意事項
此參考體系結(jié)構(gòu)實現(xiàn)多個安全級別。
通過Azure防火墻路由所有本地用戶請求
網(wǎng)關(guān)子網(wǎng)中的用戶定義路由阻止所有用戶請求,而不是從本地收到的請求。路由會將允許的請求傳遞給防火墻,如果防火墻規(guī)則允許這些請求,則會將這些請求傳遞給應(yīng)用程序??梢蕴砑悠渌酚?,但請確保它們不會意外繞過防火墻或阻止用于管理子網(wǎng)的管理流量。
使用NSG阻止/傳遞應(yīng)用層之間的流量
各層之間的流量使用NSG進(jìn)行限制。業(yè)務(wù)層阻止不是源自Web層的所有流量,而數(shù)據(jù)層阻止不是源自業(yè)務(wù)層的所有流量。如果要求擴(kuò)展NSG規(guī)則以允許對這些層進(jìn)行更廣泛的訪問,請針對安全風(fēng)險權(quán)衡這些要求。每個新入站通道都表示可能會發(fā)生意外或有意的數(shù)據(jù)泄露或應(yīng)用程序損壞。
DevOps訪問權(quán)限
使用AZURE RBAC來限制DevOps可以對每個層執(zhí)行的操作。授予權(quán)限時,請使用最低特權(quán)原則。記錄所有管理操作并執(zhí)行定期審核,確保所有配置更改按計劃進(jìn)行。
成本注意事項
使用Azure定價計算器估算成本。其他注意事項,請參閱Microsoft Azure Well-Architected框架的"成本"部分。
下面是在此體系結(jié)構(gòu)中使用的服務(wù)的成本注意事項。
Azure防火墻
在此體系結(jié)構(gòu)中,Azure防火墻部署在虛擬網(wǎng)絡(luò)中,以控制網(wǎng)關(guān)的子網(wǎng)與運行應(yīng)用層的子網(wǎng)之間的流量。通過這種方式,Azure防火墻具有成本效益,因為它用作多個工作負(fù)荷所使用的共享解決方案。下面是Azure防火墻定價模型:
每個部署小時的固定費率。
每GB處理的數(shù)據(jù)支持自動縮放。
與網(wǎng)絡(luò)虛擬設(shè)備進(jìn)行比較時(Nva),通過Azure防火墻,可節(jié)省多達(dá)30-50%的時間。有關(guān)詳細(xì)信息,請參閱Azure防火墻和NVA。
Azure Bastion
Azure堡壘通過RDP和SSH安全連接到虛擬機,而無需在虛擬機上配置公共IP。
堡壘計費相當(dāng)于配置為jumpbox的基本低級別虛擬機。將堡壘與跳轉(zhuǎn)盒進(jìn)行比較可以更經(jīng)濟(jì)高效地考慮堡壘的內(nèi)置安全功能,存儲和管理單獨的服務(wù)器不會產(chǎn)生額外的成本。
Azure虛擬網(wǎng)絡(luò)
Azure虛擬網(wǎng)絡(luò)是免費的。允許每個訂閱在所有區(qū)域中最多創(chuàng)建50個虛擬網(wǎng)絡(luò)。虛擬網(wǎng)絡(luò)邊界內(nèi)發(fā)生的所有流量都是免費的。因此,如果同一VNET中的兩個Vm彼此通信,則不會產(chǎn)生任何費用。
內(nèi)部負(fù)載均衡器
位于同一虛擬網(wǎng)絡(luò)中的虛擬機之間的基本負(fù)載均衡是免費的。
在此體系結(jié)構(gòu)中,內(nèi)部負(fù)載均衡器用于對虛擬網(wǎng)絡(luò)內(nèi)的流量進(jìn)行負(fù)載均衡。
部署解決方案
GitHub上提供了可實施這些建議的參考體系結(jié)構(gòu)部署。
先決條件
克隆、下載參考體系結(jié)構(gòu)GitHub存儲庫的zip文件或創(chuàng)建其分支。
安裝Azure CLI 2.0。
安裝Node和NPM
安裝Azure構(gòu)建基塊npm包。
Bash
npm install-g mspnp/azure-building-blocks
在命令提示符、bash提示符或PowerShell提示符下,按如下所示登錄到你的Azure帳戶:
Bash
az login
部署資源
導(dǎo)航到參考體系結(jié)構(gòu)GitHub存儲庫的/dmz/secure-vnet-hybrid文件夾。
運行以下命令:
Bash
azbb-s<subscription_id>-g<resource_group_name>-l<region>-p onprem.json--deploy
運行以下命令:
Bash
azbb-s<subscription_id>-g<resource_group_name>-l<region>-p secure-vnet-hybrid.json--deploy
連接本地網(wǎng)關(guān)和Azure網(wǎng)關(guān)
此步驟連接兩個本地網(wǎng)絡(luò)網(wǎng)關(guān)。
在Azure門戶中,導(dǎo)航到創(chuàng)建的資源組。
找到名為ra-vpn-vgw-pip的資源,并復(fù)制“概述”邊欄選項卡中顯示的IP地址。
找到名為onprem-vpn-lgw的資源。
單擊“配置”邊欄選項卡。在“IP地址”下,粘貼步驟2中獲取的IP地址。
單擊“保存”并等待操作完成??赡苄枰蠹s5分鐘。
找到名為onprem-vpn-gateway1-pip的資源。復(fù)制“概述”邊欄選項卡中顯示的IP地址。
找到名為ra-vpn-lgw的資源。
單擊“配置”邊欄選項卡。在“IP地址”下,粘貼步驟6中獲取的IP地址。
單擊“保存”并等待操作完成。
若要驗證連接,請轉(zhuǎn)到每個網(wǎng)關(guān)的“連接”邊欄選項卡。狀態(tài)應(yīng)為“已連接”。
驗證網(wǎng)絡(luò)流量是否抵達(dá)Web層
在Azure門戶中,導(dǎo)航到創(chuàng)建的資源組。
找到名為的資源fe-config1-web,它是web層前面的負(fù)載均衡器。復(fù)制“概述”邊欄選項卡中的專用IP地址。
找到名為jb-vm1的VM。此VM表示本地網(wǎng)絡(luò)。單擊“連接”,使用遠(yuǎn)程桌面連接到VM。用戶名和密碼已在onprem.json文件中指定。
在遠(yuǎn)程桌面會話中打開Web瀏覽器,并導(dǎo)航到步驟2中獲取的IP地址。應(yīng)會看到默認(rèn)的Apache2服務(wù)器主頁。