Démarrage rapide : Créer une attribution de stratégie pour identifier des ressources non conformes à l'aide d'un fichier Bicep
Au cours de ce démarrage rapide, vous utilisez un fichier Bicep pour créer une affectation de stratégie qui valide la conformité de la ressource à une stratégie Azure. 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’affectation de stratégie, vous identifiez les machines virtuelles non conformes.
Bicep est un langage spécifique à un domaine (DSL) qui utilise la syntaxe déclarative pour déployer des ressources Azure. Il fournit une syntaxe concise, une cohérence des types fiable et une prise en charge de la réutilisation du code. Bicep offre la meilleure expérience de création pour vos solutions d’infrastructure en tant que code dans Azure.
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.
- Bicep.
- Azure PowerShell ou Azure CLI.
- Visual Studio Code et l’extension Bicep pour 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 aucun disque managé.
Examiner le fichier Bicep
Le fichier Bicep crée une affectation de stratégie pour une étendue de groupe de ressources et attribue la définition de stratégie intégrée Faire l’audit des machines virtuelles n’utilisant aucun disque managé.
Créez le fichier Bicep suivant en tant que policy-assignment.bicep.
- Ouvrez Visual Studio Code et sélectionnez Fichier>Nouveau fichier texte.
- Copiez et collez le fichier Bicep dans Visual Studio Code.
- Sélectionnez Fichier>Enregistrer et utilisez le nom de fichier policy-assignment.bicep.
param policyAssignmentName string = 'audit-vm-managed-disks'
param policyDefinitionID string = '/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d'
param policyDisplayName string = 'Audit VM managed disks'
resource assignment 'Microsoft.Authorization/policyAssignments@2023-04-01' = {
name: policyAssignmentName
scope: resourceGroup()
properties: {
policyDefinitionId: policyDefinitionID
description: 'Policy assignment to resource group scope created with Bicep file'
displayName: policyDisplayName
nonComplianceMessages: [
{
message: 'Virtual machines should use managed disks'
}
]
}
}
output assignmentId string = assignment.id
Le type de ressource défini dans le fichier Bicep est Microsoft.Authorization/policyAssignments.
Le fichier Bicep utilise trois paramètres pour déployer l’affectation de stratégie :
policyAssignmentName
crée l’affectation de stratégie appelée audit-vm-managed-disks.policyDefinitionID
utilise l’ID de la définition de stratégie intégrée. Pour référence, les commandes permettant d’obtenir l’ID se trouvent dans la section pour déployer le modèle.policyDisplayName
crée un nom complet visible dans le portail Azure.
Pour obtenir plus d’informations sur les fichiers Bicep :
- Pour trouver d’autres exemple Bicep, accédez à Parcourir des exemples de code.
- Pour découvrir plus d’informations sur la référence de modèle pour les déploiements, accédez à Référence de modèle Azure.
- Pour découvrir comment développer des fichiers Bicep, accédez à la Documentation Bicep.
- Pour découvrir des informations sur les déploiements au niveau de l’abonnement, accédez aux Déploiements d’abonnements avec des fichiers Bicep.
Déployer le fichier Bicep
Vous pouvez déployer le fichier Bicep avec Azure PowerShell ou Azure CLI.
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>
Vous pouvez vérifier si Microsoft.PolicyInsights
est inscrit. Si ce n’est pas le cas, vous pouvez exécuter une commande pour inscrire le fournisseur de ressources.
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.
Les commandes suivantes affichent la valeur du paramètre policyDefinitionID
:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
Les commandes suivantes déploient la définition de stratégie dans votre groupe de ressources. Remplacez <resourceGroupName>
par le nom de votre groupe de ressources :
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.bicep'
}
New-AzResourceGroupDeployment @deployparms
La variable $rg
stocke les propriétés pour le groupe de ressources. La variable $deployparms
utilise splatting pour créer des valeurs de paramètre et améliorer la lisibilité. La commande New-AzResourceGroupDeployment
utilise les valeurs de paramètre définies dans la variable $deployparms
.
Name
est le nom de déploiement affiché dans la sortie et dans Azure pour les déploiements du groupe de ressources.ResourceGroupName
utilise la propriété$rg.ResourceGroupName
pour obtenir le nom de votre groupe de ressources dans lequel la stratégie est attribuée.TemplateFile
spécifie le nom du fichier Bicep et l’emplacement sur votre ordinateur local.
Vous pouvez vérifier le déploiement de l’affectation de stratégie avec la commande suivante :
La commande utilise la propriété $rg.ResourceId
pour obtenir l’ID du groupe de ressources.
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
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 à Get-AzPolicyAssignment.
Identifier des ressources non conformes
Une fois l’affectation de stratégie déployée, les machines virtuelles déployées dans le groupe de ressources sont auditées en matière de conformité avec la stratégie de disque managé.
L’état de conformité d’une nouvelle affectation de stratégie prend quelques minutes pour devenir actif et fournir des résultats sur l’état de la stratégie.
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
La variable $complianceparms
crée 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/20/2024 18:55:45
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
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.