Schnellstart: Erstellen einer Richtlinienzuweisung zum Identifizieren nicht konformer Ressourcen mit der REST-API

Zum Verständnis der Konformität in Azure müssen Sie zunächst wissen, wie Sie den Status Ihrer Ressourcen ermitteln. In dieser Schnellstartanleitung erstellen Sie eine Richtlinienzuweisung, um nicht kompatible Ressourcen mithilfe der REST-API zu identifizieren. Die Richtlinie wird einer Ressourcengruppe zugewiesen und überwacht VMs, die keine verwalteten Datenträger verwenden. Nachdem Sie die Richtlinienzuweisung erstellt haben, ermitteln Sie nicht konforme VMs.

In dieser Anleitung wird die REST-API verwendet, um eine Richtlinienzuweisung zu erstellen und nicht konforme Ressourcen in Ihrer Azure-Umgebung zu identifizieren. In den Beispielen in diesem Artikel werden PowerShell und die Azure CLI az rest -Befehle verwendet. Sie können auch die az rest -Befehle aus einer Bash-Shell wie Git Bash ausführen.

Voraussetzungen

  • Sollten Sie kein Azure-Konto haben, erstellen Sie zunächst ein kostenloses Konto.
  • Neueste Version von PowerShell oder einer Bash-Shell wie Git Bash.
  • Neueste Version von Azure CLI.
  • Visual Studio Code.
  • Eine Ressourcengruppe mit mindestens einer VM, die keine verwalteten Datenträger verwendet.

Überprüfen der REST-API-Syntax

Es gibt zwei Elemente zum Ausführen von REST-API-Befehlen: den REST-API-URI und den Anforderungstext. Weitere Informationen finden Sie unter Richtlinienzuweisungen – Erstellen.

Das folgende Beispiel zeigt die REST-API-URI-Syntax zum Erstellen einer Richtliniendefinition.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: Ein Bereich bestimmt, für welche Ressourcen oder Gruppe von Ressourcen die Richtlinienzuweisung erzwungen wird. Ein solcher Bereich kann eine Verwaltungsgruppe oder auch nur eine einzelne Ressource sein. Ersetzen Sie {scope} durch eines der folgenden Muster:
    • Verwaltungsgruppe: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Abonnement: /subscriptions/{subscriptionId}
    • Ressourcengruppe: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Ressource: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: Erstellt den Richtlinienzuweisungsnamen für Ihre Aufgabe. Der Name ist in der policyAssignmentId -Eigenschaft der Richtlinienzuweisung enthalten.

Das folgende Beispiel ist der JSON zum Erstellen einer Anforderungstextdatei.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: Anzeigename für die Richtlinienzuweisung.
  • description: Kann verwendet werden, um Kontext zur Richtlinienzuweisung hinzuzufügen.
  • policyDefinitionId: Die Richtliniendefinitions-ID, mit der die Zuweisung erstellt werden kann.
  • nonComplianceMessages: Legen Sie die Nachricht fest, die verwendet werden soll, wenn eine Ressource als nicht konform ausgewertet wird. Weitere Informationen finden Sie unter Azure Policy-Zuweisungsstruktur: Meldungen bei Complianceverstößen.

Herstellen einer Verbindung mit Azure

Stellen Sie in einer Visual Studio Code-Terminalsitzung eine Verbindung mit Azure her. Wenn Sie über mehrere Abonnements verfügen, führen Sie die Befehle aus, um den Kontext für Ihr Abonnement festzulegen. Ersetzen Sie <subscriptionID> durch Ihre Azure-Abonnement-ID.

az login

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

Verwenden Sie az login auch dann, wenn Sie PowerShell verwenden, da in den Beispielen Azure CLI az rest -Befehle verwendet werden.

Erstellen einer Richtlinienzuweisung

In dieser Schnellstartanleitung erstellen Sie eine Richtlinienzuweisung und weisen die Definition Virtuelle Computer überwachen, die keine verwalteten Datenträger verwenden zu.

Zum Erstellen des Auftrags ist ein Anforderungstext erforderlich. Speichern Sie den folgenden JSON-Code in einer Datei mit dem Namen request-body.json.

{
  "properties": {
    "displayName": "Audit VM managed disks",
    "description": "Policy assignment to resource group scope created with REST API",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
    "nonComplianceMessages": [
      {
        "message": "Virtual machines should use managed disks"
      }
    ]
  }
}

Verwenden Sie zum Erstellen der Richtlinienzuweisung in einem vorhandenen Ressourcengruppenbereich den folgenden REST-API-URI mit einer Datei für den Anforderungstext. Ersetzen Sie {subscriptionId} und {resourceGroupName} durch Ihre eigenen Werte. Der Befehl zeigt die JSON-Ausgabe in Ihrer Shell an.

az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01 --body `@request-body.json

In PowerShell ist der Backtick (`) erforderlich, um ein Escape für at sign (@) durchzuführen und einen Dateinamen anzugeben. Lassen Sie in einer Bash-Shell wie Git Bash den Backtick aus.

Weitere Informationen finden Sie unter Richtlinienzuweisungen – Erstellen.

Identifizieren nicht konformer Ressourcen

Es dauert einige Minuten, bis der Konformitätszustand für eine neue Richtlinienzuweisung aktiviert ist und Ergebnisse zum Status der Richtlinie liefert. Sie verwenden die REST-API, um die nicht kompatiblen Ressourcen für diese Richtlinienzuweisung anzuzeigen, und die Ausgabe befindet sich in JSON.

Führen Sie den folgenden Befehl aus, um nicht kompatible Ressourcen zu identifizieren. Ersetzen Sie {subscriptionId} und {resourceGroupName} durch Ihre Werte, die beim Erstellen der Richtlinienzuweisung verwendet wurden.

az rest --method post --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01 --uri-parameters `$filter="complianceState eq 'NonCompliant' and PolicyAssignmentName eq 'audit-vm-managed-disks'"

Die filter -Abfragen nach Ressourcen, die als nicht konform mit der Richtliniendefinition namens audit-vm-managed-disks ausgewertet werden, die Sie mit der Richtlinienzuweisung erstellt haben. Beachten Sie erneut, dass der Backtick verwendet wird, um Escape bei dem Dollarzeichen ($) im Filter anzuwenden. Bei einem Bash-Client ist ein umgekehrter Schrägstrich (\) ein gängiges Escapezeichen.

Ihre Ergebnisse sollten in etwa wie im folgenden Beispiel aussehen:

{
  "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
  "@odata.count": 1,
  "@odata.nextLink": null,
  "value": [
    {
      "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
      "@odata.id": null,
      "complianceReasonCode": "",
      "complianceState": "NonCompliant",
      "effectiveParameters": "",
      "isCompliant": false,
      "managementGroupIds": "",
      "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks",
      "policyAssignmentName": "audit-vm-managed-disks",
      "policyAssignmentOwner": "tbd",
      "policyAssignmentParameters": "",
      "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
      "policyAssignmentVersion": "",
      "policyDefinitionAction": "audit",
      "policyDefinitionCategory": "tbd",
      "policyDefinitionGroupNames": [
        ""
      ],
      "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionName": "06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionReferenceId": "",
      "policyDefinitionVersion": "1.0.0",
      "policySetDefinitionCategory": "",
      "policySetDefinitionId": "",
      "policySetDefinitionName": "",
      "policySetDefinitionOwner": "",
      "policySetDefinitionParameters": "",
      "policySetDefinitionVersion": "",
      "resourceGroup": "{resourceGroupName}",
      "resourceId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmName}>",
      "resourceLocation": "westus3",
      "resourceTags": "tbd",
      "resourceType": "Microsoft.Compute/virtualMachines",
      "subscriptionId": "{subscriptionId}",
      "timestamp": "2024-03-26T02:19:28.3720191Z"
    }
  ]
}

Weitere Informationen hierzu erhalten Sie unter Richtlinienzuständen – Listenabfrageergebnisse für die Ressourcengruppe.

Bereinigen von Ressourcen

Verwenden Sie den folgenden Befehl, um die Richtlinienzuweisung zu entfernen. Ersetzen Sie {subscriptionId} und {resourceGroupName} durch Ihre Werte, die beim Erstellen der Richtlinienzuweisung verwendet wurden. Der Befehl zeigt die JSON-Ausgabe in Ihrer Shell an.

az rest --method delete --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01

Sie können überprüfen, ob die Richtlinienzuweisung mit dem folgenden Befehl gelöscht wurde. In Ihrer Shell wird eine Meldung angezeigt.

az rest --method get --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01
The policy assignment 'audit-vm-managed-disks' is not found.

Weitere Informationen finden Sie unter Richtlinienzuweisungen – Löschen und Richtlinienzuweisungen –Abrufen.

Nächste Schritte

In diesem Schnellstart haben Sie eine Richtliniendefinition zum Identifizieren nicht kompatibler Ressourcen in Ihrer Azure-Umgebung zugewiesen.

Fahren Sie mit dem Tutorial fort, um mehr über das Zuweisen von Richtlinien zu lernen, die überprüfen, ob Ressourcen konform sind.