Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe

Les Application Security Groups

Poster un commentaire

Les Application Security Groups (ASG) créées un regroupement logique de VM qui peuvent ainsi être gérées collectivement au niveau de la sécurité VNET. Les ASG constituent alors une entité qui peut être considérée comme un outbound ou un inbound du point de vue d’un NSG.

De cette façon on a plus besoin de répéter des règles NSG pour toutes les VM qui constituent ce qui simplifie la configuration et la maintenance. Maintenance simplifiée également par le fait que l’on a plus besoin de cibler des IP dont on est pas toujours certains de la stabilité dans le temps.

ASG est donc un outil intéressant à connaître si on fait du Iaas. Je propose d’en faire la découverte dans cet article.

Explications

Examinons cette configuration:

 

Un VNET expose deux sous-réseaux subnet1 et subnet2 dans lesquels sont déployés des VM. Subnet2 héberge une application. Puisque les sous-réseaux appartiennent au même réseau, elles peuvent toutes accéder à cette application. En réalité ce n’est pas ce qui est recherché. Nous souhaitons limiter l’accès aux deux applications Sale-VM1 et Sale-VM2 et l’interdire à App-VM3.

Dans ce contexte les NSG (Network Security Group) ne nous aideront pas, car nous souhaitons éviter les règles au niveau IP pour éviter les problèmes de maintenance et surtout ne pas passer son temps à créer une nouvelle règle à chaque ajout de VM.

Application Security Group (ASG) est un outil qui va nous permettre de créer un regroupement logique de VM. Il est alors possible d’appliquer une règle NSG à un ASG. On obtient alors la situation suivante:

La structure réseau n’a pas changé. Les VM sont toujours dans les mêmes sous-réseaux. Ce qui a changé est la présence d’un ASG permettant de filtrer au niveau d’un NSG les flux. Dans cette configuration seules les VM Sale accèdent à l’application hébergée par VM3. App-VM3 est complètement bloquée.

 

Préparation de la démo

Nous allons déployer l’environnement de démo suivant qui est légèrement plus simple:

Vous pouvez faire le déploiement au portail. Faites attention à placer toutes les ressources dans la même location et de créer les ressources dans le même VNET.

Vous pouvez aussi le déployer en lançant ce script PowerShell:

 


cls

$location = "west europe"
$rgName = "rgDemo"
$vnetName = "vnetdemo"
$sub1Name = "subnet1"
$sub2Name = "subnet2"
$user = "User01"
$pwd = "azorSuperchien444"
$vnetAdressPrefix = "10.0.0.0/16"
$sub1AddressPrefix = "10.0.1.0/24"
$sub2AddressPrefix = "10.0.2.0/24"

$rg = New-AzResourceGroup -Name $rgName -Location $location

$sub1 = New-AzVirtualNetworkSubnetConfig -Name $sub1Name -AddressPrefix $sub1AddressPrefix
$sub2 = New-AzVirtualNetworkSubnetConfig -Name $sub2Name -AddressPrefix $sub2AddressPrefix
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location -AddressPrefix $vnetAdressPrefix -Subnet $sub1,$sub2

$PWord = ConvertTo-SecureString -String $pwd -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord

$vm1 = New-AzVm `
-ResourceGroupName $rgName `
-Name "Sale-VM1" `
-Location $location `
-VirtualNetworkName $vnetName `
-SubnetName $sub1 `
-Credential $cred

$vm2 = New-AzVm `
-ResourceGroupName $rgName `
-Name "App-VM2" `
-Location $location `
-VirtualNetworkName $vnetName `
-SubnetName $sub1 `
-Credential $cred

$vm3 = New-AzVm `
-ResourceGroupName $rgName `
-Name "VM3" `
-Location $location `
-VirtualNetworkName $vnetName `
-SubnetName $sub1 `
-Credential $cred

 

Une dernière formalité, il faut aussi activer IIS dans VM3. Juste un rôle à ajouter et c’est bon, on se contentera du site par défaut:

 

Les règles par défaut du NSG interdisent l’accès via Internet. Mais si on récupère l’IP privée:

Et qu’on lance depuis VM1 l’url:

http://192.168.1.6

Il devrait s’afficher:

Je vous laisse vérifier que l’on observe la même chose depuis VM2.

La démo qui suit a pour objet de bloquer l’accès à VM3 depuis VM1 et de ne l’autoriser que pour VM2.

Démonstration ASG

On commence par créer un ASG depuis le portail dédié:

On clique sur ADD:

 

Au bout de quelques instants:

Nous allons placer VM2 dans l’ASG, c’est très facile. Dans le portail de la VM:

Dans le menu Networking (2) sélectionnez l’onglet Application Security Groups (3). Cliquez sur CONFIGUREZ:

Puis SAVE. Lisez bien la pastille bleue. L’ASG doit partager la même région que le VNET. Si on sélectionne plusieurs ASG, elles doivent être dans le même VNET.

Il ne reste plus qu’à ajouter des NSG pour contrôler l’accès à VM3. On se rend dans le menu Networking de VM3 et on choisit l’onglet Inbound. Chez moi les choses ressemblent à ceci:

On autorise tout d’abord les accès depuis l’ASG:

 

On choisit la source Application Security Group (1) puis l’ASG (2). On sélectionne Allow (3) et on donne un nom évocateur (4). On peut être sélectif sur les autres paramètres, mais c’est le minimum.

On interdit ensuite les accès depuis toute autre source:

 

On n’oublie pas le Deny (2) et important, la priorité DOIT être plus grande que celle de la règle précédente.

Testons

Et maintenant on teste!!!

On se précipite dans VM1 qui n’est pas dans l’ASG:

Parfait!

Rendons-nous dans VM2:

Tout marche comme prévu!

 

Bibliographie

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s