熟悉Azure平臺(tái)的讀者都知道,Microsoft Azure服務(wù)管理,分為三個(gè)層次:
1.企業(yè)服務(wù)合同(Enterprise Agreement)
2.訂閱(Subscription),在1個(gè)企業(yè)服務(wù)合同下,可以創(chuàng)建無數(shù)多個(gè)訂閱,訂閱之間的資源是互相隔離的。
3.資源組(Resource Group),在1個(gè)訂閱下,可以創(chuàng)建無數(shù)個(gè)資源組。
通過資源組,我們可以設(shè)置RBAC(Role Base Access Control)。設(shè)置對(duì)資源的訪問權(quán)限,比如只讀,可讀寫等。
有關(guān)RBAC的內(nèi)容,可以參考我的blog:
Azure ARM(16)基于角色的訪問控制(Role Based Access Control,RBAC)-使用默認(rèn)的Role
Azure ARM(17)基于角色的訪問控制(Role Based Access Control,RBAC)-自定義Role
這里多提一句,我們可以針對(duì)每個(gè)一個(gè)資源(Resource)設(shè)置標(biāo)簽(TAG),也就是增加備注。
比如創(chuàng)建的時(shí)間,項(xiàng)目所屬部門,負(fù)責(zé)人,成本中心,操作人,審核人,版本號(hào)等等,一個(gè)資源可以設(shè)置15個(gè)標(biāo)簽(TAG)
從我的客戶使用Azure來說,對(duì)于訂閱的管理分為兩種:
一.以項(xiàng)目來區(qū)分訂閱的,比如1個(gè)項(xiàng)目創(chuàng)建一個(gè)訂閱。如下圖所示:
簡(jiǎn)單說明一下上圖的設(shè)計(jì):
1.我們的設(shè)計(jì)思路是1個(gè)項(xiàng)目1個(gè)訂閱
2.在不同的訂閱里面,分別創(chuàng)建不同的Virtual Network,且保證IP Range不能重疊
3.設(shè)置公用的Express Route Gateway,這個(gè)Express Route Gateway通過專線鏈接到IDC
4.如果不同的訂閱項(xiàng)目,需要通過內(nèi)網(wǎng)互相訪問,則設(shè)置不同訂閱之間的VNet Peering
5.如果不同的訂閱項(xiàng)目,需要鏈接到內(nèi)網(wǎng)IDC的資源,則設(shè)置不同訂閱,到Shared ER Gateway之間的VNet Peering
這樣管理的優(yōu)點(diǎn)是:
1.管理簡(jiǎn)單。
當(dāng)我們新上一個(gè)項(xiàng)目的時(shí)候,只要EA賬戶的管理員創(chuàng)建1個(gè)新的訂閱和對(duì)應(yīng)的賬戶即可。
而且Azure EA Portal(http://ea.windowsazure.cn),是可以按照訂閱進(jìn)行成本拆分的。
但是這樣的管理方式,還是有缺點(diǎn)的:
1.需要在每個(gè)不同的訂閱,設(shè)置Virtual Network的Private IP Range
如上圖所示,我們需要IT Admin預(yù)先設(shè)置Virtual Network的Private IP Range。比如A項(xiàng)目的Virtual Network IP Range為172.0.0.0/24,B項(xiàng)目的VNet IP Range為172.0.1.0/24
因?yàn)椴渴鹪谠贫说捻?xiàng)目在一開始可能不需要通過內(nèi)網(wǎng)進(jìn)行互通互聯(lián),但是后期需要進(jìn)行內(nèi)網(wǎng)互通。
比如在A訂閱里面是CRM系統(tǒng),在B訂閱里面是訂單系統(tǒng)。就要通過A訂閱的內(nèi)網(wǎng)鏈接(VNet Peering)到B訂閱的內(nèi)網(wǎng)。
如果我們使用Azure Virtual Network默認(rèn)的IP Range 10.0.0.0/24就完蛋了,因?yàn)閮蓚€(gè)相同IP Range的Virtual Network無法設(shè)置VNet Peering
2.VNet Peering會(huì)增加額外的成本
根據(jù)Azure China官網(wǎng)價(jià)格,VNet Peering的成本為:入站數(shù)據(jù)傳輸為每GB 0.065元,出站數(shù)據(jù)傳輸為每GB 0.065元
3.項(xiàng)目越多,VNet Peering的連接線會(huì)越多
大家想象一下,如果我有50個(gè)訂閱,每個(gè)訂閱有1個(gè)VNet。如果這50個(gè)訂閱的VNet都要設(shè)置VNet Peering,代價(jià)是非常大的。
4.有潛在的安全風(fēng)險(xiǎn)
因?yàn)橛嗛喪侵苯佑身?xiàng)目負(fù)責(zé)人來進(jìn)行維護(hù)的,如果這些項(xiàng)目負(fù)責(zé)人不具備相應(yīng)的IT技能(比如把端口22,3389,1433等直接暴露在Internet上),則會(huì)產(chǎn)生潛在的安全風(fēng)險(xiǎn)。
每個(gè)項(xiàng)目都需要進(jìn)行架構(gòu)設(shè)計(jì)(Architect Review)和安全審查(Security Review)。
總結(jié)如下:
另外一種訂閱的設(shè)計(jì)方式是:我只創(chuàng)建2個(gè)訂閱,1個(gè)生產(chǎn)訂閱,1個(gè)測(cè)試訂閱。如下圖:
簡(jiǎn)單說明一下上圖的設(shè)計(jì):
1.我們只創(chuàng)建2個(gè)訂閱:Production生產(chǎn)訂閱,和Non-Production測(cè)試訂閱
2.在Production訂閱和Non-Production訂閱下,分別預(yù)先創(chuàng)建2個(gè)資源組:Public Network Resource Group和Private Network Resource Group
3.在Public Network Resource Group里面,設(shè)置面向公網(wǎng)的,虛擬網(wǎng)絡(luò)Virtual Network和對(duì)應(yīng)的Subnet。
請(qǐng)注意:Public Network Resource Group只對(duì)IT Admin可見
將來上新的,面向公網(wǎng)的業(yè)務(wù)??梢詥为?dú)創(chuàng)建1個(gè)以業(yè)務(wù)名稱命名的資源組(比如ProjectA-RG),把所有Azure資源都放在這個(gè)資源組里(比如ProjectA-RG)。但是(ProjectA-RG)里的虛擬機(jī),加入到Public Network Resource Group的虛擬網(wǎng)絡(luò)里
4.在Private Network Resource Group里面,設(shè)置面向內(nèi)網(wǎng)的,虛擬網(wǎng)絡(luò)的Virtual Network和對(duì)應(yīng)的Subnet
請(qǐng)注意:Private Network Resource Group只對(duì)IT Admin可見
將來上新的,面向內(nèi)網(wǎng)的業(yè)務(wù)??梢詥为?dú)創(chuàng)建1個(gè)以業(yè)務(wù)名稱命名的資源組(比如ProjectB-RG),把所有Azure資源都放在這個(gè)資源組里(比如ProjectB-RG)。但是(ProjectB-RG)里的虛擬機(jī),加入到Private Network Resource Group的虛擬網(wǎng)絡(luò)里
這樣管理的優(yōu)點(diǎn)是:
1.相比第一種設(shè)計(jì)思路,安全更高
IT Admin對(duì)整體項(xiàng)目負(fù)責(zé),所以不存在某個(gè)資源開啟了不安全的端口。
這里有個(gè)非常重要的概念是:我們把NSG設(shè)置到VNet的Subnet上,IT Admin對(duì)所有的Subnet負(fù)責(zé)
2.IT Admin還可以設(shè)置WAF設(shè)備和IPS設(shè)備
3.IT Admin負(fù)責(zé)整體的安全性
因?yàn)镮T Admin只管理2個(gè)訂閱,每個(gè)訂閱的Virtual Network的安全組(Network Security Group,NSG)都是由IT Admin進(jìn)行管理的
但是這樣的管理方式,還是有缺點(diǎn)的:
1.區(qū)分成本不如第一種方式簡(jiǎn)單
因?yàn)椴煌?xiàng)目的Azure資源,都部署在同一個(gè)訂閱里。所以我們?cè)谶M(jìn)行成本拆分的時(shí)候,需要對(duì)每個(gè)資源都增加標(biāo)簽TAG,通過不同的TAG進(jìn)行篩選和成本拆分。
2.IT Admin必須提用戶創(chuàng)建資源
這里有1個(gè)知識(shí)點(diǎn):
IT Admin可以管理的資源是:
(1)Public Resource Group里面的Virtual Network
(2)Private Resource Group里面的Virutal Network
(3)不同項(xiàng)目需要的資源組,比如A項(xiàng)目的資源組(里面有虛擬機(jī),SQL數(shù)據(jù),Azure Storage等等),B項(xiàng)目的資源組,C項(xiàng)目的資源組等等。
普通用戶可以管理的資源是:
(1)不同項(xiàng)目需要的資源組,比如A用戶管理A資源組,B用戶管理B資源組,C用戶管理C資源組
這樣管理的好處是:
(1)IT Admin可以看到所有的資源。
(2)普通用戶只能看到自己管理的資源,但是無法看到Public Resource Group里面的Virtual Network,還有Private Resource Group里面的Virutal Network
(3)普通用戶無法將某個(gè)虛擬機(jī)資源,從1個(gè)Subnet,遷移到另外1個(gè)Subnet。因?yàn)閂irutal Network對(duì)用戶不可見。
3.訂閱有限制
根據(jù)Azure文檔:https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits
我們把所有資源都創(chuàng)建在1個(gè)訂閱下,會(huì)遇到訂閱的限制
4.如果我們已經(jīng)采用第一種方案(1個(gè)項(xiàng)目1個(gè)訂閱),在遷移到第二種方案的時(shí)候。需要對(duì)現(xiàn)有資源進(jìn)行整合
這樣會(huì)增加額外的遷移成本
總結(jié)如下:
特別說明,針對(duì)上面的Azure訂閱設(shè)計(jì),從網(wǎng)絡(luò)安全性角度來說,我們可以通過用戶自定義路由(User Define Route,UDR)
來設(shè)置在Virtual Network內(nèi)的VM之間的數(shù)據(jù)流走向。如下圖:
上圖中,我們可以在Public Virtual Network里面設(shè)置4個(gè)3個(gè)Subnet
1.Web Subnet,用來保存面向公網(wǎng)應(yīng)用的Web Server
2.DB Subnet,用來保存面向公網(wǎng)應(yīng)用的DB Servers
3.DMZ Subnet,用來保存IPS入侵監(jiān)測(cè)VM
4.當(dāng)Web Server需要訪問DB Server的時(shí)候,所有流量都需要經(jīng)過DMZ Subnet的IPS設(shè)備,進(jìn)行流量清洗和入侵檢測(cè)
面向內(nèi)網(wǎng)的Private Virtual Network的設(shè)計(jì)也是相類似的。