Felsöka fel med att använda Azure Policy

När du skapar principdefinitioner, arbetar med SDK:er eller konfigurerar Azure Policy for Kubernetes-tillägget kan det uppstå fel. Den här artikeln beskriver olika allmänna fel som kan uppstå och föreslår olika sätt att lösa dem.

Hitta felinformationen

Platsen för felinformationen beror på vilken del av Azure Policy som du arbetar med.

  • Om du arbetar med en anpassad princip går du till Azure-portalen för att få källkodsanalysfeedback om schemat, eller granska resulterande efterlevnadsdata för att se hur resurserna utvärderades.
  • Om du arbetar med någon av de olika SDK:erna visar SDK:n information om varför funktionen misslyckades.
  • Om du arbetar med tillägget för Kubernetes börjar du med loggningen i klustret.

Allmänna fel

Scenario: Alias hittades inte

Problem

Ett felaktigt eller obefintligt alias används i en principdefinition. Azure Policy använder alias för att mappa till Azure Resource Manager-egenskaper.

Orsak

Ett felaktigt eller obefintligt alias används i en principdefinition.

Åtgärd

Kontrollera först att Resource Manager-egenskapen har ett alias. Om du vill söka efter tillgängliga alias går du till Azure Policy-tillägg för Visual Studio Code eller SDK. Om aliaset för en Resource Manager-egenskap inte finns skapar du ett supportärende.

Scenario: Utvärderingsinformationen är inte uppdaterad

Problem

En resurs är i tillståndet Inte startad eller så är kompatibilitetsinformationen inte aktuell.

Orsak

Det tar ungefär fem minuter att tillämpa en ny princip- eller initiativtilldelning. Nya eller uppdaterade resurser inom omfånget för en befintlig tilldelning blir tillgängliga på cirka 15 minuter. En standardmässig efterlevnadsgenomsökning sker var 24:e timme. Mer information finns i utvärderingsutlösare.

Åtgärd

Vänta först tills en utvärdering har slutförts och se till att kompatibilitetsresultaten blir tillgängliga i Azure-portalen eller SDK. Information om hur man startar en ny utvärderingsgenomsökning med Azure PowerShell eller REST API finns i Utvärderingsgenomsökning på begäran.

Scenario: Efterlevnaden är inte som förväntat

Problem

En resurs är inte i det kompatibla eller icke-kompatibla utvärderingstillstånd som förväntas för resursen.

Orsak

Resursen har inte rätt omfång för principtilldelningen, eller så fungerar inte principdefinitionen som avsett.

Åtgärd

Utför följande steg för att felsöka din principdefinition:

  1. Vänta först tills en utvärdering har slutförts och se till att kompatibilitetsresultaten blir tillgängliga i Azure-portalen eller SDK.
  2. Information om hur man startar en ny utvärderingsgenomsökning med Azure PowerShell eller REST API finns i Utvärderingsgenomsökning på begäran.
  3. Kontrollera att tilldelningsparametrarna och tilldelningsomfånget har angetts korrekt.
  4. Kontrollera principdefinitionsläget:
    • Läget ska vara all för alla resurstyper.
    • Läget ska vara indexed om principdefinitionen söker efter taggar eller plats.
  5. Se till att resursens omfång inte är exkluderat eller undantaget.
  6. Om efterlevnaden för en principtilldelning visar 0/0 resurser fastställdes inga resurser vara tillämpliga inom tilldelningsomfånget. Kontrollera både principdefinitionen och tilldelningsomfånget.
  7. När det gäller en inkompatibel resurs som förväntades vara kompatibel hittar du information i Fastställa orsakerna till inkompatibilitet. Jämförelsen mellan definitionen och det utvärderade egenskapsvärdet anger varför en resurs inte var kompatibel.
    • Om målvärdet är fel ändrar du principdefinitionen.
    • Om det aktuella värdet är fel verifierar du resursnyttolasten via resources.azure.com.
  8. För en definition av resursproviderläge som stöder en RegEx-strängparameter (till exempel Microsoft.Kubernetes.Data och den inbyggda definitionen "Containeravbildningar ska endast distribueras från betrodda register" kontrollerar du att RegEx-strängparametern är korrekt.
  9. Mer information om andra vanliga problem och lösningar hittar du i Felsök: Genomförandet är inte som förväntat.

Om du fortfarande har problem med din duplicerade och anpassade inbyggda principdefinition eller anpassade definition, så kan du dirigera problemet direkt genom att skapa en supportbegäran under Redigera en princip.

Scenario: Framtvingandet är inte som förväntat

Problem

En resurs som du förväntar dig att Azure Policy ska agera på hanteras inte, och det finns ingen post i Azure-aktivitetsloggen.

Orsak

Principtilldelningen konfigurerades för en enforcementMode-inställning av Inaktiverad. Medan enforcementMode är inaktiverad tillämpas inte principeffekten och det finns ingen post i aktivitetsloggen.

Åtgärd

Felsöka tillämpningen av principtilldelningen genom att utföra följande steg:

  1. Vänta först tills en utvärdering har slutförts och se till att kompatibilitetsresultaten blir tillgängliga i Azure-portalen eller SDK.
  2. Information om hur man startar en ny utvärderingsgenomsökning med Azure PowerShell eller REST API finns i Utvärderingsgenomsökning på begäran.
  3. Kontrollera att tilldelningsparametrarna och tilldelningsomfånget har angetts korrekt och att de enforcementMode är aktiverade.
  4. Kontrollera principdefinitionsläget:
    • Läget ska vara all för alla resurstyper.
    • Läget ska vara indexed om principdefinitionen söker efter taggar eller plats.
  5. Se till att resursens omfång inte är exkluderat eller undantaget.
  6. Kontrollera att resursnyttolasten matchar principlogik. Den här verifieringen kan göras genom att samla in en HTTP-arkivspårning (HAR) eller granska egenskaperna för Azure Resource Manager-mallen (ARM-mall).
  7. Avseende andra vanliga problem och lösningar hittar du information i Felsök: Efterlevnad inte som förväntat.

Om du fortfarande har problem med din duplicerade och anpassade inbyggda principdefinition eller anpassade definition, så kan du dirigera problemet direkt genom att skapa en supportbegäran under Redigera en princip.

Scenario: Nekad av Azure Policy

Problem

Skapande eller uppdatering av en resurs nekas.

Orsak

En principtilldelning till omfånget för den nya eller uppdaterade resursen uppfyller kriterierna för en principdefinition med effekten Neka. Resurser som uppfyller dessa definitioner hindras från att skapas eller uppdateras.

Åtgärd

Felmeddelandet från en nekande principtilldelning innehåller principdefinitionen och principtilldelnings-ID:n. Om du inte har felinformation i meddelandet hittar du den också i aktivitetsloggen. Använd den här informationen för att få mer information för att förstå resursbegränsningarna och justera resursegenskaperna i din begäran så att de matchar tillåtna värden.

Scenario: Definitionen riktar sig till flera resurstyper

Problem

En principdefinition som innehåller flera resurstyper misslyckas med valideringen när du skapar eller uppdaterar med följande fel:

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

Orsak

Principdefinitionsregeln har ett eller flera villkor som inte utvärderas av målresurstyperna.

Åtgärd

Om ett alias används kontrollerar du att aliaset endast utvärderas mot den resurstyp som det tillhör genom att lägga till ett typvillkor före det. Ett alternativ är att dela upp principdefinitionen i flera definitioner för att undvika att rikta in sig på flera resurstyper.

Scenario: Prenumerationsgränsen har överskridits

Problem

Ett felmeddelande på efterlevnadssidan i Azure Portal visas när efterlevnad för principtilldelningar hämtas.

Orsak

Antalet prenumerationer under de valda omfången i begäran överskred gränsen på 5 000 prenumerationer. Kompatibilitetsresultatet kan delvis visas.

Åtgärd

Om du vill se de fullständiga resultaten väljer du ett mer detaljerat omfång med färre underordnade prenumerationer.

Mallfel

Scenario: Funktioner som stöds av principer som bearbetas av mall

Problem

Azure Policy stöder många ARM-mallfunktioner och -funktioner som endast är tillgängliga i en principdefinition. Resource Manager bearbetar dessa funktioner som en del av en distribution i stället för som en del av en principdefinition.

Orsak

Om du använder funktioner som stöds, till exempel parameter() eller resourceGroup(), resulterar det bearbetade resultatet av funktionen vid distributionstillfället i stället för att låta funktionen för principdefinitionen och Azure Policy-motorn bearbetas.

Åtgärd

Om du vill skicka igenom en funktion som en del av en principdefinition kan du undvika hela strängen så [ att egenskapen ser ut som [[resourceGroup().tags.myTag]. Escape-tecknet gör att Resource Manager behandlar värdet som en sträng när mallen bearbetas. Azure Policy placerar sedan funktionen i principdefinitionen, vilket gör att den kan vara dynamisk som förväntat. Mer information finns i Syntax och uttryck i Azure Resource Manager-mallar.

Tillägg för Kubernetes-installationsfel

Scenario: Installationen med hjälp av ett Helm-diagram misslyckas på grund av ett lösenordsfel

Problem

Kommandot helm install azure-policy-addon misslyckas och returnerar något av följande fel:

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

Orsak

Det genererade lösenordet innehåller ett kommatecken (,), som Helm-diagrammet delar på.

Åtgärd

När du kör helm install azure-policy-addonundfly kommatecknet (,) i lösenordsvärdet med ett omvänt snedstreck (\).

Scenario: Installationen med hjälp av ett Helm-diagram misslyckas eftersom namnet redan finns

Problem

Kommandot helm install azure-policy-addon misslyckas och returnerar följande fel:

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

Orsak

Helm-diagrammet med namnet azure-policy-addon har redan installerats eller delvis installerats.

Åtgärd

Följ anvisningarna för att ta bort Azure Policy for Kubernetes-tillägget och kör helm install azure-policy-addon sedan kommandot igen.

Scenario: Användartilldelade identiteter för virtuella Azure-datorer ersätts av systemtilldelade hanterade identiteter

Problem

När du har tilldelat initiativ för gästkonfigurationsprinciper till granskningsinställningar på en dator tilldelas inte längre de användartilldelade hanterade identiteterna som tilldelades datorn. Endast en systemtilldelad hanterad identitet tilldelas.

Orsak

De principdefinitioner som tidigare användes i gästkonfigurationsdefinitioner deployIfNotExists säkerställde att en systemtilldelad identitet har tilldelats till datorn. Men de tog också bort de användartilldelade identitetstilldelningarna.

Åtgärd

De definitioner som tidigare orsakade det här problemet visas som \[Deprecated\]och ersätts av principdefinitioner som hanterar förutsättningar utan att ta bort användartilldelade hanterade identiteter. Ett manuellt steg krävs. Ta bort alla befintliga principtilldelningar som har markerats som \[Deprecated\]och ersätt dem med det uppdaterade principinitiativet och principdefinitionerna som har samma namn som originalet.

En detaljerad berättelse finns i blogginlägget Viktig ändring som släppts för granskningsprinciper för gästkonfiguration.

Tillägg för allmänna Kubernetes-fel

Scenario: Tillägget kan inte nå Azure Policy-tjänstslutpunkten på grund av utgående begränsningar

Problem

Tillägget kan inte nå Azure Policy-tjänstslutpunkten och returnerar något av följande fel:

  • 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

Orsak

Det här problemet uppstår när en klusterutgång är låst.

Åtgärd

Se till att de domäner och portar som nämns i följande artikel är öppna:

Scenario: Tillägget kan inte nå Azure Policy-tjänstslutpunkten på grund av konfigurationen av aad-pod-identity

Problem

Tillägget kan inte nå Azure Policy-tjänstslutpunkten och returnerar något av följande fel:

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

Orsak

Det här felet uppstår när aad-pod-identity installeras i klustret och kube-systempoddar inte exkluderas i aad-pod-identity.

NMI-poddarna aad-pod-identity (Component Node Managed Identity) ändrar nodernas iptables för att fånga upp anrop till Azure-instansens metadataslutpunkt. Den här konfigurationen innebär att alla begäranden som görs till metadataslutpunkten fångas upp av NMI, även om podden inte använder aad-pod-identity. AzurePodIdentityException CustomResourceDefinition (CRD) kan konfigureras för att informera om aad-pod-identity att alla begäranden till en metadataslutpunkt som kommer från en podd som matchar etiketterna som definierats i CRD bör vara proportionella utan någon bearbetning i NMI.

Åtgärd

Undanta systempoddar som har kubernetes.azure.com/managedby: aks etiketten i kube-system-namnområdet i aad-pod-identity genom att AzurePodIdentityException konfigurera CRD.

Mer information finns i Inaktivera Azure Active Directory-poddidentiteten (Azure AD) för en specifik podd/app.

Följ det här exemplet om du vill konfigurera ett undantag:

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: Resursprovidern är inte registrerad

Problem

Tillägget kan nå Azure Policy-tjänstslutpunkten, men tilläggsloggarna visar något av följande fel:

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

Orsak

Resursprovidern Microsoft.PolicyInsights är inte registrerad. Det måste vara registrerat för tillägget för att hämta principdefinitioner och returnera efterlevnadsdata.

Åtgärd

Registrera resursprovidern Microsoft.PolicyInsights i klusterprenumerationen. Anvisningar finns i Registrera en resursprovider.

Scenario: Prenumerationen är inaktiverad

Problem

Tillägget kan nå Azure Policy-tjänstslutpunkten, men följande fel visas:

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

Orsak

Det här felet innebär att prenumerationen har bedömts vara problematisk och att funktionsflaggan Microsoft.PolicyInsights/DataPlaneBlocked har lagts till för att blockera prenumerationen.

Åtgärd

Kontakta funktionsteamet om du vill undersöka och lösa problemet.

Scenario: Definitioner i kategorin "Gästkonfiguration" kan inte dupliceras från Azure Portal

Problem

När du försöker skapa en anpassad principdefinition från sidan Azure Portal för principdefinitioner väljer du knappen Duplicera definition. När du har tilldelat principen upptäcker du att datorer är inkompatibla eftersom det inte finns någon resurs för gästkonfigurationstilldelning.

Orsak

Gästkonfigurationen förlitar sig på anpassade metadata som läggs till i principdefinitioner när du skapar resurser för gästkonfigurationstilldelning. Aktiviteten Duplicera definition i Azure Portal kopierar inte anpassade metadata.

Åtgärd

I stället för att använda portalen duplicerar du principdefinitionen med hjälp av Policy Insights-API:et. Följande PowerShell-exempel innehåller ett alternativ.

# 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-resursen skapas vid anslutningsfel trots att nekad princip tilldelas

Problem

Om det uppstår ett anslutningsfel för Kubernetes-klustret kan utvärdering av nyligen skapade eller uppdaterade resurser kringgås på grund av Gatekeepers beteende vid felöppning.

Orsak

GK:ns modell för att misslyckas är avsiktlig och baseras på feedback från communityn. Gatekeeper-dokumentationen går vidare med följande orsaker här: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Åtgärd

I föregående händelse kan felfallet övervakas från antagnings webhook-måtten kube-apiserversom tillhandahålls av . Om utvärderingen kringgås vid skapandetillfället och ett objekt skapas rapporteras det om Azure Policy-efterlevnad som icke-kompatibel som en flagga för kunder.

Oavsett scenario behåller Azure Policy den senast kända principen i klustret och håller skyddsräckena på plats.

Nästa steg

Om problemet inte visas i den här artikeln eller om du inte kan lösa det kan du få support genom att besöka någon av följande kanaler:

  • Få svar från experter via Microsoft Q&A.
  • Anslut med @AzureSupport. Den här officiella Microsoft Azure-resursen på X hjälper till att förbättra kundupplevelsen genom att ansluta Azure-communityn till rätt svar, support och experter.
  • Om du fortfarande behöver hjälp går du till Azure Support webbplats och väljer Skicka ett supportärende.