
在 Azure 的網路安全性群組(NSG)世界裡,有時候我們會遇到一個很像「既要又要」的邊緣狀況:你想要同時把好幾個 Port 關起來,不讓壞人進來,但同時又希望特定幾位好朋友(白名單 IP)可以大搖大擺地走進去。
要同時做到阻擋大家又放行自己人,最乾淨也最聰明的作法,就是利用兩條規則的「優先順序(Priority)」差來玩一場網路版的邏輯遊戲。
因為 Azure NSG 這個門神在檢查規則時,是採取「由上到下」比對的。數字越小的規則越優先執行,而且只要一比對成功,它就會直接定案,懶得再看下面的規則了。
核心邏輯大公開
簡單來說,你只需要左右開弓,建立以下兩條規則:
| 規則名稱 | 優先順序 | 來源 | 目的連接埠 | 動作 | 門神心裡話 |
| Allow-Whitelist-to-Ports | 300 | 你的白名單 IP | 80, 443, 8080 | Allow(允許) | 是好朋友拿著通行證來了!這幾個 Port 給你過! |
| Deny-All-to-Ports | 301 | Any(任何人) | 80, 443, 8080 | Deny(拒絕) | 剩下的閒雜人等注意,只要想碰這幾個 Port,通通給我滾! |
⚠️ 重要提醒:允許(Allow)規則的 Priority 數字(例如 300)必須小於阻擋(Deny)規則的 Priority 數字(例如 301)。如果把阻擋數字寫得太小,門神就會先把大家都趕走,你的好朋友就再也進不來了。
詳細設定步驟(Azure Portal 傳送門操作)
請直接移駕到你的 NSG (azure vmptstgjpe001-nsg)的「輸入安全性規則(Inbound security rules)」頁面,深呼吸之後點選「新增(Add)」:
步驟 1:建立白名單允許規則
- Source(來源):下拉選單請選 IP Addresses。
- Source IP addresses(來源 IP 位址):輸入你想放行的白名單 IP。如果好朋友有點多,可以用半形逗號隔開,例如: 1.1.1.1, 2.2.2.0/24。
- Source port ranges(來源連接埠範圍):維持預設的 * 號就好。
- Destination(目的地):選 Any 或是直接指定那一台 VM 的內網 IP。
- Destination port ranges(目的連接埠範圍):輸入你想控制的多個 Port,中間記得用半形逗號隔開,例如: 80, 443, 8080。
- Protocol(通訊協定):看你心情與需求,選 TCP、UDP 或是 Any。
- Action(動作):大方地選擇 Allow。
- Priority(優先順序):給它一個比較小的數字,例如 300。
- Name(名稱):取一個好辨識的名字,像是 Allow_Whitelist_MultiPorts。
步驟 2:建立其餘全部阻擋規則
再次點選「新增(Add)」來建立第二道關卡:
- Source(來源):這次要選 Any,代表任何路人甲乙丙。
- Source port ranges:一樣維持 * 號。
- Destination:選 Any。
- Destination port ranges:請輸入與步驟 1 完全一模一樣的多個 Port,例如: 80, 443, 8080。
- Protocol:請與步驟 1 保持同步。
- Action(動作):這次要狠下心選擇 Deny。
- Priority(優先順序):數字必須比步驟 1 還要大,例如 301。
- Name(名稱):給它一個威武的名字,像是 Deny_All_MultiPorts。
進階管理小技巧
如果你的白名單 IP 常常像天氣一樣變來變去,或者你手底下的 VM 越來越多,每次都要手動來改 NSG 規則真的會讓人想砸鍵盤。
這時候建議可以利用「應用程式安全性群組(Application Security Group, ASG)」或者 Azure 的「IP Groups」功能。這就像是把所有好朋友的名字直接打包進一個群組懶人包,以後 NSG 規則的來源直接指定這個群組就可以了,管理起來輕鬆到可以提早下班!