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