作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與SD-WAN方案的介紹與推廣。

NSX-T與NSX for vSphere兩個版本間最大的差異,就是NSX for vSphere僅支援vSphere環境與虛機,但NSX-T可以支援不同Hypervisor、虛機及容器、私有雲與公有雲。架構上當然是NSX-T更為開放與兼容,可是僅在vSphere上運作也有好處:可以和vCenter / vSphere整合的更為緊密。

請大家回憶一下NSX for vSphere的操作:當我們要配置分散式防火牆規則的來源或目的端時,除了採用IP地址或是IPSet(IP集合)外,還有哪些其他的方式?

  • 直接選虛機或是某個vNic網卡
  • 選擇一整個vCenter DataCenter / Cluster / Resource Pool / vApp
  • 選擇指定的Distributed Switch Port Group或是Logical Switch
  • 選擇一個安全群組 (Security Group)

而當我們要配置一個Security Group時,也有很多方法把指定的應用或部門機器自動納進來,包含了

  • 虛擬機器的VM Name或是Hostname
  • 虛擬機器的作業系統
  • 虛擬機器上被標注的Security Tag
  • 用大的安全群組去包含多個小的安全群組

上面的配置方式非常動態且彈性,可以說是廣為我們NSX用戶喜愛的配置機制。但是在NSX-T內,因為要支援其他虛擬化平台如KVM,因為要支援容器,因為要支援公有雲,此時NSX-T在架構上兼容的好處反而會變成管理上可能會有些限制。比如說,在其他的非vSphere平台上,虛機抓得到作業系統嗎?其他的非vSphere平台上,有Cluster / Resource Pool / vApp這類的配置嗎?

因此,在NSX-T Data Center內,我們僅會支援下面這幾種機制作為防火牆的來源與目的地配置:

  • IP地址或是IPSet集合
  • 指定的NSX-T邏輯交換器
  • 指定的Logical Port (對應到虛機的vNic,或是一個K8S Pod)
  • 指定的群組 (NSGroup)

而在NSX-T內,我們不再是叫做安全群組,而是改名為NSGroup。這個NSGroup的全名是什麼…PM也沒有和我們講,應該是NSX-T Security Group的意思吧(自己解釋)。重點是現在如果建立一個NSGroup,裡面的群組成員有包括了

  • 靜態的指定:包含IPSet / Logical Port / Logical Switch / MACSet,或是去包含其他的小NSGroup
  • 動態的指定:可以指定虛機或是Logical Port。如果是虛機,可以用虛機的名稱或是虛機的標籤 (Tag),而如果是Logical Port,僅能使用標籤。

這邊NSX-T的Tag對應到的就是之前NSX for vSphere的安全標籤 (Security Tag),不是vCenter內對到一個VM的Tag喔。

下圖內,我們可以看到在NSX-T內,對應到一個虛機,管理者所打的標籤:

 

 

這裡的標籤可以是管理者在UI介面上面配置,或自動化系統利用NSX-T API來配置。有一個重點:大家有沒有注意到,現在的Tags變成是二次項,我們可以先定義一個特定意義的Scope,代表一個屬性像是擁有者、租戶、應用系統、機敏等級等等,然後在對應這個Scope後面的Tag再打上對應的值。上圖內,

  • 定義了一個租戶的Scope (Tenant),然後租戶名稱是Customer-01
  • 定義了一個業務系統的Scope (Application),然後這個虛機的業務系統是CRM
  • 定義了一個特定的應用構件層Scope (Tier),這個虛機是隸屬於Web層

這樣兩層式的架構,標籤定義上是不是比NSX for vSphere的單層標籤清楚的多呢?以前如果我們打個tag叫colin,大家看到了可能搞不清楚這是owner / project name / tenant name還是到底什麼東西,但現在這種兩層架構就能夠把各個標籤定義的非常清楚。

下面舉三個NSGroup的動態配置的例子:

 

 

上圖內,任何一個虛機,如果同時符合有三個標籤,其Tenant是Customer-01、Application是CRM、Tier是Web的話,就要加入C01-CRM-Web群組

 

 

上圖內,如果有任何一個Logical Port (Kubernetes Pod) 或是虛機,有被打上Tenant是Customer-02,以及Application是planespotter的話,就要加入C02-Planespotter群組

 

 

上圖內,如果有任何一個虛機,名稱有包含mysql,Tenant是Customer-02,以及Application是planespotter的話,就要加入C02-Planespotter-MySQL群組

利用這樣的NSGroup群組定義,大家就可以看到,在NSX的防火牆內,我們可以直接利用動態群組來作為來源與目的端的定義,達到安全自動化
希望上面的討論能讓大家對於NSX-T內的群組及標籤配置有基本的認識。雖然在NSX-T內可以用來做動態配置的條件與NSX for vSphere相比減少了,但以我這幾年在台灣實際銷售 / 部署NSX的經驗,中大型生產環境的微分段配置內,大家主要都是用Security Tag來作為虛機 / 應用區分的方法,因此NSX-T的改動應該不會造成客戶在建立微分段政策上的困難,反而更明確、單純了。