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:
- 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 einer neuen Konformitätsprüfung mit Azure PowerShell oder der REST-API finden Sie unter Bedarfsgesteuerter Auswertungsscan.
- Stellen Sie sicher, dass die Zuordnungsparameter und der Zuordnungsbereich ordnungsgemäß festgelegt sind.
- Ü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.
- Der Modus sollte für alle Ressourcentypen
- Stellen Sie sicher, dass der Bereich der Ressource nicht ausgeschlossen oder ausgenommen ist.
- 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. - 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
.
- Ü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. - 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:
- 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.
- Stellen Sie sicher, dass die Zuweisungsparameter und der Zuweisungsbereich ordnungsgemäß festgelegt und
enforcementMode
auf Enabled eingestellt ist. - Ü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.
- Der Modus sollte für alle Ressourcentypen
- Stellen Sie sicher, dass der Bereich der Ressource nicht ausgeschlossen oder ausgenommen ist.
- Stellen Sie sicher, dass die Ressourcennutzdaten mit der Richtlinienlogik übereinstimmt. Für die Verifizierung können Sie eine HAR-Ablaufverfolgung (HTTP-Archiv) erfassen oder die Eigenschaften der Azure Resource Manager-Vorlage (ARM-Vorlage) überprüfen.
- 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 viele 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. Sie haben aber auch die vom Benutzer zugewiesenen Identitätszuweisungen entfernt.
Lösung
Die Definitionen, die zuvor dieses Problem verursacht haben, werden als \[Deprecated\]
angezeigt und durch Richtliniendefinitionen ersetzt, die die Voraussetzungen verwalten, ohne die vom Benutzer zugewiesenen verwalteten Identitäten zu entfernen. Ein manueller Schritt ist erforderlich. Löschen Sie alle vorhandenen Richtlinienzuweisungen, die als \[Deprecated\]
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
auf dem Cluster installiert wird und die Kube-System-Pods nicht in aad-pod-identity
ausgeschlossen werden.
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. Dieses Setup bedeutet, dass jede Anforderung, die an den Metadatenendpunkt gerichtet ist, von NMI abgefangen wird, auch wenn aad-pod-identity
vom Pod 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 System Pods aus, die über die kubernetes.azure.com/managedby: aks
Bezeichnung im Kube-System Namespace in aad-pod-identity
verfügen, indem Sie die AzurePodIdentityException
CRD konfigurieren.
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 Microsoft.PolicyInsights
Ressourcenanbieter 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 vorherigen Fall kann die Fehlerbeschreibung anhand der von kube-apiserver
bereitgestellten Metriken für den Zugangswebhook überwacht werden. Falls 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 vom Szenario behält die Azure-Richtlinie die letzte bekannte Richtlinie auf dem Cluster bei und hält die Schutzläufe an Ort und Stelle.
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 X 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 ein Supportticket.