Problembehandlung mit Azure Policy

Beim Erstellen von Richtliniendefinitionen, dem Arbeiten mit SDKs oder beim Einrichten des Add-Ons Azure Policy für Kubernetes können Fehler auftreten. In diesem Artikel wird beschrieben, welche allgemeinen Fehler auftreten können, und es werden Empfehlungen gegeben, wie sie behoben werden können.

Suchen von Fehlerdetails

Der Speicherort der Fehlerdetails hängt davon ab, mit welchem Aspekt von Azure Policy Sie arbeiten.

  • Wenn Sie mit einer benutzerdefinierten Richtlinie arbeiten, verwenden Sie das Azure-Portal, um Lintingfeedback zum Schema zu erhalten, oder überprüfen Sie die resultierenden Konformitätsdaten, um festzustellen, wie Ressourcen ausgewertet wurden.
  • Wenn Sie mit einem der verschiedenen SDKs arbeiten, bietet das SDK Details dazu, warum bei der Funktion ein Fehler auftrat.
  • Wenn Sie mit dem Add-On für Kubernetes arbeiten, beginnen Sie mit der Protokollierung im Cluster.

Allgemeine Fehler

Szenario: Alias nicht gefunden

Problem

In einer Richtliniendefinition wird ein falscher oder nicht vorhandener Alias verwendet. Azure Policy verwendet Aliase für die Zuordnung zu Azure Resource Manager-Eigenschaften.

Ursache

In einer Richtliniendefinition wird ein falscher oder nicht vorhandener Alias verwendet.

Lösung

Überprüfen Sie zunächst, ob die Resource Manager-Eigenschaft über einen Alias verfügt. Verwenden Sie die Azure Policy-Erweiterung für Visual Studio Code oder das SDK, um nach verfügbaren Aliasen zu suchen. Wenn der Alias für eine Resource Manager-Eigenschaft nicht vorhanden ist, erstellen Sie ein Supportticket.

Szenario: Auswertungsdetails nicht auf dem neuesten Stand

Problem

Eine Ressource weist den Status Nicht gestartet auf, oder die Konformitätsdetails sind nicht aktuell.

Ursache

Das Zuweisen einer neuen Richtlinie oder Initiative dauert etwa fünf Minuten. Neue oder aktualisierte Ressourcen im Bereich einer vorhandenen Zuweisung werden etwa 15 Minuten später verfügbar. Eine standardmäßige Konformitätsprüfung erfolgt alle 24 Stunden. Weitere Informationen finden Sie unter Auswertungsauslöser.

Lösung

Warten Sie zuerst den entsprechenden Zeitraum ab, bis eine Auswertung abgeschlossen ist und die Konformitätsergebnisse im Azure-Portal oder SDK zur Verfügung stehen. Informationen zum Starten eines neuen Auswertungsscans mit Azure PowerShell oder der REST-API finden Sie unter Bedarfsgesteuerter Auswertungsscan.

Szenario: Konformität nicht wie erwartet

Problem

Eine Ressource weist nicht den Auswertungszustand (Konform oder Nicht konform) auf, der für diese Ressource erwartet wird.

Ursache

Die Ressource befindet sich nicht im richtigen Bereich für die Richtlinienzuweisung, oder die Richtliniendefinition funktioniert nicht wie vorgesehen.

Lösung

Befolgen Sie diese Schritte zur Problembehandlung bei der Richtliniendefinition:

  1. Warten Sie zuerst den entsprechenden Zeitraum ab, bis eine Auswertung abgeschlossen ist und die Konformitätsergebnisse im Azure-Portal oder SDK zur Verfügung stehen.

  2. Informationen zum Starten einer neuen Konformitätsprüfung mit Azure PowerShell oder der REST-API finden Sie unter Bedarfsgesteuerter Auswertungsscan.

  3. Stellen Sie sicher, dass die Zuordnungsparameter und der Zuordnungsbereich ordnungsgemäß festgelegt sind.

  4. Überprüfen Sie den Modus der Richtliniendefinition:

    • Der Modus sollte für alle Ressourcentypen all sein.
    • Der Modus lautet indexed, wenn bei der Richtliniendefinition eine Überprüfung auf Tags oder den Ort durchgeführt wird.
  5. Stellen Sie sicher, dass der Bereich der Ressource nicht ausgeschlossen oder ausgenommen ist.

  6. Wenn die Konformität für eine Richtlinienzuweisung mit 0/0 Ressourcen angezeigt wird, wurden keine Ressourcen für die Anwendung innerhalb des Zuweisungsbereichs ermittelt. Überprüfen Sie die Richtliniendefinition und den Zuweisungsbereich.

  7. Bei einer nicht konformen Ressource, bei der Konformität erwartet wurde, informieren Sie sich über das Ermitteln der Ursachen für Nichtkonformität. Der Vergleich der Definition mit dem ausgewerteten Eigenschaftswert gibt an, warum eine Ressource nicht konform war.

    • Wenn der Zielwert falsch ist, überarbeiten Sie die Richtliniendefinition.
    • Wenn der aktuelle Wert falsch ist, überprüfen Sie die Ressourcennutzlast mit resources.azure.com.
  8. Überprüfen Sie für eine Ressourcenanbietermodus-Definition, die einen RegEx-Zeichenfolgenparameter unterstützt (wie Microsoft.Kubernetes.Data und die integrierte Definition „Containerimages dürfen nur aus vertrauenswürdigen Registrierungen bereitgestellt werden“), dass der RegEx-Zeichenfolgenparameter korrekt ist.

  9. Weitere häufige Probleme und deren Lösung finden Sie unter Problembehandlung: Erzwingung nicht wie erwartet.

Wenn Sie immer noch ein Problem mit Ihrer duplizierten und angepassten integrierten Richtliniendefinition oder benutzerdefinierten Definition haben, erstellen Sie ein Supportticket unter Erstellen einer Richtlinie, um das Problem ordnungsgemäß weiterzuleiten.

Szenario: Erzwingung nicht wie erwartet

Problem

Für eine Ressource, für die eine Aktion von Azure Policy erwartet wird, gibt es keinen Eintrag im Azure-Aktivitätsprotokoll.

Ursache

Für die Richtlinienzuweisung ist die Einstellung enforcementMode mit Disabled konfiguriert. Bei deaktiviertem enforcementMode wird die Richtlinienauswirkung nicht erzwungen, und es erfolgt kein Eintrag im Aktivitätsprotokoll.

Lösung

Führen Sie die folgenden Schritte zur Problembehandlung bei der Erzwingung Ihrer Richtlinienzuweisung aus:

  1. Warten Sie zuerst den entsprechenden Zeitraum ab, bis eine Auswertung abgeschlossen ist und die Konformitätsergebnisse im Azure-Portal oder SDK zur Verfügung stehen.

  2. Informationen zum Starten einer neuen Konformitätsprüfung mit Azure PowerShell oder der REST-API finden Sie unter Bedarfsgesteuerter Auswertungsscan.

  3. Stellen Sie sicher, dass die Zuweisungsparameter und der Zuweisungsbereich ordnungsgemäß festgelegt und enforcementMode auf Enabled eingestellt ist.

  4. Überprüfen Sie den Modus der Richtliniendefinition:

    • Der Modus sollte für alle Ressourcentypen all sein.
    • Der Modus lautet indexed, wenn bei der Richtliniendefinition eine Überprüfung auf Tags oder den Ort durchgeführt wird.
  5. Stellen Sie sicher, dass der Bereich der Ressource nicht ausgeschlossen oder ausgenommen ist.

  6. Stellen Sie sicher, dass die Ressourcennutzdaten mit der Richtlinienlogik übereinstimmt. Dazu können Sie eine HAR-Ablaufverfolgung (HTTP-Archiv) erfassen oder die Eigenschaften der Azure Resource Manager-Vorlage (ARM-Vorlage) überprüfen.

  7. Informationen zu weiteren häufigen Probleme und deren Lösung finden Sie unter Problembehandlung: Konformität nicht wie erwartet.

Wenn Sie immer noch ein Problem mit Ihrer duplizierten und angepassten integrierten Richtliniendefinition oder benutzerdefinierten Definition haben, erstellen Sie ein Supportticket unter Erstellen einer Richtlinie, um das Problem ordnungsgemäß weiterzuleiten.

Szenario: Von Azure Policy abgelehnt

Problem

Das Erstellen oder Aktualisieren einer Ressource wird abgelehnt.

Ursache

Eine Richtlinienzuweisung für den Bereich, in dem sich die neue oder aktualisierte Ressource befindet, erfüllt die Kriterien einer Richtliniendefinition mit einer deny-Auswirkung. Ressourcen, die diesen Definitionen entsprechen, können nicht erstellt oder aktualisiert werden.

Lösung

Die Fehlermeldung bei einer Richtlinienzuweisung vom Typ „deny“ umfasst die Richtliniendefinition und die Richtlinienzuweisungs-IDs. Wenn die Fehlerinformationen in der Nachricht fehlen, stehen diese auch im Aktivitätsprotokoll zur Verfügung. Diese Informationen geben Ihnen weitere Details, um die Ressourceneinschränkungen zu verstehen und die Ressourceneigenschaften in der Anforderung so anzupassen, dass sie zulässigen Werten entsprechen.

Szenario: Definition für mehrere Ressourcentypen

Problem

Bei der Erstellung oder Aktualisierung tritt im Rahmen der Überprüfung einer Richtliniendefinition mit mehreren Ressourcentypen der folgende Fehler auf:

The policy definition '{0}' targets multiple resource types, but the policy rule is authored in a way that makes the policy not applicable to the target resource types '{1}'.

Ursache

Die Richtliniendefinitionsregel enthält mindestens eine Bedingung, die von den Zielressourcentypen nicht ausgewertet wird.

Lösung

Achten Sie bei Verwendung eines Alias darauf, dass der Alias nur anhand des Ressourcentyps ausgewertet wird, zu dem er gehört. Fügen Sie hierzu davor eine Typbedingung hinzu. Alternativ können Sie die Richtliniendefinition in mehrere Definitionen aufteilen, um zu vermeiden, dass mehrere Ressourcentypen als Ziel verwendet werden.

Szenario: Grenzwert für Abonnements überschritten

Problem

Beim Abrufen der Konformitätsdaten für Richtlinienzuweisungen wird im Azure-Portal auf der Seite zur Konformität eine Fehlermeldung angezeigt.

Ursache

Die Anzahl von Abonnements in den ausgewählten Bereichen der Anforderung hat den Grenzwert von 5.000 Abonnements überschritten. Die Konformitätsergebnisse werden unter Umständen teilweise angezeigt.

Lösung

Wählen Sie einen präziseren Bereich mit weniger untergeordneten Abonnements aus, um die vollständigen Ergebnisse anzuzeigen.

Vorlagenfehler

Szenario: Von Policy unterstützte Funktionen werden von der Vorlage verarbeitet

Problem

Azure Policy unterstützt eine Reihe von ARM-Vorlagenfunktionen und Funktionen, die nur in einer Richtliniendefinition verfügbar sind. Resource Manager verarbeitet diese Funktionen im Rahmen einer Bereitstellung und nicht als Teil einer Richtliniendefinition.

Ursache

Die Verwendung unterstützter Funktionen wie parameter() oder resourceGroup() führt dazu, dass das verarbeitete Ergebnis der Funktion zum Zeitpunkt der Bereitstellung festgelegt wird, anstatt die Funktion von der Richtliniendefinition und der Azure Policy-Engine verarbeiten zu lassen.

Lösung

Um eine Funktion so zu übergeben, dass sie Teil einer Richtliniendefinition ist, versehen Sie die gesamte Zeichenfolge mit dem Escapezeichen [, sodass die Eigenschaft folgendermaßen aussieht: [[resourceGroup().tags.myTag]. Das Escapezeichen bewirkt, dass Resource Manager den Wert beim Verarbeiten der Vorlage als Zeichenfolge behandelt. Azure Policy fügt die Funktion dann in die Richtliniendefinition ein, sodass sie wie erwartet dynamisch ist. Weitere Informationen finden Sie unter Syntax und Ausdrücke in Azure Resource Manager-Vorlagen.

Add-On für Kubernetes-Installationsfehler

Szenario: Installation mithilfe eines Helm-Charts aufgrund eines Kennwortfehlers nicht möglich

Problem

Der Befehl helm install azure-policy-addon gibt einen der folgenden Fehler zurück:

  • !: event not found
  • Error: failed parsing --set data: key "<key>" has no value (cannot end with ,)

Ursache

Das generierte Kennwort enthält ein Komma (,), das beim Helm-Chart eine Aufteilung bewirkt.

Lösung

Versehen Sie das Komma (,) im Kennwortwert beim Ausführen von helm install azure-policy-addon mit einem umgekehrten Schrägstrich (\) als Escapezeichen.

Szenario: Installation mithilfe eines Helm-Charts aufgrund eines bereits vorhandenen Namens nicht möglich

Problem

Der Befehl helm install azure-policy-addon gibt den folgenden Fehler zurück:

  • Error: cannot re-use a name that is still in use

Ursache

Das Helm-Chart mit dem Namen azure-policy-addon wurde bereits installiert oder teilweise installiert.

Lösung

Befolgen Sie die Anweisungen zum Entfernen des Azure Policy für Kubernetes-Add-Ons, und führen Sie dann den Befehl helm install azure-policy-addon erneut aus.

Szenario: Die vom Benutzer zugewiesenen Identitäten auf dem virtuellen Azure-Computer werden durch vom System zugewiesene, verwaltete Identitäten ersetzt.

Problem

Nach der Zuweisung von Richtlinieninitiativen für die Gastkonfiguration zu Überwachungseinstellungen auf einem Computer werden dem Computer zugewiesene verwaltete Identitäten, die dem Benutzer zugewiesen wurden, nicht mehr zugewiesen. Es wird nur eine vom System zugewiesene verwaltete Identität zugewiesen.

Ursache

Die Richtliniendefinitionen, die zuvor in den Definitionen von DeployIfNotExists für die Gastkonfiguration verwendet wurden, stellten sicher, dass dem Computer eine vom System zugewiesene Identität zugewiesen wird, entfernten aber auch vom Benutzer zugewiesene Identitätszuweisungen.

Lösung

Die Definitionen, die zuvor dieses Problem verursacht haben, werden als [Veraltet] angezeigt und durch Richtliniendefinitionen ersetzt, die die Voraussetzungen verwalten, ohne die vom Benutzer zugewiesene verwaltete Identität zu entfernen. Ein manueller Schritt ist erforderlich. Löschen Sie alle vorhandenen Richtlinienzuweisungen, die als [Veraltet] gekennzeichnet sind, und ersetzen Sie sie durch die aktualisierte erforderliche Richtlinieninitiative und Richtliniendefinitionen, die denselben Namen wie das Original aufweisen.

Eine ausführliche Darstellung finden Sie im Blogbeitrag Important change released for Guest Configuration audit policies (Wichtige Änderung für Überwachungsrichtlinien für Gastkonfigurationen).

Add-On für allgemeine Kubernetes-Fehler

Szenario: Das Add-On kann den Dienstendpunkt von Azure Policy aufgrund von Ausgangseinschränkungen nicht erreichen

Problem

Das Add-On kann den Dienstendpunkt von Azure Policy nicht erreichen und gibt einen der folgenden Fehler zurück:

  • failed to fetch token, service not reachable
  • Error getting file "Get https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml: dial tcp 151.101.228.133.443: connect: connection refused

Ursache

Dieses Problem tritt auf, wenn ein Clusterausgang gesperrt ist.

Lösung

Stellen Sie sicher, dass die Domänen und Ports im folgenden Artikel geöffnet sind:

Szenario: Das Add-On kann den Dienstendpunkt von Azure Policy aufgrund der Konfiguration von aad-pod-identity nicht erreichen

Problem

Das Add-On kann den Dienstendpunkt von Azure Policy nicht erreichen und gibt einen der folgenden Fehler zurück:

  • azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://gov-prod-policy-data.trafficmanager.net/checkDataPolicyCompliance?api-version=2019-01-01-preview: StatusCode=404
  • adal: Refresh request failed. Status Code = '404'. Response body: getting assigned identities for pod kube-system/azure-policy-8c785548f-r882p in CREATED state failed after 16 attempts, retry duration [5]s, error: <nil>

Ursache

Dieser Fehler tritt auf, wenn aad-pod-identity im Cluster installiert ist und Pods des Typs kube-system in aad-pod-identity nicht ausgeschlossen sind.

Die Komponente aad-pod-identity von NMI-Pods (Node Managed Identity) ändert die iptables der Knoten so, dass Aufrufe für den Metadatenendpunkt von Azure-Instanzen abgefangen werden. Diese Einrichtung bedeutet, dass jede Anforderung, die an den Metadatenendpunkt gerichtet ist, von NMI abgefangen wird, auch wenn der Pod von aad-pod-identity nicht verwendet wird. Die CRD (CustomResourceDefinition) AzurePodIdentityException kann so konfiguriert werden, dass aad-pod-identity darüber informiert wird, dass an den Metadatenendpunkt gerichtete Anforderungen, die von einem Pod stammen, der in der CRD definierte Bezeichnungen abgleicht, ohne Verarbeitung in NMI über einen Proxy zu senden sind.

Lösung

Schließen Sie die Systempods mit der Bezeichnung kubernetes.azure.com/managedby: aks im Namespace kube-system in aad-pod-identity durch Konfigurieren der CRD AzurePodIdentityException aus.

Weitere Informationen finden Sie unter Disable the Azure Active Directory (Azure AD) pod identity for a specific pod/application (Deaktivieren von „aad-pod-identity“ für einen bestimmten Pod oder eine bestimmte Anwendung).

Informationen zum Konfigurieren einer Ausnahme finden Sie in diesem Beispiel:

apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: mic-exception
  namespace: default
spec:
  podLabels:
    app: mic
    component: mic
---
apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: aks-addon-exception
  namespace: kube-system
spec:
  podLabels:
    kubernetes.azure.com/managedby: aks

Szenario: Ressourcenanbieter ist nicht registriert

Problem

Das Add-On kann den Dienstendpunkt von Azure Policy erreichen, in den Add-On-Protokollen ist jedoch einer der folgenden Fehler enthalten:

  • The resource provider 'Microsoft.PolicyInsights' is not registered in subscription '{subId}'. See https://aka.ms/policy-register-subscription for how to register subscriptions.

  • policyinsightsdataplane.BaseClient#CheckDataPolicyCompliance: Failure responding to request: StatusCode=500 -- Original Error: autorest/azure: Service returned an error. Status=500 Code="InternalServerError" Message="Encountered an internal server error.

Ursache

Der Ressourcenanbieter „Microsoft.PolicyInsights“ ist nicht registriert. Er muss für das Add-On registriert werden, um Richtliniendefinitionen zu erhalten und Daten zur Konformität zurückzugeben.

Lösung

Registrieren Sie den Ressourcenanbieter „Microsoft.PolicyInsights“ in Ihrem Clusterabonnement. Eine Anleitung finden Sie unter Registrieren eines Ressourcenanbieters.

Szenario: Das Abonnement ist deaktiviert

Problem

Das Add-On kann den Dienstendpunkt von Azure Policy erreichen, es wird aber der folgende Fehler angezeigt:

The subscription '{subId}' has been disabled for azure data-plane policy. Please contact support.

Ursache

Dieser Fehler bedeutet, dass das Abonnement als problematisch eingestuft wurde und das Featureflag Microsoft.PolicyInsights/DataPlaneBlocked hinzugefügt wurde, um das Abonnement zu sperren.

Lösung

Wenden Sie sich an das für das Feature zuständige Team, um dieses Problem zu untersuchen und zu beheben.

Szenario: Definitionen in der Kategorie „Gastkonfiguration“ können nicht über das Azure-Portal dupliziert werden

Problem

Wenn Sie versuchen, eine benutzerdefinierte Richtliniendefinition über die Azure-Portal-Seite für Richtliniendefinitionen zu erstellen, wählen Sie die Schaltfläche „Definition duplizieren“ aus. Nach dem Zuweisen der Richtlinie werden Sie feststellen, dass Computer nicht konform (NonCompliant) sind, da keine Gastkonfigurationszuweisungsressource vorhanden ist.

Ursache

Die Gastkonfiguration basiert auf benutzerdefinierten Metadaten, die Richtliniendefinitionen beim Erstellen von Gastkonfigurationszuweisungsressourcen hinzugefügt werden. Mit der Aktivität „Definition duplizieren“ im Azure-Portal werden keine benutzerdefinierten Metadaten kopiert.

Lösung

Anstatt das Portal zu verwenden, duplizieren Sie die Richtliniendefinition mithilfe der Policy Insights-API. Das folgende PowerShell-Beispiel stellt eine Option bereit.

# duplicates the built-in policy which audits Windows machines for pending reboots
$def = Get-AzPolicyDefinition -id '/providers/Microsoft.Authorization/policyDefinitions/4221adbc-5c0f-474f-88b7-037a99e6114c' | % Properties
New-AzPolicyDefinition -name (new-guid).guid -DisplayName "$($def.DisplayName) (Copy)" -Description $def.Description -Metadata ($def.Metadata | convertto-json) -Parameter ($def.Parameters | convertto-json) -Policy ($def.PolicyRule | convertto-json -depth 15)

Szenario: Kubernetes-Ressource wird während eines Verbindungsfehlers trotz Richtlinienzuweisung vom Typ „deny“ erstellt

Problem

Bei einem Verbindungsfehler im Kubernetes-Cluster kann die Auswertung für neu erstellte oder aktualisierte Ressourcen aufgrund des Fail-Open-Verhaltens von Gatekeeper umgangen werden.

Ursache

Das Fail-Open-Modell von Gatekeeper wurde basierend auf Communityfeedback so entworfen. Weitere Informationen zu den Gründen für dieses Verhalten finden Sie in der Gatekeeper-Dokumentation: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Lösung

Im obigen Fall kann die Fehlerbeschreibung anhand der von kube-apiserver bereitgestellten Metriken für den Zugangswebhook überwacht werden. Trotz der Tatsache, dass die Auswertung beim Erstellen umgangen und das Objekt erstellt wurde, wird die Ressource bei der Überprüfung der Azure Policy-Konformität als nicht konform für Kunden gekennzeichnet.

Unabhängig davon behält Azure Policy in einem solchen Szenario die letzte bekannte Richtlinie im Cluster und die Schutzmaßnahmen bei.

Nächste Schritte

Wenn Ihr Problem nicht in diesem Artikel aufgeführt ist oder Sie es nicht beheben können, können Sie in einem der folgenden Kanäle Unterstützung erhalten:

  • Erhalten Sie Antworten von Experten über Microsoft Q&A (Fragen und Antworten).
  • Verbinden mit @AzureSupport. Dies ist die offizielle Microsoft Azure-Ressource auf Twitter zur Verbesserung der Benutzerfreundlichkeit durch Verbinden der Azure-Community mit den richtigen Ressourcen: Antworten, Support und Experten.
  • Wenn Sie weiterhin Hilfe benötigen, besuchen Sie die Azure-Support-Website, und senden Sie eine Supportanfrage.