Partager via


Démarrage rapide : Auditer la base de référence de sécurité Azure pour Linux avec une machine de test

extrait de code d’écran du rapport de conformité

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 :

  1. Créer un groupe de ressources vide
  2. Affecter la stratégie d’audit au groupe de ressources vide
  3. Créer une machine virtuelle dans le groupe de ressources et observer les résultats de l’audit

Pourboire

Conditions préalables

Avant de tenter les étapes de cet article :

  1. 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.

  2. Choisissez la manière dont vous allez accéder à votre environnement Azure, par exemple :

    1. EASY : Azure Cloud Shell à l’adresse https://shell.azure.com
    2. OU : utilisez votre propre poste de travail et votre propre environnement shell avec Azure CLI installé et connecté
    3. OU : Utilisez le portail Azure à l’adresse https://portal.azure.com
  3. Assurez-vous d’être connecté à l’environnement de test Azure de votre choix

    Vous pouvez utiliser az account show pour voir votre contexte actuel. Pour vous connecter ou modifier des contextes, utilisez az 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.

az group create --name my-demo-rg --location eastus

Étape 2 : Attribuer la stratégie à votre groupe de ressources de test vide

# 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

  1. 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_B2s
    

    Pourboire

    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.

  2. 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 :

  1. Nombre d’ordinateurs par état de conformité (utile à l’échelle de production, où vous pouvez avoir des milliers de machines)
  2. Liste des machines avec l’état de conformité pour chacun d’eux
  3. 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.

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.

  1. 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 yamlc
    
  2. Liste 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 yamlc
    
  3. Liste 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".