Schnellstart: Erstellen einer Richtlinienzuweisung zum Identifizieren nicht konformer Ressourcen mithilfe von Python

Zum Verständnis der Konformität in Azure müssen Sie zunächst wissen, wie Sie den Status Ihrer Ressourcen ermitteln. Im Rahmen dieser Schnellstartanleitung erstellen Sie eine Richtlinienzuweisung zur Identifizierung von virtuellen Computern, die keine verwalteten Datenträger verwenden. Im Anschluss identifizieren Sie virtuelle Computer, die nicht konform sind.

Die Python-Bibliothek dient zum Verwalten von Azure-Ressourcen über die Befehlszeile oder mit Skripts. In dieser Anleitung erfahren Sie, wie Sie mithilfe der Python-Bibliothek eine Richtlinienzuweisung erstellen.

Voraussetzungen

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Azure Cloud Shell

Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.

Starten von Azure Cloud Shell:

Option Beispiel/Link
Wählen Sie rechts oben in einem Code- oder Befehlsblock die Option Jetzt testen aus. Durch die Auswahl von Ausprobieren wird der Code oder Befehl nicht automatisch in Cloud Shell kopiert. Screenshot: Beispiel von „Jetzt testen“ für Azure Cloud Shell.
Rufen Sie https://shell.azure.com auf, oder klicken Sie auf die Schaltfläche Cloud Shell starten, um Cloud Shell im Browser zu öffnen. Screenshot: Cloud Shell in einem neuen Fenster starten.
Wählen Sie im Azure-Portal rechts oben im Menü die Schaltfläche Cloud Shell aus. Screenshot: Schaltfläche „Cloud Shell“ im Azure-Portal

So verwenden Sie Azure Cloud Shell:

  1. Starten Sie Cloud Shell.

  2. Wählen Sie die Schaltfläche Kopieren auf einem Codeblock (oder Befehlsblock) aus, um den Code oder Befehl zu kopieren.

  3. Fügen Sie den Code oder Befehl mit STRG+UMSCHALT+V unter Windows und Linux oder Cmd+UMSCHALT+V unter macOS in die Cloud Shell-Sitzung ein.

  4. Drücken Sie die EINGABETASTE, um den Code oder Befehl auszuführen.

Hinzufügen der Policy-Bibliothek

Damit Python mit Azure Policy verwendet werden kann, muss die Bibliothek hinzugefügt werden. Diese Bibliothek funktioniert überall dort, wo Python verwendet werden kann, dies schließt Bash unter Windows 10 oder eine lokale Installation ein.

  1. Überprüfen Sie, ob die aktuelle Python-Version (mindestens 3.8) installiert ist. Falls sie noch nicht installiert ist, laden Sie die Version von Python.org herunter.

  2. Überprüfen Sie, ob die aktuelle Azure CLI-Version (mindestens 2.5.1) installiert ist. Falls sie noch nicht installiert ist, lesen Sie den Artikel Installieren der Azure CLI.

    Hinweis

    Azure CLI ist erforderlich, um Python für die Verwendung der CLI-basierten Authentifizierung in den folgenden Beispielen zu aktivieren. Informationen zu anderen Optionen finden Sie unter Authentifizieren mit Azure-Verwaltungsbibliotheken für Python.

  3. Führen Sie die Authentifizierung über Azure CLI aus.

    az login
    
  4. Installieren Sie die erforderlichen Bibliotheken für Azure Policy in der Python-Umgebung Ihrer Wahl:

    # Add the Python library for Python
    pip install azure-mgmt-policyinsights
    
    # Add the Resources library for Python
    pip install azure-mgmt-resource
    
    # Add the CLI Core library for Python for authentication (development only!)
    pip install azure-cli-core
    
    # Add the Azure identity library for Python
    pip install azure.identity
    

    Hinweis

    Wenn Python für alle Benutzer installiert ist, muss dieser Befehl in einer Konsole mit erhöhten Rechten ausgeführt werden.

  5. Überprüfen Sie, ob die Bibliotheken installiert wurden. azure-mgmt-policyinsights sollte mindestens 0.5.0 sein, azure-mgmt-resource sollte mindestens 9.0.0 sein, und azure-cli-core sollte mindestens 2.5.0 sein.

    # Check each installed library
    pip show azure-mgmt-policyinsights azure-mgmt-resource azure-cli-core azure.identity
    

Erstellen einer Richtlinienzuweisung

In dieser Schnellstartanleitung erstellen Sie eine Richtlinienzuweisung und weisen die Definition Virtuelle Computer überwachen, die keine verwalteten Datenträger verwenden (06a78e20-9358-41c9-923c-fb736d382a4d) zu. Mit dieser Richtliniendefinition werden Ressourcen identifiziert, die die in der Richtliniendefinition festgelegten Bedingungen nicht erfüllen.

Führen Sie den folgenden Code aus, um eine neue Richtlinienzuweisung zu erstellen:

# Import specific methods and models from other libraries
from azure.mgmt.resource.policy import PolicyClient
from azure.mgmt.resource.policy.models import PolicyAssignment, Identity, UserAssignedIdentitiesValue, PolicyAssignmentUpdate
from azure.identity import AzureCliCredential

# Set subscription
subId = "{subId}"
assignmentLocation = "westus2"

# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyClient(credential, subId, base_url=none)

# Create details for the assignment
policyAssignmentIdentity = Identity(type="SystemAssigned")
policyAssignmentDetails = PolicyAssignment(display_name="Audit VMs without managed disks Assignment", policy_definition_id="/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d", description="Shows all virtual machines not using managed disks", identity=policyAssignmentIdentity, location=assignmentLocation)

# Create new policy assignment
policyAssignment = policyClient.policy_assignments.create("{scope}", "audit-vm-manageddisks", policyAssignmentDetails)

# Show results
print(policyAssignment)

In diesen Befehlen werden folgende Informationen verwendet:

Zuweisungsdetails:

  • subId: Ihr Abonnement. Für die Authentifizierung erforderlich. Ersetzen Sie {subId} durch Ihr Abonnement.
  • display_name: Der Anzeigename für die Richtlinienzuweisung. Verwenden Sie in diesem Fall Zuweisung für die Überwachung virtueller Computer ohne verwaltete Datenträger.
  • policy_definition_id: Der Pfad der Richtliniendefinition, auf dessen Grundlage Sie die Zuweisung erstellen. In diesem Fall ist es die ID der Richtliniendefinition Virtuelle Computer überwachen, die keine verwalteten Datenträger verwenden. In diesem Beispiel ist die Richtliniendefinition integriert, und der Pfad enthält keine Verwaltungsgruppen- oder Abonnementinformationen.
  • scope: Ein Bereich bestimmt, für welche Ressourcen oder Ressourcengruppe die Richtlinienzuweisung erzwungen wird. Ein solcher Bereich kann eine Verwaltungsgruppe oder auch nur eine einzelne Ressource sein. Ersetzen Sie {scope} unbedingt durch eins 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}/]
  • description: Eine ausführlichere Erläuterung des Richtlinienzwecks oder des Grunds, warum sie diesem Bereich zugewiesen ist

Zuweisungserstellung:

  • Bereich: Dieser Bereich bestimmt, wo die Richtlinienzuweisung gespeichert wird. Der in den Zuweisungsdetails festgelegte Bereich muss in diesem Bereich liegen.
  • Name: Der tatsächliche Name der Zuweisung. In diesem Beispiel wurde audit-vm-manageddisks verwendet.
  • Richtlinienzuweisung: Das Python-Objekt PolicyAssignment, das im vorherigen Schritt erstellt wurde

Sie können nun nicht konforme Ressourcen identifizieren, um den Konformitätszustand Ihrer Umgebung nachzuvollziehen.

Identifizieren nicht konformer Ressourcen

Verwenden Sie folgende Informationen, um Ressourcen zu identifizieren, die mit der erstellten Richtlinienzuweisung nicht konform sind. Führen Sie den folgenden Code aus:

# Import specific methods and models from other libraries
from azure.mgmt.policyinsights._policy_insights_client import PolicyInsightsClient
from azure.mgmt.policyinsights.models import QueryOptions
from azure.identity import AzureCliCredential

# Set subscription
subId = "{subId}"

# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyInsightsClient(credential, subId, base_url=none)

# Set the query options
queryOptions = QueryOptions(filter="IsCompliant eq false and PolicyAssignmentId eq 'audit-vm-manageddisks'",apply="groupby((ResourceId))")

# Fetch 'latest' results for the subscription
results = policyInsightsClient.policy_states.list_query_results_for_subscription(policy_states_resource="latest", subscription_id=subId, query_options=queryOptions)

# Show results
print(results)

Ersetzen Sie {subId} durch das Abonnement, für das Sie die Konformitätsergebnisse für diese Richtlinienzuweisung anzeigen möchten. Eine Liste anderer Bereiche und Möglichkeiten zum Zusammenfassen der Daten finden Sie im Artikel zu Richtlinienstatusmethoden.

Ihre Ergebnisse sollten in etwa wie im folgenden Beispiel aussehen:

{
    'additional_properties': {
        '@odata.nextLink': None
    },
    'odatacontext': 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest',
    'odatacount': 12,
    'value': [{data}]
}

Die Ergebnisse entsprechen dem, was im Azure-Portal auf der Registerkarte Ressourcenkonformität einer Richtlinienzuweisung angezeigt wird.

Bereinigen von Ressourcen

Führen Sie den folgenden Befehl aus, um die Richtlinienzuweisung zu entfernen:

# Import specific methods and models from other libraries
from azure.mgmt.resource.policy import PolicyClient
from azure.identity import AzureCliCredential

# Set subscription
subId = "{subId}"

# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyClient(credential, subId, base_url=none)

# Delete the policy assignment
policyAssignment = policyClient.policy_assignments.delete("{scope}", "audit-vm-manageddisks")

# Show results
print(policyAssignment)

Ersetzen Sie {subId} durch Ihr Abonnement und {scope} durch den gleichen Bereich, den Sie auch für die Erstellung der Richtlinienzuweisung verwendet haben.

Nächste Schritte

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

Weitere Informationen zum Zuweisen von Richtliniendefinitionen, die die Konformität neuer Ressourcen überprüfen, finden Sie im folgenden Tutorial: