Snabbstart: Skapa en principtilldelning för att identifiera icke-kompatibla resurser med hjälp av Azure CLI

Det första steget mot att förstå kompatibilitet i Azure är att identifiera dina resursers status. I den här snabbstarten skapar du en principtilldelning för att identifiera icke-kompatibla resurser med hjälp av Azure CLI. Principen tilldelas till en resursgrupp och granskar virtuella datorer som inte använder hanterade diskar. När du har skapat principtilldelningen identifierar du icke-kompatibla virtuella datorer.

Azure CLI används för att skapa och hantera Azure-resurser från kommandoraden eller i skript. I den här guiden används Azure CLI för att skapa en principtilldelning och för att identifiera icke-kompatibla resurser i Azure-miljön.

Förutsättningar

  • Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.
  • Azure CLI.
  • Visual Studio Code.
  • Microsoft.PolicyInsights måste vara registrerad i din Azure-prenumeration. Om du vill registrera en resursprovider måste du ha behörighet att registrera resursprovidrar. Behörigheten ingår i rollerna Deltagare och Ägare.
  • En resursgrupp med minst en virtuell dator som inte använder hanterade diskar.

Ansluta till Azure

Anslut till Azure från en terminalsession i Visual Studio Code. Om du har fler än en prenumeration kör du kommandona för att ange kontext till din prenumeration. Ersätt <subscriptionID> med ditt Azure-prenumerations-ID.

az login

# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>

Registrera resursprovider

När en resursprovider registreras är den tillgänglig att använda i din Azure-prenumeration.

Kontrollera om Microsoft.PolicyInsights är registrerad genom att köra Get-AzResourceProvider. Resursprovidern innehåller flera resurstyper. Om resultatet NotRegistered körs Register-AzResourceProvider:

az provider show \
  --namespace Microsoft.PolicyInsights \
  --query "{Provider:namespace,State:registrationState}" \
  --output table

az provider register --namespace Microsoft.PolicyInsights

Azure CLI-kommandona använder ett omvänt snedstreck (\) för radfortsättning för att förbättra läsbarheten. Mer information finns i az provider.

Skapa principtilldelning

Använd följande kommandon för att skapa en ny principtilldelning för resursgruppen. I det här exemplet används en befintlig resursgrupp som innehåller en virtuell dator utan hanterade diskar. Resursgruppen är omfånget för principtilldelningen. I det här exemplet används den inbyggda principdefinitionen Granska virtuella datorer som inte använder hanterade diskar.

Kör följande kommandon och ersätt <resourceGroupName> med resursgruppens namn:

rgid=$(az group show --resource-group <resourceGroupName> --query id --output tsv)

definition=$(az policy definition list \
  --query "[?displayName=='Audit VMs that do not use managed disks']".name \
  --output tsv)

Variabeln rgid lagrar resursgrupps-ID:t. Variabeln definition lagrar principdefinitionens namn, som är ett GUID.

Kör följande kommando för att skapa principtilldelningen:

az policy assignment create \
  --name 'audit-vm-managed-disks' \
  --display-name 'Audit VM managed disks' \
  --scope $rgid \
  --policy $definition \
  --description 'Azure CLI policy assignment to resource group'
  • name skapar det principtilldelningsnamn som används i tilldelningens ResourceId.
  • display-name är namnet på principtilldelningen och visas i Azure-portalen.
  • scope använder variabeln $rgid för att tilldela principen till resursgruppen.
  • policy tilldelar den principdefinition som lagras i variabeln $definition .
  • description kan användas för att lägga till kontext om principtilldelningen.

Resultatet av principtilldelningen liknar följande exempel:

"description": "Azure CLI policy assignment to resource group",
"displayName": "Audit VM managed disks",
"enforcementMode": "Default",
"id": "/subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks",
"identity": null,
"location": null,
"metadata": {
  "createdBy": "11111111-1111-1111-1111-111111111111",
  "createdOn": "2024-02-23T18:42:27.4780803Z",
  "updatedBy": null,
  "updatedOn": null
},
"name": "audit-vm-managed-disks",

Kör följande kommando om du vill spela upp information om principtilldelningen på nytt:

az policy assignment show --name "audit-vm-managed-disks" --scope $rgid

Mer information finns i az policy assignment (az policy assignment).

Identifiera icke-kompatibla resurser

Efterlevnadstillståndet för en ny principtilldelning tar några minuter att bli aktiv och ge resultat om principens tillstånd.

Använd följande kommando för att identifiera resurser som inte är kompatibla med den principtilldelning som du skapade:

policyid=$(az policy assignment show \
  --name "audit-vm-managed-disks" \
  --scope $rgid \
  --query id \
  --output tsv)

az policy state list --resource $policyid --filter "(isCompliant eq false)"

Variabeln policyid använder ett uttryck för att hämta principtilldelningens ID. Parametern filter begränsar utdata till icke-kompatibla resurser.

Utdata az policy state list är utförliga, men för den complianceState här artikeln visas NonCompliant:

"complianceState": "NonCompliant",
"components": null,
"effectiveParameters": "",
"isCompliant": false,

Mer information finns i az policy state (az policy state).

Rensa resurser

Kör följande kommando för att ta bort principtilldelningen:

az policy assignment delete --name "audit-vm-managed-disks" --scope $rgid

Logga ut från Azure CLI-sessionen:

az logout

Nästa steg

I den här snabbstarten har du tilldelat en principdefinition för att identifiera icke-kompatibla resurser i Azure-miljön.

Om du vill veta mer om hur du tilldelar principer som validerar resursefterlevnad fortsätter du till självstudien.