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:
- 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.
- Kontrollera att tilldelningsparametrarna och tilldelningsomfånget har angetts korrekt.
- 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.
- Läget ska vara
- Se till att resursens omfång inte är exkluderat eller undantaget.
- 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. - 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
.
- 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. - 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:
- 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.
- Kontrollera att tilldelningsparametrarna och tilldelningsomfånget har angetts korrekt och att de
enforcementMode
är aktiverade. - 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.
- Läget ska vara
- Se till att resursens omfång inte är exkluderat eller undantaget.
- 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).
- 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-addon
undfly 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-apiserver
som 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.