Fouten met gebruik van Azure Policy oplossen

Wanneer u beleidsdefinities maakt, werkt met SDK's of de Azure Policy voor Kubernetes-invoegtoepassing instelt, kunnen er fouten optreden. In dit artikel worden verschillende algemene fouten beschreven die kunnen optreden en worden manieren voorgesteld om ze op te lossen.

Foutdetails vinden

De locatie van de foutdetails is afhankelijk van het aspect van Azure Policy waar u mee werkt.

  • Als u met een aangepast beleid werkt, gaat u naar de Azure-portal om linting-feedback over het schema te krijgen of bekijkt u de resulterende nalevingsgegevens om te zien hoe resources zijn geëvalueerd.
  • Als u met een van de vele SDK's werkt, geeft de SDK details over waarom de functie is mislukt.
  • Als u met de invoegtoepassing voor Kubernetes werkt, begint u met de logboekregistratie in het cluster.

Algemene fouten

Scenario: Alias niet gevonden

Probleem

Een onjuiste of niet-bestaande alias wordt gebruikt in een beleidsdefinitie. Azure Policy maakt gebruik van aliassen om toe te wijzen aan Azure Resource Manager-eigenschappen.

Oorzaak

Een onjuiste of niet-bestaande alias wordt gebruikt in een beleidsdefinitie.

Oplossing

Controleer eerst of de eigenschap Resource Manager een alias heeft. Als u de beschikbare aliassen wilt opzoeken, gaat u naar Azure Policy-extensie voor Visual Studio Code of de SDK. Als de alias voor een eigenschap Resource Manager niet bestaat, maakt u een ondersteuningsticket.

Scenario: evaluatiedetails zijn niet up-to-date

Probleem

Een resource heeft de status Niet gestart of de nalevingsgegevens zijn niet actueel.

Oorzaak

Het duurt ongeveer vijf minuten om een nieuw beleid of initiatieftoewijzing toe te passen. Nieuwe of bijgewerkte resources binnen het bereik van een bestaande toewijzing worden binnen ongeveer 15 minuten beschikbaar. Een standaard nalevingsscan vindt iedere 24 uur plaats. Zie Evaluatietriggers voor meer informatie.

Oplossing

Wacht eerst de juiste hoeveelheid tijd totdat een evaluatie is voltooid en de nalevingsresultaten beschikbaar zijn in de Azure-portal of de SDK. Als u een nieuwe evaluatiescan wilt beginnen voor Azure PowerShell of de REST API, raadpleegt u de evaluatiescan op aanvraag.

Scenario: de naleving is niet zoals verwacht

Probleem

Een resource bevindt zich in de compatibele noch de niet-compatibele evaluatiestatus die voor de resource wordt verwacht.

Oorzaak

De resource bevindt zich niet in het juiste bereik voor de beleidstoewijzing of de beleidsdefinitie werkt niet zoals bedoeld.

Oplossing

Ga als volgt te werk om problemen met uw beleidsdefinitie op te lossen:

  1. Wacht de juiste hoeveelheid tijd totdat een evaluatie is voltooid en de nalevingsresultaten beschikbaar zijn in de Azure-portal of SDK.

  2. Als u een nieuwe evaluatiescan wilt beginnen voor Azure PowerShell of de REST API, raadpleegt u de evaluatiescan op aanvraag.

  3. Zorg ervoor dat de toewijzingsparameters en het toewijzingsbereik juist zijn ingesteld.

  4. Controleer de beleidsdefinitiemodus:

    • De modus moet voor alle resourcetypen zijn all .
    • De modus moet zijn indexed als de beleidsdefinitie controleert op tags of locatie.
  5. Zorg ervoor dat het bereik van de resource niet is uitgesloten of uitgesloten.

  6. Als naleving voor een beleidstoewijzing resources weergeeft 0/0 , zijn er geen resources bepaald die van toepassing zijn binnen het toewijzingsbereik. Controleer zowel de beleidsdefinitie als het toewijzingsbereik.

  7. Zie Redenen voor niet-naleving bepalen voor een niet-compatibele resource die naar verwachting compatibel moet zijn. De vergelijking van de definitie met de waarde van de geëvalueerde eigenschap geeft aan waarom een resource niet compatibel was.

    • Als de doelwaarde onjuist is, wijzigt u de beleidsdefinitie.
    • Als de huidige waarde onjuist is, valideert u de nettolading van de resource via resources.azure.com.
  8. Voor een resourceprovidermodusdefinitie die ondersteuning biedt voor een RegEx-tekenreeksparameter (zoals Microsoft.Kubernetes.Data en de ingebouwde definitie 'Containerinstallatiekopieën moeten alleen worden geïmplementeerd vanuit vertrouwde registers'), controleert u of de RegEx-tekenreeksparameter juist is.

  9. Zie Problemen oplossen: naleving niet zoals verwacht voor andere veelvoorkomende problemen en oplossingen.

Als u nog steeds een probleem hebt met uw gedupliceerde en aangepaste, ingebouwde beleidsdefinitie of aangepaste definitie, maakt u een ondersteuningsticket onder Beleid creëren om het probleem correct te routeren.

Scenario: beleidsafdwinging niet zoals verwacht

Probleem

Een resource waarvoor u verwacht Azure Policy actie moet ondernemen, wordt niet uitgevoerd en er is geen vermelding in het Azure-activiteitenlogboek.

Oorzaak

De beleidstoewijzing is geconfigureerd voor een instelling enforcementMode van Uitgeschakeld. Terwijl enforcementMode is uitgeschakeld, wordt het beleidseffect niet afgedwongen en is er geen vermelding in het activiteitenlogboek.

Oplossing

Los afdwingen van uw beleidstoewijzing als volgt op:

  1. Wacht eerst de juiste hoeveelheid tijd totdat een evaluatie is voltooid en de nalevingsresultaten beschikbaar zijn in de Azure-portal of de SDK.

  2. Als u een nieuwe evaluatiescan wilt beginnen voor Azure PowerShell of de REST API, raadpleegt u de evaluatiescan op aanvraag.

  3. Zorg ervoor dat de toewijzingsparameters en het toewijzingsbereik juist zijn ingesteld en dat enforcementMode is ingeschakeld.

  4. Controleer de beleidsdefinitiemodus:

    • De modus moet voor alle resourcetypen zijn all .
    • De modus moet zijn indexed als de beleidsdefinitie controleert op tags of locatie.
  5. Zorg ervoor dat het bereik van de resource niet is uitgesloten of uitgesloten.

  6. Controleer of de nettolading van de resource overeenkomt met de beleidslogica. U kunt dit doen door HTTP Archive-tracering (HAR) vast te leggen of de eigenschappen van de Azure Resource Manager-sjabloon (ARM-sjabloon) te bekijken.

  7. Raadpleeg Problemen oplossen voor andere veelvoorkomende problemen en oplossingen : Naleving niet zoals verwacht.

Als u nog steeds een probleem hebt met uw gedupliceerde en aangepaste, ingebouwde beleidsdefinitie of aangepaste definitie, maakt u een ondersteuningsticket onder Beleid creëren om het probleem correct te routeren.

Scenario: geweigerd door Azure Policy

Probleem

Het maken of bijwerken van een resource wordt geweigerd.

Oorzaak

Een beleidstoewijzing voor het bereik van uw nieuwe of bijgewerkte resource voldoet aan de criteria van een beleidsdefinitie met een weigeringseffect. De resources die aan deze definities voldoen, kunnen niet worden gemaakt of bijgewerkt.

Oplossing

Het foutbericht van een weigeringsbeleidstoewijzing bevat beleidsdefinitie- en beleidstoewijzings-id's. Als de foutinformatie in het bericht wordt gemist, is het ook beschikbaar in het activiteitenlogboek. Gebruik dit voor meer informatie om inzicht te krijgen in de resourcebeperkingen en om de resource-eigenschappen in uw aanvraag aan te passen zodat deze overeenkomen met toegestane waarden.

Scenario: definitie is gericht op meerdere brontypen

Probleem

Een beleidsdefinitie met meerdere brontypen mislukt tijdens het maken of bijwerken met de volgende fout:

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}'.

Oorzaak

De regel voor beleidsdefinities bevat een of meer voorwaarden die niet worden geëvalueerd door de doelbrontypen.

Oplossing

Als een alias wordt gebruikt, moet u ervoor zorgen dat de alias alleen wordt geëvalueerd op basis van het resourcetype waartoe deze behoort door een typevoorwaarde toe te voegen voordat deze wordt gebruikt. Een alternatief is het splitsen van de beleidsdefinitie in meerdere definities om te voorkomen dat er meerdere brontypen worden gebruikt.

Scenario: abonnementslimiet overschreden

Probleem

Er wordt een foutbericht weergegeven op de nalevingspagina in Azure Portal bij het ophalen van naleving voor beleidstoewijzingen.

Oorzaak

Het aantal abonnementen onder de geselecteerde bereiken in de aanvraag heeft de limiet van 5000 abonnementen overschreden. De nalevingsresultaten kunnen gedeeltelijk worden weergegeven.

Oplossing

Selecteer een gedetailleerder bereik met minder onderliggende abonnementen om de volledige resultaten te bekijken.

Sjabloonfouten

Scenario: Door beleid ondersteunde functies die per sjabloon worden verwerkt

Probleem

Azure Policy ondersteunt een aantal ARM-sjabloonfuncties en -functies die alleen beschikbaar zijn in een beleidsdefinitie. Resource Manager verwerkt deze functies als onderdeel van een implementatie in plaats van als onderdeel van een beleidsdefinitie.

Oorzaak

Het gebruik van ondersteunde functies, zoals parameter() of resourceGroup(), resulteert in het verwerkte resultaat van de functie tijdens de implementatie in plaats van dat de functie voor de beleidsdefinitie en De Azure Policy-engine kan worden verwerkt.

Oplossing

Als u een functie wilt doorgeven als onderdeel van een beleidsdefinitie, escapet u de hele tekenreeks zodat [ de eigenschap er zo [[resourceGroup().tags.myTag]uitziet. Het escapeteken zorgt ervoor dat Resource Manager de waarde als een tekenreeks behandelt wanneer deze de sjabloon verwerkt. Azure Policy plaatst de functie vervolgens in de beleidsdefinitie, zodat deze dynamisch kan zijn zoals verwacht. Zie Syntaxis en expressies in Azure Resource Manager-sjablonen voor meer informatie.

Invoegtoepassing voor Kubernetes-installatiefouten

Scenario: Installatie met behulp van een Helm-grafiek mislukt vanwege een wachtwoordfout

Probleem

De helm install azure-policy-addon opdracht mislukt en retourneert een van de volgende fouten:

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

Oorzaak

Het gegenereerde wachtwoord bevat een komma (,), waarop de Helm-grafiek wordt gesplitst.

Oplossing

Wanneer u uitvoert helm install azure-policy-addon, escapet u de komma (,) in de wachtwoordwaarde met een backslash (\).

Scenario: Installatie met behulp van een Helm-grafiek mislukt omdat de naam al bestaat

Probleem

De helm install azure-policy-addon opdracht mislukt en retourneert de volgende fout:

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

Oorzaak

De Helm-grafiek met de naam azure-policy-addon is al geïnstalleerd of gedeeltelijk geïnstalleerd.

Oplossing

Volg de instructies om de invoegtoepassing Azure Policy voor Kubernetes te verwijderen en voer de helm install azure-policy-addon opdracht opnieuw uit.

Scenario: door de gebruiker toegewezen identiteiten van virtuele Azure-machines worden vervangen door door het systeem toegewezen beheerde identiteiten

Probleem

Nadat u initiatieven voor gastconfiguratiebeleid hebt toegewezen om instellingen op een computer te controleren, worden de door de gebruiker toegewezen beheerde identiteiten die aan de machine zijn toegewezen, niet meer toegewezen. Alleen een door het systeem toegewezen beheerde identiteit wordt toegewezen.

Oorzaak

De beleidsdefinities die eerder werden gebruikt in definities van gastconfiguratie DeployIfNotExists, zorgden ervoor dat een door het systeem toegewezen identiteit aan de computer is toegewezen, maar ook de door de gebruiker toegewezen identiteitstoewijzingen zijn verwijderd.

Oplossing

De definities die dit probleem eerder hebben veroorzaakt, worden weergegeven als [Afgeschaft], en ze worden vervangen door beleidsdefinities die vereisten beheren zonder door de gebruiker toegewezen beheerde identiteiten te verwijderen. Er is een handmatige stap vereist. Verwijder alle bestaande beleidstoewijzingen die zijn gemarkeerd als [Afgeschaft], en vervang deze door het bijgewerkte initiatief voor vereistenbeleid en beleidsdefinities met dezelfde naam als het origineel.

Zie het blogbericht Belangrijke wijziging die is uitgebracht voor controlebeleid voor gastconfiguratie voor een gedetailleerd verhaal.

Invoegtoepassing voor algemene Kubernetes-fouten

Scenario: De invoegtoepassing kan het Azure Policy-service-eindpunt niet bereiken vanwege beperkingen voor uitgaand verkeer

Probleem

De invoegtoepassing kan het Azure Policy-service-eindpunt niet bereiken en retourneert een van de volgende fouten:

  • 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

Oorzaak

Dit probleem treedt op wanneer het uitgaand verkeer van een cluster is vergrendeld.

Oplossing

Zorg ervoor dat de domeinen en poorten die in het volgende artikel worden genoemd, open zijn:

Scenario: De invoegtoepassing kan het Azure Policy-service-eindpunt niet bereiken vanwege de configuratie van de aad-pod-identity

Probleem

De invoegtoepassing kan het Azure Policy-service-eindpunt niet bereiken en retourneert een van de volgende fouten:

  • 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>

Oorzaak

Deze fout treedt op wanneer aad-pod-identity is geïnstalleerd op het cluster en de kube-system-pods niet worden uitgesloten in aad-pod-identity.

De AAD-pod-identity component Node Managed Identity (NMI)-pods wijzigen de iptables van de knooppunten om aanroepen naar het metagegevenseindpunt van het Azure-exemplaar te onderscheppen. Deze instelling betekent dat elke aanvraag die naar het eindpunt voor metagegevens wordt gedaan, wordt onderschept door NMI, zelfs als de pod geen aad-pod-identity gebruikt. De AzurePodIdentityException CustomResourceDefinition (CRD) kan worden geconfigureerd om aad-pod-identity te informeren dat aanvragen naar een metagegevenseindpunt dat afkomstig is van een pod die overeenkomt met de labels die zijn gedefinieerd in de CRD, moeten worden geproxied zonder verwerking in NMI.

Oplossing

Sluit de systeempods met het kubernetes.azure.com/managedby: aks label in kube-system-naamruimte in aad-pod-identity uit door de CRD van AzurePodIdentityException te configureren.

Zie De Azure Ad-podidentiteit (Azure Active Directory) uitschakelen voor een specifieke pod/toepassing voor meer informatie.

Als u een uitzondering wilt configureren, volgt u dit voorbeeld:

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

Scenario: de resourceprovider is niet geregistreerd

Probleem

De invoegtoepassing kan het Azure Policy-service-eindpunt bereiken, maar in de invoegtoepassingslogboeken wordt een van de volgende fouten weergegeven:

  • 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.

Oorzaak

De resourceprovider Microsoft.PolicyInsights is niet geregistreerd. Deze moet worden geregistreerd voor de invoegtoepassing om beleidsdefinities op te halen en nalevingsgegevens te retourneren.

Oplossing

Registreer de resourceprovider Microsoft.PolicyInsights in het clusterabonnement. Zie Een resourceprovider registreren voor instructies.

Scenario: Het abonnement is uitgeschakeld

Probleem

De invoegtoepassing kan het Azure Policy-service-eindpunt bereiken, maar de volgende fout wordt weergegeven:

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

Oorzaak

Deze fout betekent dat het abonnement problematisch is en dat de functievlag Microsoft.PolicyInsights/DataPlaneBlocked is toegevoegd om het abonnement te blokkeren.

Oplossing

Neem contact op met het functieteam om dit probleem te onderzoeken en op te lossen.

Scenario: Definities in de categorie Gastconfiguratie kunnen niet worden gedupliceerd vanuit De Azure-portal

Probleem

Wanneer u een aangepaste beleidsdefinitie probeert te maken op de azure-portalpagina voor beleidsdefinities, selecteert u de knop 'Definitie dupliceren'. Nadat u het beleid hebt toegewezen, vindt u dat computers niet compatibel zijn omdat er geen resource voor gastconfiguratietoewijzing bestaat.

Oorzaak

Gastconfiguratie is afhankelijk van aangepaste metagegevens die zijn toegevoegd aan beleidsdefinities bij het maken van resources voor gastconfiguratietoewijzing. De activiteit 'Definitie dupliceren' in Azure Portal kopieert geen aangepaste metagegevens.

Oplossing

In plaats van de portal te gebruiken, moet u de beleidsdefinitie dupliceren met behulp van de Policy Insights-API. Het volgende PowerShell-voorbeeld biedt een optie.

# 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)

Scenario: Kubernetes-resource wordt gemaakt tijdens connectiviteitsfouten, ondanks dat beleid voor weigeren wordt toegewezen

Probleem

In het geval van een Kubernetes-clusterverbindingsfout kan evaluatie voor nieuw gemaakte of bijgewerkte resources worden overgeslagen vanwege het gedrag van Gatekeeper dat niet kan worden geopend.

Oorzaak

Het GK fail-open model is standaard en gebaseerd op feedback van de community. Gatekeeper-documentatie breidt deze redenen hier uit: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Oplossing

In de bovenstaande gebeurtenis kan de foutcase worden bewaakt vanuit de metrische gegevens van de toegangswebhook die worden geleverd door de kube-apiserver. En zelfs als de evaluatie tijdens het maken wordt overgeslagen en er een object wordt gemaakt, wordt het nog steeds gerapporteerd over naleving van Azure Policy als niet-compatibel als vlag aan klanten.

Ongeacht het bovenstaande, behoudt Azure Policy in een dergelijk scenario nog steeds het laatst bekende beleid op het cluster en behoudt u de kaders.

Volgende stappen

Als uw probleem niet wordt vermeld in dit artikel of als u het probleem niet kunt oplossen, kunt u ondersteuning krijgen door een van de volgende kanalen te bezoeken:

  • Krijg antwoorden van experts via Microsoft Q&A.
  • Verbinding maken met @AzureSupport. Deze officiële Microsoft Azure-resource op Twitter helpt de klantervaring te verbeteren door de Azure-community te verbinden met de juiste antwoorden, ondersteuning en experts.
  • Als u nog steeds hulp nodig hebt, gaat u naar de ondersteuning voor Azure site en selecteert u Een ondersteuningsaanvraag indienen.