Remarque
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.
Dans ce guide, vous allez utiliser Azure Policy pour auditer une machine virtuelle de test par rapport à la base de référence de sécurité Azure pour Linux.
Plus précisément, vous allez :
- Créer un groupe de ressources vide
- Affecter la stratégie d’audit au groupe de ressources vide
- Créer une machine virtuelle dans le groupe de ressources et observer les résultats de l’audit
Pourboire
- Si vous souhaitez essayer l’expérience d’audit et de configuration (correction) qui est actuellement en préversion plutôt que l’expérience d’audit uniquement, consultez Démarrage rapide : Configurer la base de référence de sécurité Azure pour Linux avec une machine de test
- Pour plus d’informations sur la base de référence de sécurité Azure pour Linux, consultez Qu’est-ce que la base de référence de sécurité Azure pour Linux ?.
Conditions préalables
Avant de tenter les étapes de cet article :
Vous aurez besoin d’un compte Azure pour créer un groupe de ressources, une attribution de stratégie et une machine virtuelle. Si vous n’avez pas de compte Azure, vous pouvez créer une version d’évaluation gratuite.
Choisissez la manière dont vous allez accéder à votre environnement Azure, par exemple :
- EASY : Azure Cloud Shell à l’adresse https://shell.azure.com
- OU : utilisez votre propre poste de travail et votre propre environnement shell avec Azure CLI installé et connecté
- OU : Utilisez le portail Azure à l’adresse https://portal.azure.com
Assurez-vous d’être connecté à l’environnement de test Azure de votre choix
- Azure CLI
- portail Azure
Vous pouvez utiliser
az account showpour voir votre contexte actuel. Pour vous connecter ou modifier des contextes, utilisezaz account login.
Étape 1 : Créer un groupe de ressources
Pourboire
L’utilisation de « USA Est » (eastus) comme exemple d’emplacement dans cet article est arbitraire. Vous pouvez choisir n’importe quel emplacement Azure disponible.
- Azure CLI
- portail Azure
az group create --name my-demo-rg --location eastus
Étape 2 : Attribuer la stratégie à votre groupe de ressources de test vide
- Azure CLI
- portail Azure
# Note this example is from a bash shell. Other shells may require different handling of special characters and variables
RG_ID=$(az group show --resource-group my-demo-rg --query id --output tsv)
az policy assignment create --policy "fc9b3da7-8347-4380-8e70-0a0361d8dedd" --display-name "Linux machines should meet requirements for the Azure compute security baseline" --scope "$RG_ID"
Étape 3 : Créer une machine virtuelle de test et la préparer pour la configuration de la machine
- Azure CLI
- portail Azure
Créer une machine virtuelle Linux avec une identité affectée par le système
az vm create --name my-demo-vm-01 --resource-group my-demo-rg --image Ubuntu2204 --assign-identity [system] --size Standard_B2sPourboire
Il est normal de recevoir une alerte similaire à « Aucun accès n’a encore été donné... ». Azure Machine Configuration nécessite uniquement que l’ordinateur dispose d' une identité managée, pas d’accès spécifique aux ressources.
Installer l’agent Machine Configuration en tant qu’extension de machine virtuelle Azure
az vm extension set --resource-group my-demo-rg --vm-name my-demo-vm-01 --name ConfigurationForLinux --publisher Microsoft.GuestConfiguration --enable-auto-upgrade
Pourboire
Les étapes d’extension d’identité managée et de configuration de machine ont été effectuées manuellement dans ce guide pour réduire l’attente et réduire les modifications de contexte. À grande échelle, ces problèmes peuvent être satisfaits à l’aide de l’initiative de stratégie intégrée Déployer les conditions préalables pour activer les stratégies de configuration invité sur les machines virtuelles .
Étape 4 : Faites une pause avant de continuer
Plusieurs étapes se produisent désormais automatiquement. Chacune de ces étapes peut prendre quelques minutes. En conséquence, veuillez patienter à moins de 15 minutes avant de continuer.
Étape 5 : Observez les résultats
Les exemples suivants montrent comment obtenir :
- Nombre d’ordinateurs par état de conformité (utile à l’échelle de production, où vous pouvez avoir des milliers de machines)
- Liste des machines avec l’état de conformité pour chacun d’eux
- Liste détaillée des règles de base avec l’état de conformité et les preuves (également appelées Raisons) pour chacun d’eux
Pourboire
Attendez-vous à voir les rouges non conformes entraînent les résultats suivants. Le cas d’usage d’audit uniquement concerne la découverte de la différence entre les systèmes existants et la base de référence de sécurité Azure.
- Azure CLI
- portail Azure
Les exemples Azure CLI suivants proviennent d’un environnement bash. Pour utiliser un autre environnement d’interpréteur de commandes, vous devrez peut-être ajuster des exemples pour le comportement de fin de ligne, les règles de guillemets, l’échappement de caractères, et ainsi de suite.
Nombre d’ordinateurs par état de conformité :
QUERY=' // Returns one record per observed compliance status bucket, with machine counts for each guestconfigurationresources | where name contains "AzureLinuxBaseline" | extend ["> ComplianceStatus"] = tostring(properties.complianceStatus) | summarize MachineCount = count() by ["> ComplianceStatus"]' az graph query --graph-query "$QUERY" --query data --output yamlcListe des machines avec l’état de conformité pour chacun d’eux :
QUERY=' // returns one record per machine, with status guestconfigurationresources | where name contains "AzureLinuxBaseline" | project ["> Machine"] = split(properties.targetResourceId,"/")[-1], ComplianceStatus = properties.complianceStatus, LastComplianceCheck = properties.lastComplianceStatusChecked' az graph query --graph-query "$QUERY" --query data --output yamlcListe détaillée des règles de base avec l’état de conformité et les preuves (également appelées Raisons) pour chacune d’elles :
QUERY=' // Returns one record per baseline rule (around 200 per machine) with status for each GuestConfigurationResources | where name contains "AzureLinuxBaseline" | project Report = properties.latestAssignmentReport, Machine = split(properties.targetResourceId,"/")[-1], LastComplianceCheck=properties.lastComplianceStatusChecked | mv-expand Report.resources | project ["> Machine"] = Machine, ["> Rule"] = Report_resources.resourceId, RuleComplianceStatus = Report_resources.complianceStatus, RuleComplianceReason = Report_resources.reasons[0].phrase, LastComplianceCheck' az graph query --graph-query "$QUERY" --query data --output yamlc
La vidéo est incluse pour donner une idée générale du flux de travail. Pour plus d’informations sur la requête, reportez-vous au texte de cet article.
Facultatif : Ajouter d’autres machines de test à une mise à l’échelle
Dans cet article, la stratégie a été affectée à un groupe de ressources qui a été initialement vide, puis a gagné une machine virtuelle. Bien que cela démontre que le système fonctionne de bout en bout, cela ne donne pas l’impression d’opérations à grande échelle avec des listes de machines, etc.
Envisagez d’ajouter d’autres machines de test au groupe de ressources, que ce soit manuellement ou via automation. Ces machines peuvent être des machines virtuelles Azure ou des machines avec Arc. Comme vous voyez que ces machines entrent en conformité (ou même échouent), vous pouvez avoir un sens plus vif de l’opérationnalisation de la base de référence de sécurité Azure à grande échelle.
Nettoyer les ressources
Pour éviter les frais en cours, envisagez de supprimer le groupe de ressources utilisé dans cet article. Par exemple, la commande Azure CLI serait az group delete --name "my-demo-rg".
Contenu connexe
- Pour fournir des commentaires, discuter des demandes de fonctionnalités, etc. contactez : linux_sec_config_mgmt@service.microsoft.com
- En savoir plus sur le blog lancement annoncé à Ignite 2024