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 heeft niet de status Compatibel of Niet-compatibel voor de resource.
Oorzaak
De resource bevindt zich niet in het juiste bereik voor de beleidstoewijzing of de beleidsdefinitie werkt niet zoals bedoeld.
Oplossing
Voer de volgende stappen uit om problemen met uw beleidsdefinitie op te lossen:
- Wacht de juiste hoeveelheid tijd totdat een evaluatie is voltooid en de nalevingsresultaten beschikbaar zijn in de Azure-portal of SDK.
- Als u een nieuwe evaluatiescan wilt beginnen voor Azure PowerShell of de REST API, raadpleegt u de evaluatiescan op aanvraag.
- Zorg ervoor dat de toewijzingsparameters en het toewijzingsbereik juist zijn ingesteld.
- Controleer de beleidsdefinitiemodus:
- De modus moet voor alle resourcetypen zijn
all
. - De modus moet zijn
indexed
als de beleidsdefinitie controleert op tags of locatie.
- De modus moet voor alle resourcetypen zijn
- Zorg ervoor dat het bereik van de resource niet is uitgesloten of uitgesloten.
- 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. - 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
.
- 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. - 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 Disabled. Hoewel enforcementMode
dit is uitgeschakeld, wordt het beleidseffect niet afgedwongen en is er geen vermelding in het activiteitenlogboek.
Oplossing
Los de afdwinging van uw beleidstoewijzing op door de volgende stappen uit te voeren:
- 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.
- Zorg ervoor dat de toewijzingsparameters en het toewijzingsbereik juist zijn ingesteld en dat
enforcementMode
is ingeschakeld. - Controleer de beleidsdefinitiemodus:
- De modus moet voor alle resourcetypen zijn
all
. - De modus moet zijn
indexed
als de beleidsdefinitie controleert op tags of locatie.
- De modus moet voor alle resourcetypen zijn
- Zorg ervoor dat het bereik van de resource niet is uitgesloten of uitgesloten.
- Controleer of de nettolading van de resource overeenkomt met de beleidslogica. Deze verificatie kan worden uitgevoerd door een HTTP Archive-tracering (HAR) vast te leggen of de azure Resource Manager-sjablooneigenschappen (ARM-sjabloon) te controleren.
- 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
Als u de volledige resultaten wilt zien, selecteert u een gedetailleerder bereik met minder onderliggende abonnementen.
Sjabloonfouten
Scenario: Door beleid ondersteunde functies die per sjabloon worden verwerkt
Probleem
Azure Policy ondersteunt veel 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 gastconfiguratiedefinities deployIfNotExists
, zorgden ervoor dat een door het systeem toegewezen identiteit aan de computer is toegewezen. Maar ze hebben ook de door de gebruiker toegewezen identiteitstoewijzingen verwijderd.
Oplossing
De definities die dit probleem eerder hebben veroorzaakt, worden weergegeven als \[Deprecated\]
en worden vervangen door beleidsdefinities die vereisten beheren zonder door de gebruiker toegewezen beheerde identiteiten te verwijderen. Er is een handmatige stap vereist. Verwijder eventuele bestaande beleidstoewijzingen die zijn gemarkeerd als \[Deprecated\]
en vervang deze door het bijgewerkte initiatief voor het vereiste beleid 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
deze is geïnstalleerd op het cluster en de kube-system-pods niet worden uitgesloten in aad-pod-identity
.
De aad-pod-identity
NMI-pods (Node Managed Identity) wijzigen de iptables van de knooppunten om aanroepen naar het metagegevenseindpunt van het Azure-exemplaar te onderscheppen. Deze instelling betekent dat elke aanvraag die is ingediend bij het eindpunt voor metagegevens wordt onderschept door NMI, zelfs als de pod niet wordt gebruikt aad-pod-identity
. De AzurePodIdentityException
CRD (CustomResourceDefinition) kan worden geconfigureerd om te informeren aad-pod-identity
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 dat er in NMI wordt verwerkt.
Oplossing
Sluit de systeempods met het kubernetes.azure.com/managedby: aks
label in kube-system-naamruimte uit aad-pod-identity
door de AzurePodIdentityException
CRD 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 Microsoft.PolicyInsights
resourceprovider is niet geregistreerd. Deze moet worden geregistreerd voor de invoegtoepassing om beleidsdefinities op te halen en nalevingsgegevens te retourneren.
Oplossing
Registreer de Microsoft.PolicyInsights
resourceprovider 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 Dubbele definitie . 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. Met de activiteit Dubbele definitie in Azure Portal worden geen aangepaste metagegevens gekopieerd.
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
Als er een Kubernetes-clusterverbindingsfout optreedt, kan de 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 vorige gebeurtenis kan de foutcase worden bewaakt vanuit de metrische gegevens van de toegangswebhook die worden verstrekt door de kube-apiserver
. Als evaluatie wordt overgeslagen tijdens het maken en er een object wordt gemaakt, wordt het gerapporteerd over naleving van Azure Policy als niet-compatibel als vlag aan klanten.
Ongeacht het scenario behoudt Azure Policy het laatst bekende beleid op het cluster en blijft de kaders aanwezig.
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.
- Maak verbinding met @AzureSupport. Deze officiële Microsoft Azure-resource op X 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 ondersteuningsticket indienen.