Cosa fa un network security group
Un network security group (NSG) e’ un firewall stateful di livello 3/4 che filtra il traffico IP in ingresso e in uscita verso le risorse di una virtual network. Contiene un elenco di security rule, ciascuna definita da priorita’, source e destination (indirizzi IP, CIDR, service tag o application security group), source/destination port, protocol (TCP, UDP, ICMP o Any), direction (Inbound/Outbound) e action (Allow o Deny). Essendo stateful, quando una connessione viene consentita il traffico di ritorno e’ automaticamente ammesso: non serve una regola simmetrica sull’altra direzione.
Un NSG puo’ essere associato a una subnet oppure a una NIC (network interface), e le due associazioni possono coesistere. Per il traffico inbound Azure valuta prima l’NSG della subnet e poi quello della NIC; per l’outbound l’ordine e’ invertito (prima NIC, poi subnet). In entrambi i casi il traffico passa solo se tutti gli NSG attraversati lo consentono. L’NSG non ispeziona il livello applicativo: per filtro per FQDN, TLS inspection o regole L7 servono Azure Firewall o un Web Application Firewall, non l’NSG.
Rule priority e ordine di valutazione
Ogni regola ha una priority numerica compresa tra 100 e 4096: piu’ basso e’ il numero, piu’ alta e’ la precedenza. Azure valuta le regole in ordine di priorita’ crescente e applica la prima che corrisponde ai cinque criteri (source, destination, port, protocol, direction); appena c’e’ un match la valutazione si ferma e le regole successive vengono ignorate. Questo comportamento “first match wins” e’ il cuore delle domande d’esame: una regola Deny piu’ specifica ma con numero piu’ alto non prevale su una Allow piu’ generica con numero piu’ basso. Per rendere efficace un blocco occorre dargli una priorita’ numericamente inferiore a quella della regola che si vuole superare. Lasciare un divario tra le priorita’ (es. 100, 200, 300) e’ una buona pratica per inserire regole intermedie senza rinumerare.
Default security rules
Ogni NSG include default security rule non eliminabili, con le priorita’ piu’ alte (65000, 65001, 65500) che quindi vengono valutate per ultime. Inbound: AllowVNetInBound (traffico interno alla VNet e reti peered), AllowAzureLoadBalancerInBound (probe e traffico dal load balancer) e DenyAllInBound. Outbound: AllowVnetOutBound, AllowInternetOutBound e DenyAllOutBound. La conseguenza pratica: dall’esterno tutto e’ gia’ bloccato per default, ma all’interno della VNet tutto e’ consentito. Per isolare workload nella stessa VNet o subnet non basta “non aprire” nulla: bisogna aggiungere una regola Deny esplicita con priorita’ inferiore a 65000. Le default rule usano i service tag (VirtualNetwork, AzureLoadBalancer, Internet) che rappresentano insiemi di prefissi gestiti da Microsoft e aggiornati automaticamente.
Application security group e microsegmentazione
Un application security group (ASG) e’ un raggruppamento logico di NIC per ruolo applicativo (web, app, db). Nelle regole NSG l’ASG puo’ essere usato come source o destination al posto di indirizzi IP: cosi’ la policy diventa “web puo’ parlare con app sulla 443”, indipendentemente dagli IP e dal numero di VM. Quando una VM scala o cambia indirizzo basta aggiungerla all’ASG, senza toccare le regole. E’ l’abilitatore della microsegmentazione: si applica un unico NSG a livello di subnet e si differenzia il traffico per tier tramite ASG, ottenendo isolamento fine anche tra macchine della stessa subnet. Vincolo chiave: tutte le NIC di un ASG devono stare nella stessa VNet, e se una regola usa ASG sia come source sia come destination, entrambi devono appartenere alla stessa VNet.
Trappole tipiche d’esame
- Deny con priorita’ numerica maggiore di una Allow esistente → non blocca nulla: vince sempre la regola con numero piu’ basso; assegna al Deny una priorita’ inferiore per farlo prevalere.
- Isolare VM nella stessa VNet/subnet → serve un Deny esplicito:
AllowVNetInBound(65000) consente per default tutto il traffico intra-VNet; aggiungi una regola Deny sotto 65000. - Traffico bloccato con NSG su subnet e NIC → entrambi devono consentire: inbound valuta subnet poi NIC, outbound NIC poi subnet; il match deve essere Allow in tutti gli NSG attraversati.
- Filtro per FQDN o ispezione L7 → non e’ compito dell’NSG: usa Azure Firewall o WAF; l’NSG opera solo su IP/porta/protocollo.
- ASG usato tra due VNet diverse → non valido: le NIC di un ASG (e gli ASG referenziati nella stessa regola) devono risiedere nella medesima VNet.
- Aggiungere una regola outbound per la risposta a una connessione consentita → superflua: l’NSG e’ stateful e ammette da solo il return traffic.