La sécurité via les groupes de sécurité (NSG et ASG)
Introduction
Dans Azure, la séparation d'un réseau virtuel en sous-réseaux permet d'organiser les ressources. Elle ne bloque pas, à elle seule, leurs communications. Pour contrôler ces échanges, nous pouvons utiliser des groupes de sécurité réseau (NSG), complétés par des groupes de sécurité d'application (ASG).
Les groupes de sécurité réseau
Un NSG (Network Security Group) contient des règles qui autorisent ou interdisent le trafic réseau entrant et sortant. Il peut être associé :
-
A un sous-réseau, pour filtrer le trafic des ressources qui s'y trouvent.
-
A une interface réseau, pour filtrer le trafic d'une machine virtuelle.
Lorsque des NSG sont associés à ces deux niveaux, le trafic doit être autorisé par chacun d'eux pour circuler. Une autorisation dans un NSG ne neutralise pas une interdiction dans l'autre.
Les règles de sécurité
Chaque règle définit les caractéristiques du trafic concerné :
| Propriété | Description |
|---|---|
| Sens | Trafic entrant ou sortant. |
| Source et destination | Adresses IP, plages CIDR, ASG. |
| Protocole | Par exemple TCP, UDP. |
| Ports | Ports sources et ports de destination. |
| Action | Autoriser ou interdire le trafic. |
| Priorité | Ordre d'évaluation de la règle. |
Les règles personnalisées ont une priorité comprise entre 100 et 4096. Plus le nombre est petit, plus la règle est prioritaire. L'évaluation s'arrête dès qu'une règle correspond au trafic.
Les NSG conservent l'état des connexions (stateful) : lorsqu'une connexion est autorisée, son trafic de réponse est automatiquement permis.
Les règles par défaut
Chaque NSG contient des règles par défaut qui autorisent notamment les communications au sein du réseau virtuel et le trafic sortant vers Internet. Les autres connexions entrantes sont refusées, sauf exceptions prévues, comme les sondes d'Azure Load Balancer.
Ces règles ne peuvent pas être supprimées, mais des règles personnalisées plus prioritaires peuvent modifier le comportement obtenu.
Associer un NSG à un sous-réseau ne l'isole donc pas automatiquement des autres sous-réseaux. Il faut définir les restrictions souhaitées.
Les groupes de sécurité d'application (ASG)
Un ASG (Application Security Group) permet de regrouper logiquement des interfaces réseau de machines virtuelles selon leur rôle dans une application. Nous pouvons, par exemple, créer trois groupes :
-
asg-web: les serveurs web -
asg-app: les serveurs applicatifs -
asg-db: les serveurs de bases de données
Ces groupes sont ensuite utilisés comme sources ou destinations dans les règles des NSG. Nous pouvons ainsi autoriser les serveurs applicatifs à accéder aux bases de données sans énumérer leurs adresses IP.
Un ASG ne contient pas de règles et ne filtre pas lui-même le trafic. Il simplifie la définition et la maintenance des règles des NSG. Les interfaces regroupées dans un même ASG doivent appartenir au même réseau virtuel.
Exemple d'utilisation
Considérons une application répartie sur des machines virtuelles appartenant aux trois ASG (web, app et db). Nous souhaitons autoriser les serveurs web à appeler les serveurs applicatifs en HTTPS, puis autoriser ces derniers à accéder à SQL Server.
Les règles entrantes suivantes peuvent être définies dans un NSG associé aux sous-réseaux concernés :
| Priorité | Source | Destination | Protocole | Port de destination | Action |
|---|---|---|---|---|---|
| 100 | asg-web |
asg-app |
TCP | 443 | Autoriser |
| 110 | asg-app |
asg-db |
TCP | 1433 | Autoriser |
| 200 | Toute source | asg-app |
Tous | Tous | Refuser |
| 210 | Toute source | asg-db |
Tous | Tous | Refuser |
Dans cet exemple, SQL Server est supposé écouter sur le port TCP 1433.
Les deux premières règles autorisent les échanges nécessaires. Les deux suivantes refusent les autres connexions entrantes vers les serveurs applicatifs et les bases de données. Grâce aux priorités, les autorisations précises sont évaluées avant les refus généraux.
Cet exemple doit être complété selon les besoins, notamment pour l'administration des machines et la supervision.
Bonnes pratiques
Appliquez le principe du moindre privilège : autorisez uniquement les sources, les destinations et les ports nécessaires. Utilisez des noms explicites pour les règles et les ASG, puis vérifiez les communications après chaque modification.
Les NSG filtrent les flux réseau, principalement aux couches réseau et transport du modèle OSI. Ils ne réalisent pas une inspection détaillée du contenu HTTP et ne remplacent donc pas un pare-feu d'application web (WAF) pour protéger une application contre les attaques visant ses requêtes.