Démarrage rapide : Créer une affectation de stratégie pour identifier les ressources non conformes à l’aide d’Azure PowerShell

La première étape pour comprendre la conformité dans Azure consiste à identifier l’état de vos ressources. Dans ce guide de démarrage rapide, vous allez créer une attribution de stratégie afin d’identifier les ressources non conformes en utilisant Azure PowerShell. La stratégie est attribuée à un groupe de ressources et audite des machines virtuelles qui n’utilisent aucun disque managé. Après avoir créé l’attribution de stratégie, vous identifiez les machines virtuelles non conformes.

Le module Azure PowerShell peut être utilisé pour gérer des ressources Azure à partir de la ligne de commande ou dans des scripts. Cet article explique comment utiliser Azure PowerShell pour créer une attribution de stratégie.

Lors de l’affectation d’une définition de stratégie ou d’initiative intégrée, il est facultatif de référencer une version. Les affectations de stratégie des définitions intégrées utilisent par défaut la dernière version, et héritent automatiquement des modifications de version mineures, sauf indication contraire.

Prérequis

  • Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.
  • Azure PowerShell.
  • Visual Studio Code.
  • Microsoft.PolicyInsights doit être inscrit dans votre abonnement Azure. Pour inscrire un fournisseur de ressources, vous devez avoir l’autorisation pour enregistrer les fournisseur de ressources. Cette autorisation est incluse dans les rôles Contributeur et Propriétaire.
  • Un groupe de ressources avec au moins une machine virtuelle qui n’utilise pas de disques managés.

Connexion à Azure

Depuis une session de terminal Visual Studio Code, connectez-vous à Azure. Si vous avez plusieurs abonnements, exécutez les commandes pour définir le contexte sur votre abonnement. Remplacez <subscriptionID> par l’identifiant de votre abonnement Azure.

Connect-AzAccount

# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>

Inscrire un fournisseur de ressources

Lorsqu’un fournisseur de ressources est inscrit, il est disponible pour être utilisé dans votre abonnement Azure.

Pour vérifier si Microsoft.PolicyInsights est inscrite, exécutez Get-AzResourceProvider. Le fournisseur de ressources contient plusieurs types de ressources. Si le résultat est NotRegistered, exécutez Register-AzResourceProvider:

 Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
   Select-Object -Property ResourceTypes, RegistrationState

Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'

Pour plus d’informations, accédez à Get-AzResourceProvider et Register-AzResourceProvider.

Création d’affectations de stratégies

Utilisez les commandes suivantes pour créer une attribution de stratégie pour votre groupe de ressources. Cet exemple utilise un groupe de ressources existant qui contient une machine virtuelle sans disques managés. Le groupe de ressources est l’étendue de l’attribution de stratégie. Cet exemple utilise la définition de stratégie intégrée Auditer les machines virtuelles qui n’utilisent pas de disques managés.

Exécutez les commandes suivantes et remplacez <resourceGroupName> par le nom de votre groupe de ressources :

$rg = Get-AzResourceGroup -Name '<resourceGroupName>'

$definition = Get-AzPolicyDefinition |
  Where-Object { $_.DisplayName -eq 'Audit VMs that do not use managed disks' }

La variable $rg stocke les propriétés du groupe de ressources et la variable $definition stocke les propriétés de la définition de stratégie. Les propriétés sont utilisées dans les commandes suivantes.

Exécutez la commande suivante pour créer l’ attribution de stratégie :

$policyparms = @{
Name = 'audit-vm-managed-disks'
DisplayName = 'Audit VM managed disks'
Scope = $rg.ResourceId
PolicyDefinition = $definition
Description = 'Az PowerShell policy assignment to resource group'
}

New-AzPolicyAssignment @policyparms

La variable $policyparms utilise Splatting pour créer des valeurs de paramètre et améliorer la lisibilité. La commande New-AzPolicyAssignment utilise les valeurs de paramètre définies dans la variable $policyparms.

  • Name crée le nom de l’affectation de stratégie utilisé dans les affectations ResourceId.
  • DisplayName est le nom de l’attribution de stratégie et est visible dans le portail Azure.
  • Scope utilise la propriété $rg.ResourceId pour affecter la stratégie au groupe de ressources.
  • PolicyDefinition affecte la définition de stratégie stockée dans la variable $definition.
  • Description peut être utilisé pour ajouter un contexte à propos de l’attribution de stratégie.

Les résultats de l’attribution de stratégie ressemblent à l’exemple suivant :

Name               : audit-vm-managed-disks
ResourceId         : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
ResourceName       : audit-vm-managed-disks
ResourceGroupName  : {resourceGroupName}
ResourceType       : Microsoft.Authorization/policyAssignments
SubscriptionId     : {subscriptionId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
Properties         : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.Policy.PsPolicyAssignmentProperties

Pour plus d’informations, accédez à New-AzPolicyAssignment.

Si vous voulez réafficher les informations d’attribution de stratégie, exécutez la commande suivante :

Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId

Identifier des ressources non conformes

L’état de conformité d’une nouvelle attribution de stratégie prend quelques minutes pour devenir actif et fournir des résultats sur l’état de la stratégie.

Utilisez la commande suivante pour identifier les ressources qui ne sont pas conformes à l’attribution de stratégie que vous avez créée :

$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}

Get-AzPolicyState @complianceparms

La variable $complianceparms utilise la mise en forme pour créer des valeurs de paramètre utilisées dans la commande Get-AzPolicyState.

  • ResourceGroupName obtient le nom du groupe de ressources de la propriété $rg.ResourceGroupName.
  • PolicyAssignmentName spécifie le nom utilisé lors de la création de l’affectation de stratégie.
  • Filter utilise une expression pour rechercher des ressources qui ne sont pas conformes à l’affectation de stratégie.

Vos résultats doivent ressembler à l’exemple suivant et ComplianceState montre NonCompliant :

Timestamp                : 2/14/2024 18:25:37
ResourceId               : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmId}
PolicyAssignmentId       : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks
PolicyDefinitionId       : /providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d
IsCompliant              : False
SubscriptionId           : {subscriptionId}
ResourceType             : Microsoft.Compute/virtualMachines
ResourceLocation         : {location}
ResourceGroup            : {resourceGroupName}
ResourceTags             : tbd
PolicyAssignmentName     : audit-vm-managed-disks
PolicyAssignmentOwner    : tbd
PolicyAssignmentScope    : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
PolicyDefinitionName     : 06a78e20-9358-41c9-923c-fb736d382a4d
PolicyDefinitionAction   : audit
PolicyDefinitionCategory : tbd
ManagementGroupIds       : {managementGroupId}
ComplianceState          : NonCompliant
AdditionalProperties     : {[complianceReasonCode, ]}

Pour plus d’informations, accédez à Get-AzPolicyState.

Nettoyer les ressources

Pour supprimer l’attribution de stratégie, exécutez la commande suivante :

Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId

Pour vous déconnecter de votre session Azure PowerShell :

Disconnect-AzAccount

Étapes suivantes

Dans ce démarrage rapide, vous avez affecté une définition de stratégie pour identifier les ressources non conformes de votre environnement Azure.

Pour en savoir plus sur l’affectation de stratégies qui valident la conformité des ressources, passez au didacticiel.