【Explanation】Azure Security — Network Security Group & Application Security Group
Network-level segmentation
以常見的網路層保護當作例子,Azure 有 Segmentation patterns 在設計網路架構的時候,有一個很重要的原則是 Zero Trust,必須要確保資源與資源的溝通,是在明確的允許規則放行,否則一律都要 Deny All 來防止資源不會被未經授權的人存取或攻擊,儘可能 leverage 這些 Cloud Native 的方案作一個縱深防禦的機制,而 Network Security Group 與 Application Security Group 就是今天要說明的主題。
Network Security Group
網絡安全組(Network Security Group,NSG)是 Azure 虛擬網路上的類似防火牆的服務,可套用於虛擬機器的 NIC(網路介面)或 VNet 子網路。可用於設定流量進出虛擬網絡的安全性。NSG 透過規則來允許或拒絕特定的網絡流量通過,以保護資源不被未經授權存取或攻擊。像是在 Azure 建立 VM 完成後,接續就是設定網路安全性群組 NSG 限制來源 IP 位址與決定開啟哪些服務埠號,避免網路上的惡意攻擊。
NSG 產品定位說明
NSG 是在 SDN(軟體定義網路)上運作的第四層 狀態防火牆,Azure 的 NSG 定位上與 GCP VPC 中的 Firewall rule 比較接近;而 Azure Firewall 定位上為中央管理型式的網路工具,從 OSI7 層中的 L3 至 L7 都可以有管理的能力,類似於 GCP 的 Cloud Armor,以下比較 NSG vs Firwall
預設安全性規則
Azure 會在您建立的每個網路安全性群組中,建立下列預設規則(紅框)
Inbound 三條預設規則
AllowVNetInBound
AllowAzureLoadBalancerInBound
DenyAllInbound
Outbound 三條預設規則
AllowVnetOutBound
、
AllowInternetOutBound
DenyAllOutBound
Archietcture
NSG 可應用兩種資源:子網、網路介面(NIC),下圖顯示了一個虛擬網路,其中 VM1 和 VM2 位於 Subnet1 中,VM3 位於 Subnet2 中。此虛擬網路將 NSG1 應用於子網路 1,並將 NSG2 應用於 Subnet2。此外,還可以將 NSG2 應用到應用了 NSG1 的子 Subnet1 中的 VM1 的 NIC。
Azure 建議將 NSG 與子網路或網路介面關聯,除非有特定原因。不建議兩者同時關聯。與子網路關聯的 NSG 中的規則可能與與網路介面關聯的 NSG 中的規則發生衝突,導致可能需要進行故障排除的意外通訊問題。
Rules
包含優先順序、來源或目的地、通訊協定、方向、連接埠範圍、動作。
此外來源或目的地也可以使用 servcie tag,根據預設,servcie tag 會反映整個雲端的範圍。 某些服務標籤也會將對應的 IP 範圍限定為指定的區域,以提供更精細的控制。 例如,服務標籤 Storage 代表整個雲端的 Azure 儲存體,而 Storage.WestUS 則會將範圍縮小為僅限來自美國西部區域的儲存體 IP 位址範圍。
其他限制
與其他 CSP 作法一致,預設直接把 25 port 拔掉,像一般小民普遍使用 Pay-as-you-Go 方案,所有資源的輸出連接埠 25 ,無法進行任何移除限制的要求,僅「Enterprise 合約」申請機制才有機會使用。
NSG 設定
在設定了 VM 並設定網路安全性群組選取 [新建] 輸入 nsg-1 後,若是要新增或刪除的話可至 Inbound/Outbound security rules 設定
類型共有四種可以選擇
查驗一下 NSG 狀態如下
雖然 VM 是沒有外部 IP,但由於我們有啟用了 Bastion Server,因此藍框這一段是不需要的,VM 的連線可由第二條來獲得滿足(User -> Bastion -> VM)並只限定由內部網路進行連線。
移除後重新登入
AzureBastionSubnet 的 IPv4 為 10.0.1.0/26,剛好 10.0.1.5 確實是在 AzureBastionSubnet 之中!
事實上 Azure Bastion 是 Azure 的完全託管平台 PaaS 服務,經過內部強化後提供安全的 RDP/SSH 連線,是不需再去處理 AzureBastionSubnet
及其 NSG的。
Application Security Group
當前面部署好網路安全群組(NSG)時,它會指派給 NIC 或子網路(首選),而 Application Security Group, ASG(應用程式安全性群組)可讓您將 ASG 設定為應用程式結構的抽象物件或網路物件,以便將虛擬機器分組。
這樣的好處是簡化作業繁鎖度,想像一下如果隨著虛擬機器的新增、刪除或更新,維護 NSG 所需的管理開銷可能會變得相當大,這就是 ASG 可以發揮作用的地方,來簡化 NSG 規則的創建和規則的持續維護。
從以下圖中可以得知原本套用至目的端主機,會需要一台一台設定,但透過 ASG 群組標籤可直接將相同性質的後端主機服務直接套用即可,除了管理面上設置方便很多外,不需要去管理 IP,還可以在同一組 NSG分別擁有不同的存取限制需求都能分別套用至不同目標主機中,並讓擴展性更好。
VM 綁定 Application Security Group
即可於 NSG 這邊的類型選定 ASG 的方式進行
其次是 Private Endpoint 也可以套用只有特定 Application Security Group 可以訪問
最終以此圖說明,期待 NSG 作為網路過濾處理及 ASG 作為 Application 邏輯上的分組處理。
Reference
- 【K21academy】Azure Firewall vs NSG: Difference Between NSG and Firewall
- 【MS Learn】使用 NSG 存取和 Azure Bastion
- 【MS Learn】網路安全性群組如何篩選網路流量
- Azureネットワークセキュリティグループ(NSG)とは?特徴や設定時の注意点を解説
- https://minmin0625.medium.com/azure-bastion-7dea4919488c
- Azure Bastion: Set Azure Bastion NSG Inbound security rules on the Target VM Subnet with Azure PowerShell
- 讓 Azure VM 對外連線的多種花樣
- Azure — Application Security Group (ASG) Overview