Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Si vous souhaitez empêcher l’utilisation ou l’installation de certaines extensions sur vos machines virtuelles Windows, vous pouvez créer une définition Azure Policy à l’aide de PowerShell afin de restreindre les extensions pour les machines virtuelles dans un groupe de ressources.
Ce didacticiel utilise Azure PowerShell dans Cloud Shell, qui est constamment mise à jour vers la dernière version.
Créer un fichier de règles
Pour restreindre les extensions qui peuvent être installées, vous devez disposer d’une règle qui fournit la logique permettant d’identifier l’extension.
Cet exemple montre comment interdire l’installation des extensions publiées par « Microsoft. Compute » en créant un fichier de règles dans Azure Cloud Shell. Cependant, si vous utilisez PowerShell localement, vous pouvez également créer un fichier local et remplacer le chemin d’accès ($home/clouddrive) par le chemin d’accès au fichier local sur votre ordinateur.
Dans un Cloud Shell, créez le fichier
$home/clouddrive/rules.json
au moyen de n’importe quel éditeur de texte.Copiez et collez les contenus .json suivants dans le fichier et enregistrez-le :
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Compute/virtualMachines/extensions"
},
{
"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
"equals": "Microsoft.Compute"
},
{
"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 à bloquer.
Cet exemple montre comment créer un fichier de paramètres pour les machines virtuelles dans Cloud Shell. Cependant, si vous utilisez PowerShell localement, vous pouvez également créer un fichier local et remplacer le chemin d’accès ($home/clouddrive) par le chemin d’accès au fichier local sur votre ordinateur.
Dans Cloud Shell, créez le fichier
$home/clouddrive/parameters.json
au moyen de n’importe quel éditeur de texte.Copiez et collez les contenus .json suivants dans le fichier et enregistrez-le :
{
"notAllowedExtensions": {
"type": "Array",
"metadata": {
"description": "The list of extensions that will be denied.",
"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 une définition de stratégie à l'aide de la cmdlet New-AzPolicyDefinition.
Les règles de stratégie et les paramètres correspondent aux fichiers que vous avez créés et stockés en tant que fichiers .json dans votre Cloud Shell. Remplacez les exemples de chemins de fichier -Policy
et -Parameter
selon vos besoins.
$definition = New-AzPolicyDefinition `
-Name "not-allowed-vmextension-windows" `
-DisplayName "Not allowed VM Extensions" `
-description "This policy governs which VM extensions that are explicitly denied." `
-Policy 'C:\Users\ContainerAdministrator\clouddrive\rules.json' `
-Parameter 'C:\Users\ContainerAdministrator\clouddrive\parameters.json'
Affecter la stratégie
Dans cet exemple, la stratégie est affectée à un groupe de ressources à l'aide de la commande New-AzPolicyAssignment. N’importe quelle machine virtuelle créée dans le groupe de ressources myResourceGroup ne pourra pas installer les extensions VM Access Agent ou Custom Script.
Utilisez la cmdlet Get-AzSubscription | Format-Table pour obtenir l'ID d'abonnement qui remplacera celui de l'exemple.
$scope = "/subscriptions/<subscription id>/resourceGroups/myResourceGroup"
$assignment = New-AzPolicyAssignment `
-Name "not-allowed-vmextension-windows" `
-Scope $scope `
-PolicyDefinition $definition `
-PolicyParameter '{
"notAllowedExtensions": {
"value": [
"VMAccessAgent",
"CustomScriptExtension"
]
}
}'
$assignment
Tester la stratégie
Pour tester la stratégie, essayez d’utiliser l’extension d’accès de la machine virtuelle. Ce qui suit doit échouer avec le message « Set-AzVMAccessExtension : La ressource 'myVMAccess' a été interdite par la stratégie ».
Set-AzVMAccessExtension `
-ResourceGroupName "myResourceGroup" `
-VMName "myVM" `
-Name "myVMAccess" `
-Location EastUS
Dans le portail, le changement de mot de passe échoue avec le message « Le déploiement de modèle a échoué en raison de la violation de stratégie. ».
Supprimer l’affectation
Remove-AzPolicyAssignment -Name not-allowed-vmextension-windows -Scope $scope
Supprimer la stratégie
Remove-AzPolicyDefinition -Name not-allowed-vmextension-windows
Étapes suivantes
Pour plus d’informations, consultez Présentation d’Azure Policy.