Partager via


Utiliser Azure Policy pour restreindre l’installation d’extensions sur les machines virtuelles Linux

Si vous souhaitez empêcher l’installation de certaines extensions sur vos machines virtuelles Linux, vous pouvez créer une définition de stratégie Azure avec l’interface de ligne de commande Azure afin de restreindre les extensions pour les machines virtuelles d’un groupe de ressources. Pour découvrir les principes de base des extensions de machine virtuelle Azure pour Linux, consultez Extensions et fonctionnalités de machine virtuelle pour Linux.

Ce didacticiel utilise l’interface CLI disponible dans Azure Cloud Shell, qui est constamment mise à jour vers la dernière version. Pour exécuter l’interface Azure CLI localement, vous devez installer la version 2.0.26 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Créer un fichier de règles

Pour restreindre les extensions qui sont disponibles, vous devez créer une règle qui identifie l’extension.

Cet exemple montre comment refuser l’installation des extensions de machine virtuelle non autorisées en définissant un fichier de règles dans Azure Cloud Shell. Toutefois, si vous travaillez dans Azure CLI localement, vous pouvez créer un fichier local et remplacer le chemin (~/clouddrive) par le chemin du fichier sur votre système de fichiers local.

  1. Dans un bash Cloud Shell, créez le fichier ~/clouddrive/azurepolicy.rules.json au moyen d’un éditeur de texte.

  2. Copiez et collez les contenus suivants .json dans le nouveau fichier et enregistrez-le.

{
	"if": {
		"allOf": [
			{
				"field": "type",
				"equals": "Microsoft.Compute/virtualMachines/extensions"
			},
			{
				"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
				"equals": "Microsoft.OSTCExtensions"
			},
			{
				"field": "Microsoft.Compute/virtualMachines/extensions/type",
				"in": "[parameters('notAllowedExtensions')]"
			}
		]
	},
	"then": {
		"effect": "deny"
	}
}

Créer un fichier de paramètres

Vous avez également besoin d’un fichier de paramètres qui crée une structure que vous pourrez utiliser pour transmettre la liste des extensions non autorisées.

Cet exemple montre comment créer un fichier de paramètres pour les machines virtuelles Linux dans Cloud Shell.

  1. Dans le bash Cloud Shell ouvert précédemment, créez le fichier ~/clouddrive/azurepolicy.parameters.json au moyen d’un éditeur de texte.

  2. Copiez et collez les contenus suivants .json dans le nouveau fichier et enregistrez-le.

{
	"notAllowedExtensions": {
		"type": "Array",
		"metadata": {
			"description": "The list of extensions that will be denied. Example: CustomScriptForLinux, VMAccessForLinux etc.",
			"displayName": "Denied extension"
		}
	}
}

Création de la stratégie

Une définition de stratégie est un objet servant à stocker la configuration que vous souhaitez utiliser. La définition de stratégie fait appel aux fichiers de règles et de paramètres pour définir la stratégie. Créez la définition de stratégie à l’aide de la commande az policy definition create.

Dans cet exemple, les règles et les paramètres correspondent aux fichiers que vous avez créés et stockés en tant que fichiers .json dans Cloud Shell ou dans votre système de fichiers local.

az policy definition create \
   --name 'not-allowed-vmextension-linux' \
   --display-name 'Block VM Extensions' \
   --description 'This policy governs which VM extensions that are blocked.' \
   --rules '~/clouddrive/azurepolicy.rules.json' \
   --params '~/clouddrive/azurepolicy.parameters.json' \
   --mode All

Affecter la stratégie

Dans cet exemple, la stratégie est affectée à un groupe de ressources à l'aide de la commande az policy assignment create. N’importe quelle machine virtuelle créée dans le groupe de ressources myResourceGroup ne pourra pas installer les extensions VM Access For Linux et Custom Script For Linux.

Notes

Pour que la stratégie puisse être affectée, le groupe de ressources doit déjà exister.

Utilisez az account list pour rechercher votre ID d’abonnement et remplacez l’espace réservé dans l’exemple suivant :

az policy assignment create \
   --name 'not-allowed-vmextension-linux' \
   --scope /subscriptions/<subscription Id>/resourceGroups/myResourceGroup \
   --policy "not-allowed-vmextension-linux" \
   --params '{
		"notAllowedExtensions": {
			"value": [
				"VMAccessForLinux",
				"CustomScriptForLinux"
			]
		}
	}'

Tester la stratégie

Testez la stratégie en créant une machine virtuelle et en ajoutant un nouvel utilisateur.

az vm create \
    --resource-group myResourceGroup \
	--name myVM \
	--image myImage \
	--generate-ssh-keys

Notes

Remplacez les valeurs myResourceGroup, myVM et myImage en conséquence.

Essayez de créer un utilisateur nommé myNewUser à l’aide de l’extension VM Access.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser \
  --password 'mynewuserpwd123!'

Supprimer l’affectation

az policy assignment delete --name 'not-allowed-vmextension-linux' --resource-group myResourceGroup

Supprimer la stratégie

az policy definition delete --name 'not-allowed-vmextension-linux'

Étapes suivantes

Pour plus d’informations, consultez Présentation d’Azure Policy.