Comprendre la configuration d’invité d’Azure PolicyUnderstand Azure Policy's Guest Configuration

En plus de l’audit et de la correction des ressources Azure, Azure Policy peut auditer les paramètres internes d’une machine.Beyond auditing and remediating Azure resources, Azure Policy can audit settings inside a machine. La validation est effectuée par le client et l’extension de configuration d’invité.The validation is performed by the Guest Configuration extension and client. L’extension, via le client, valide des paramètres tels que :The extension, through the client, validates settings such as:

  • La configuration du système d’exploitationThe configuration of the operating system
  • La configuration ou la présence de l’applicationApplication configuration or presence
  • Paramètres d'environnementEnvironment settings

À ce stade, la configuration d’invité Azure Policy effectue uniquement un audit des paramètres à l’intérieur de la machine.At this time, Azure Policy Guest Configuration only audits settings inside the machine. Elle n’applique pas de configurations.It doesn't apply configurations.

Extension et clientExtension and client

Pour auditer les paramètres à l’intérieur d’une machine, une extension de machine virtuelle est activée.To audit settings inside a machine, a virtual machine extension is enabled. L’extension télécharge l’attribution de stratégie applicable et la définition de configuration correspondante.The extension downloads applicable policy assignment and the corresponding configuration definition.

Limites définies sur l’extensionLimits set on the extension

Pour limiter l’impact de l’extension sur les applications qui s’exécutent à l’intérieur de la machine, la configuration d’invité ne peut pas dépasser plus de 5 % de l’utilisation du processeur.To limit the extension from impacting applications running inside the machine, the Guest Configuration isn't allowed to exceed more than 5% of CPU utilization. Cette limitation existe à la fois pour les définitions intégrées et personnalisées.This limitation exists for both built-in and custom definitions.

Inscrire le fournisseur de ressources de configuration d’invitéRegister Guest Configuration resource provider

Avant de pouvoir utiliser la configuration d’invité, vous devez inscrire le fournisseur de ressources.Before you can use Guest Configuration, you must register the resource provider. Pour ce faire, vous pouvez utiliser le portail ou PowerShell.You can register through the portal or through PowerShell. Le fournisseur de ressources est inscrit automatiquement si l’affectation d’une stratégie de configuration d’invité est effectuée via le portail.The resource provider is registered automatically if assignment of a Guest Configuration policy is done through the portal.

Inscription - portailRegistration - Portal

Pour inscrire le fournisseur de ressources pour la configuration d’invité via le portail Azure, effectuez les étapes suivantes :To register the resource provider for Guest Configuration through the Azure portal, follow these steps:

  1. Lancez le portail Azure et cliquez sur Tous les services.Launch the Azure portal and click on All services. Recherchez et sélectionnez Abonnements.Search for and select Subscriptions.

  2. Recherchez l’abonnement pour lequel vous souhaitez activer la configuration d’invité et cliquez dessus.Find and click on the subscription that you want to enable Guest Configuration for.

  3. Dans le menu de gauche de la page Abonnement, cliquez sur Fournisseurs de ressources.In the left menu of the Subscription page, click Resource providers.

  4. Filtrez ou faites défiler jusqu’à ce que vous localisiez Microsoft.GuestConfiguration, puis cliquez sur Inscrire sur la même ligne.Filter for or scroll until you locate Microsoft.GuestConfiguration, then click Register on the same row.

Inscription - PowerShellRegistration - PowerShell

Pour inscrire le fournisseur de ressources pour la configuration d’invité via PowerShell, exécutez la commande suivante :To register the resource provider for Guest Configuration through PowerShell, run the following command:

# Login first with Connect-AzAccount if not using Cloud Shell
Register-AzResourceProvider -ProviderNamespace 'Microsoft.GuestConfiguration'

Outils de validationValidation tools

À l’intérieur de la machine, le client de configuration d’invité utilise des outils locaux pour exécuter l’audit.Inside the machine, the Guest Configuration client uses local tools to run the audit.

Le tableau suivant affiche une liste des outils locaux utilisés sur chaque système d’exploitation pris en charge :The following table shows a list of the local tools used on each supported operating system:

Système d’exploitationOperating system Outil de validationValidation tool NotesNotes
WindowsWindows Configuration d’état souhaité Windows PowerShell v2Windows PowerShell Desired State Configuration v2
LinuxLinux Chef InSpecChef InSpec Ruby et Python sont installés par l’extension de configuration d’invité.Ruby and Python are installed by the Guest Configuration extension.

Fréquence de validationValidation frequency

Le client de configuration d'invité vérifie le nouveau contenu toutes les 5 minutes.The Guest Configuration client checks for new content every 5 minutes. Une fois l'affectation d'invité reçue, les paramètres sont vérifiés à intervalle de 15 minutes.Once a guest assignment is received, the settings are checked on a 15-minute interval. Les résultats sont envoyés au fournisseur de ressources de configuration d’invité dès la fin de l’audit.Results are sent to the Guest Configuration resource provider as soon as the audit completes. Lorsqu'un déclencheur d’évaluation de stratégie intervient, l'état de la machine est consigné dans le fournisseur de ressources de configuration d'invité.When a policy evaluation trigger occurs, the state of the machine is written to the Guest Configuration resource provider. Avec cette mise à jour, Azure Policy évalue alors les propriétés Azure Resource Manager.This update causes Azure Policy to evaluate the Azure Resource Manager properties. Une évaluation Azure Policy à la demande récupère la valeur la plus récente du fournisseur de ressources de configuration d'invité.An on-demand Azure Policy evaluation retrieves the latest value from the Guest Configuration resource provider. Cela étant, elle ne déclenche pas de nouvel audit de la configuration de la machine.However, it doesn't trigger a new audit of the configuration within the machine.

Types de clients pris en chargeSupported client types

Le tableau suivant affiche une liste des systèmes d’exploitation pris en charge sur des images Azure :The following table shows a list of supported operating system on Azure images:

Serveur de publicationPublisher NameName VersionsVersions
CanonicalCanonical Serveur UbuntuUbuntu Server 14.04, 16.04, 18.0414.04, 16.04, 18.04
CredativCredativ DebianDebian 8, 98, 9
MicrosoftMicrosoft Windows ServerWindows Server 2012 Datacenter, 2012 R2 Datacenter, 2016 Datacenter, 2019 Datacenter2012 Datacenter, 2012 R2 Datacenter, 2016 Datacenter, 2019 Datacenter
MicrosoftMicrosoft Client WindowsWindows Client Windows 10Windows 10
OpenLogicOpenLogic CentOSCentOS 7.3, 7.4, 7.57.3, 7.4, 7.5
Red HatRed Hat Red Hat Enterprise LinuxRed Hat Enterprise Linux 7.4, 7.57.4, 7.5
SUSESuse SLESSLES 12 SP312 SP3

Important

La configuration d’invité peut auditer les nœuds exécutant un système d’exploitation pris en charge.Guest Configuration can audit nodes running a supported OS. Si vous souhaitez auditer des machines virtuelles qui utilisent une image personnalisée, vous devez dupliquer la définition DeployIfNotExists et modifier la section If pour inclure les propriétés de votre image.If you would like to audit virtual machines that use a custom image, you need to duplicate the DeployIfNotExists definition and modify the If section to include your image properties.

Types de clients non pris en chargeUnsupported client types

Windows Server Nano Server n’est pris en charge dans aucune version.Windows Server Nano Server isn't supported in any version.

Configuration réseau requise pour l’extension de configuration d’invitéGuest Configuration Extension network requirements

Pour communiquer avec le fournisseur de ressources de configuration d’invité dans Azure, les machines nécessitent un accès sortant vers des centres de données Azure sur le port 443.To communicate with the Guest Configuration resource provider in Azure, machines require outbound access to Azure datacenters on port 443. Si vous utilisez un réseau privé virtuel dans Azure sans autoriser le trafic sortant, vous devez configurer les exceptions à l’aide des règles du groupe de sécurité réseau.If you're using a private virtual network in Azure that doesn't allow outbound traffic, configure exceptions with Network Security Group rules. L’étiquette de service « GuestAndHybridManagement » peut être utilisée pour référencer le service Guest Configuration.The service tag "GuestAndHybridManagement" can be used to reference the Guest Configuration service.

Exigences de définition de la configuration d’invitéGuest Configuration definition requirements

Chaque audit exécuté par la configuration d’invité nécessite deux définitions de stratégies : une définition DeployIfNotExists et une définition AuditIfNotExists.Each audit run by Guest Configuration requires two policy definitions, a DeployIfNotExists definition and an AuditIfNotExists definition. La définition DeployIfNotExists sert à préparer la machine avec l’agent de configuration d’invité et d’autres composants pour prendre en charge les outils de validation.The DeployIfNotExists definition is used to prepare the machine with the Guest Configuration agent and other components to support the validation tools.

La définition de stratégie DeployIfNotExists valide et corrige les éléments suivants :The DeployIfNotExists policy definition validates and corrects the following items:

  • Validez qu’une configuration à évaluer a été attribuée à la machine.Validate the machine has been assigned a configuration to evaluate. Si aucune attribution n’est actuellement présente, procurez-vous cette attribution et préparez la machine en effectuant les opérations suivantes :If no assignment is currently present, get the assignment and prepare the machine by:
    • Authentification auprès de la machine en utilisant une identité managéeAuthenticating to the machine using a managed identity
    • Installation de la dernière version de l’extension Microsoft.GuestConfigurationInstalling the latest version of the Microsoft.GuestConfiguration extension
    • Installation des outils de validation et des dépendances, si nécessaireInstalling validation tools and dependencies, if needed

Si l’attribution de DeployIfNotExists n’est pas conforme, une tâche de correction peut être utilisée.If the DeployIfNotExists assignment is Non-compliant, a remediation task can be used.

Une fois que l’attribution de DeployIfNotExists est conforme, l’attribution de la stratégie AuditIfNotExists utilise les outils de validation locaux pour déterminer si l’attribution de configuration est conforme ou non conforme.Once the DeployIfNotExists assignment is Compliant, the AuditIfNotExists policy assignment uses the local validation tools to determine if the configuration assignment is Compliant or Non-compliant. L’outil de validation fournit les résultats au client de configuration d’invité.The validation tool provides the results to the Guest Configuration client. Le client transmet à l’extension invité les résultats pour les rendre disponibles via le fournisseur de ressources de la configuration d’invité.The client forwards the results to the Guest Extension, which makes them available through the Guest Configuration resource provider.

Azure Policy utilise la propriété complianceStatus des fournisseurs de ressources de configuration d’invité pour signaler la conformité dans le nœud Conformité.Azure Policy uses the Guest Configuration resource providers complianceStatus property to report compliance in the Compliance node. Pour plus d’informations, consultez Obtention de données de conformité.For more information, see getting compliance data.

Notes

La stratégie DeployIfNotExists est requise pour que la stratégie AuditIfNotExists retourne des résultats.The DeployIfNotExists policy is required for the AuditIfNotExists policy to return results. Sans la stratégie DeployIfNotExists, la stratégie AuditIfNotExists affiche « 0 sur 0 » ressource comme état.Without the DeployIfNotExists, the AuditIfNotExists policy shows "0 of 0" resources as status.

Toutes les stratégies intégrées pour la configuration d’invité sont incluses dans une initiative pour regrouper les définitions à utiliser dans les attributions.All built-in policies for Guest Configuration are included in an initiative to group the definitions for use in assignments. L’initiative intégré nommée [Préversion] : Auditer les paramètres de sécurité de mot de passe dans les machines Linux et Windows contient 18 stratégies.The built-in initiative named [Preview]: Audit Password security settings inside Linux and Windows machines contains 18 policies. Il existe six paires DeployIfNotExists et AuditIfNotExists pour Windows et trois paires pour Linux.There are six DeployIfNotExists and AuditIfNotExists pairs for Windows and three pairs for Linux. La logique de définition de stratégie valide que seul le système d’exploitation cible est évalué.The policy definition logic validates that only the target operating system is evaluated.

Audit des paramètres du système d’exploitation conformément aux lignes de base du secteurAuditing operating system settings following industry baselines

L’une des initiatives disponibles dans Azure Policy permet d’auditer les paramètres du système d’exploitation à l’intérieur des machines virtuelles en suivant une « ligne de base » de Microsoft.One of the initiatives available in Azure Policy provides the ability to audit operating system settings inside virtual machines following a "baseline" from Microsoft. La définition, [Préversion] : Auditer les machines virtuelles Windows qui ne correspondent pas aux paramètres de la base de référence de sécurité Azure comprend un ensemble complet de règles d’audit basées sur les paramètres de stratégie de groupe Active Directory.The definition, [Preview]: Audit Windows VMs that do not match Azure security baseline settings includes a complete set of audit rules based on settings from Active Directory Group Policy.

La plupart des paramètres sont disponibles en tant que tels.Most of the settings are available as parameters. Cette fonctionnalité vous permet de personnaliser ce qui est audité afin d’aligner la stratégie sur les besoins de votre organisation, ou de mapper la stratégie à des informations tierces, telles que des normes réglementaires sectorielles.This functionality allows you to customize what is audited to align the policy with your organizational requirements or to map the policy to third-party information such as industry regulatory standards.

Certains paramètres prennent en charge une plage de valeurs entières.Some parameters support an integer value range. Par exemple, le paramètre Âge maximum du mot de passe peut être défini à l’aide d’un opérateur de plage pour offrir de la flexibilité aux propriétaires d’ordinateurs.For example, the Maximum Password Age parameter can be set using a range operator to give flexibility to machine owners. Vous pouvez vérifier que le paramètre de stratégie de groupe effectif exigeant que les utilisateurs modifient leur mot de passe ne soit pas supérieur à 70 jours ou inférieur à 1 jour.You could audit that the effective Group Policy setting requiring users to change their passwords should be no more than 70 days, but shouldn't be less than one day. Comme décrit dans l’info-bulle du paramètre, pour faire de cette stratégie d’entreprise la valeur d’audit effective, définissez la valeur sur « 1,70 ».As described in the info-bubble for the parameter, to make this business policy the effective audit value, set the value to "1,70".

Si vous affectez la stratégie à l’aide d’un modèle de déploiement Azure Resource Manager, vous pouvez utiliser un fichier de paramètres pour gérer ces paramètres à partir du contrôle de code source.If you assign the policy using an Azure Resource Manager deployment template, you can use a parameters file to manage these settings from source control. L’utilisation d’un outil tel que Git pour gérer les modifications des stratégies d’audit avec des commentaires à chaque enregistrement permet de documenter les raisons pour lesquelles une affectation doit être en exception de la valeur attendue.Using a tool such as Git to manage changes to Audit policies with comments at each check-in documents evidence as to why an assignment should be an exception to the expected value.

Application de configurations à l’aide de Guest ConfigurationApplying configurations using Guest Configuration

La dernière fonctionnalité d’Azure Policy configure les paramètres à l’intérieur des machines.The latest feature of Azure Policy configures settings inside machines. La définition Configurer le fuseau horaire sur les machines Windows apporte des modifications à la machine en configurant le fuseau horaire.The definition Configure the time zone on Windows machines makes changes to the machine by configuring the time zone.

Lorsque vous attribuez des définitions qui commencent par Configurer, vous devez également attribuer la définition Déployer les composants requis pour activer la stratégie de configuration d’invité sur des machines virtuelles Windows.When assigning definitions that begin with Configure, you must also assign the definition Deploy prerequisites to enable Guest Configuration Policy on Windows VMs. Vous pouvez combiner ces définitions dans une initiative.You can combine these definitions in an initiative if you choose.

Attribution de stratégies à des machines en dehors d’AzureAssigning policies to machines outside of Azure

Les stratégies d’audit disponibles pour Guest Configuration incluent le type de ressource Microsoft.HybridCompute/machines.The Audit policies available for Guest Configuration include the Microsoft.HybridCompute/machines resource type. Toutes les machines intégrées à Azure Arc pour les serveurs qui se trouvent dans l’étendue de l’attribution de stratégie sont automatiquement incluses.Any machines onboarded to Azure Arc for Servers that are in the scope of the policy assignment are automatically included.

Affectations multiplesMultiple assignments

Actuellement, les stratégies de configuration d’invité prennent en charge l’affectation d’une seule affectation d’invité par machine, même si l’affectation de stratégie utilise des paramètres différents.Guest Configuration policies currently only support assigning the same Guest Assignment once per machine, even if the Policy assignment uses different parameters.

Modules de ressources intégrésBuilt-in resource modules

Lors de l’installation de l’extension Guest Configuration, le module PowerShell « GuestConfiguration » est inclus dans la dernière version des modules de ressources DSC.When installing the Guest Configuration extension, the 'GuestConfiguration' PowerShell module is included with the latest version of DSC resource modules. Ce module peut être téléchargé à partir de la PowerShell Gallery à l’aide du lien « Téléchargement manuel » dans la page du module GuestConfiguration.This module can be downloaded from the PowerShell Gallery by using the 'Manual Download' link from the module page GuestConfiguration. Le format de fichier « .nupkg » peut être renommé en « .zip » pour le décompresser et le vérifier.The '.nupkg' file format can be renamed to '.zip' to uncompress and review.

Fichiers journaux du clientClient log files

L’extension de configuration d’invité écrit les fichiers journaux aux emplacements suivants :The Guest Configuration extension writes log files to the following locations:

Windows : C:\Packages\Plugins\Microsoft.GuestConfiguration.ConfigurationforWindows\<version>\dsc\logs\dsc.logWindows: C:\Packages\Plugins\Microsoft.GuestConfiguration.ConfigurationforWindows\<version>\dsc\logs\dsc.log

Linux : /var/lib/waagent/Microsoft.GuestConfiguration.ConfigurationforLinux-<version>/GCAgent/logs/dsc.logLinux: /var/lib/waagent/Microsoft.GuestConfiguration.ConfigurationforLinux-<version>/GCAgent/logs/dsc.log

<version> indique le numéro de la version actuelle.Where <version> refers to the current version number.

Collecte des journaux à distanceCollecting logs remotely

La première étape de la résolution des problèmes liés aux configurations ou aux modules de Guest Configuration consiste à utiliser l'applet de commande Test-GuestConfigurationPackage en suivant les étapes décrites dans Tester un package Guest Configuration.The first step in troubleshooting Guest Configuration configurations or modules should be to use the Test-GuestConfigurationPackage cmdlet following the steps in Test a Guest Configuration package. Si cela ne réussit pas, la collecte des journaux des clients peut vous aider à diagnostiquer les problèmes.If that isn't successful, collecting client logs can help diagnose issues.

WindowsWindows

Pour utiliser la commande Run de la machine virtuelle Azure afin de capturer des informations à partir de fichiers journaux sur des machines Windows, l’exemple de script PowerShell suivant peut être utile.To use the Azure VM Run Command capability to capture information from log files in Windows machines, the following example PowerShell script can be helpful. Pour plus d’informations, consultez Exécuter des scripts PowerShell dans votre machine virtuelle Windows avec la commande Run.For more information, see Run PowerShell scripts in your Windows VM with Run Command.

$linesToIncludeBeforeMatch = 0
$linesToIncludeAfterMatch = 10
$latestVersion = Get-ChildItem -Path 'C:\Packages\Plugins\Microsoft.GuestConfiguration.ConfigurationforWindows\' | ForEach-Object {$_.FullName} | Sort-Object -Descending | Select-Object -First 1
Select-String -Path "$latestVersion\dsc\logs\dsc.log" -pattern 'DSCEngine','DSCManagedEngine' -CaseSensitive -Context $linesToIncludeBeforeMatch,$linesToIncludeAfterMatch | Select-Object -Last 10

LinuxLinux

Pour utiliser la commande Run de la machine virtuelle Azure afin de capturer des informations à partir de fichiers journaux sur des machines Linux, l’exemple de script Bash suivant peut être utile.To use the Azure VM Run Command capability to capture information from log files in Linux machines, the following example Bash script can be helpful. Pour plus d’informations, consultez Exécuter des scripts shell dans votre machine virtuelle Linux avec la commande RunFor more information, see Run shell scripts in your Linux VM with Run Command

linesToIncludeBeforeMatch=0
linesToIncludeAfterMatch=10
latestVersion=$(find /var/lib/waagent/ -type d -name "Microsoft.GuestConfiguration.ConfigurationforLinux-*" -maxdepth 1 -print | sort -z | sed -n 1p)
egrep -B $linesToIncludeBeforeMatch -A $linesToIncludeAfterMatch 'DSCEngine|DSCManagedEngine' "$latestVersion/GCAgent/logs/dsc.log" | tail

Exemples de la configuration d’invitéGuest Configuration samples

Des exemples de la configuration d’invité Azure Policy sont disponibles aux emplacements suivants :Samples for Policy Guest Configuration are available in the following locations:

Étapes suivantesNext steps