Risolvere gli errori relativi all'uso di Criteri di Azure

Quando si creano definizioni di criteri, si usano gli SDK o si configura il Criteri di Azure per il componente aggiuntivo Kubernetes, è possibile che si verifichino errori. Questo articolo descrive vari errori generali che possono verificarsi e suggerisce modi per risolverli.

Trovare i dettagli dell'errore

La posizione dei dettagli dell'errore dipende dall'aspetto dei Criteri di Azure cui si sta lavorando.

  • Se si lavora con criteri personalizzati, passare al portale di Azure per ottenere commenti di linting sullo schema oppure esaminare i dati di conformità risultanti per vedere come sono state valutate le risorse.
  • Se si lavora con uno dei vari SDK, l'SDK fornisce informazioni dettagliate sul motivo per cui la funzione non è riuscita.
  • Se si sta lavorando con il componente aggiuntivo per Kubernetes, iniziare con la registrazione nel cluster.

Errori generali

Scenario: alias non trovato

Problema

Un alias non corretto o inesistente viene usato in una definizione di criteri. Criteri di Azure usa gli alias per eseguire il mapping alle proprietà di Azure Resource Manager.

Causa

Un alias non corretto o inesistente viene usato in una definizione di criteri.

Risoluzione

Prima di tutto, verificare che la proprietà Resource Manager abbia un alias. Per cercare gli alias disponibili, passare a Estensione Criteri di Azure per Visual Studio Code o all'SDK. Se l'alias per una proprietà Resource Manager non esiste, creare un ticket di supporto.

Scenario: i dettagli di valutazione non sono aggiornati

Problema

Una risorsa si trova nello stato Non avviato o i dettagli di conformità non sono aggiornati.

Causa

Per applicare un nuovo criterio o un'assegnazione di iniziativa sono necessari circa cinque minuti. Le risorse nuove o aggiornate nell'ambito di un'assegnazione esistente diventano disponibili in circa 15 minuti. Ogni 24 ore si verifica un'analisi di conformità standard. Per altre informazioni, vedere Trigger di valutazione.

Risoluzione

Attendere prima il tempo necessario per il completamento della valutazione e la disponibilità dei risultati di conformità nel portale di Azure o nell'SDK. Per avviare una nuova analisi di valutazione con Azure PowerShell o l'API REST, vedere Analisi di valutazione su richiesta.

Scenario: la conformità non corrisponde a quanto previsto

Problema

Una risorsa non si trova nello stato di valutazione conforme o non conforme previsto.

Causa

La risorsa non è nell'ambito corretto per l'assegnazione dei criteri o la definizione dei criteri non funziona come previsto.

Risoluzione

Per risolvere i problemi relativi alla definizione dei criteri, eseguire le operazioni seguenti:

  1. Attendere prima il tempo necessario per il completamento della valutazione e la disponibilità dei risultati di conformità nel portale di Azure o nell'SDK.

  2. Per avviare una nuova analisi di valutazione con Azure PowerShell o l'API REST, vedere Analisi di valutazione su richiesta.

  3. Assicurarsi che i parametri di assegnazione e l'ambito di assegnazione siano impostati correttamente.

  4. Controllare la modalità di definizione dei criteri:

    • La modalità deve essere all per tutti i tipi di risorse.
    • La modalità deve essere indexed se la definizione dei criteri verifica la presenza di tag o posizione.
  5. Assicurarsi che l'ambito della risorsa non sia escluso o esente.

  6. Se la conformità per un'assegnazione di criteri mostra 0/0 le risorse, non sono state determinate risorse applicabili all'interno dell'ambito di assegnazione. Controllare sia la definizione dei criteri che l'ambito di assegnazione.

  7. Per una risorsa non conforme prevista per la conformità, vedere Determinare i motivi di non conformità. Il confronto della definizione con il valore della proprietà valutata indica perché una risorsa non è conforme.

    • Se il valore di destinazione non è corretto, rivedere la definizione dei criteri.
    • Se il valore corrente non è corretto, convalidare il payload della risorsa tramite resources.azure.com.
  8. Per una definizione della modalità provider di risorse che supporta un parametro stringa RegEx (ad esempio Microsoft.Kubernetes.Data e la definizione predefinita "Le immagini del contenitore devono essere distribuite solo da registri attendibili"), verificare che il parametro della stringa RegEx sia corretto.

  9. Per altri problemi e soluzioni comuni, vedere Risolvere i problemi: applicazione diversa da quella prevista.

Se si verifica ancora un problema con la definizione di criteri predefinita duplicata e personalizzata o con la definizione personalizzata, creare un ticket di supporto in Creazione di un criterio per indirizzare correttamente il problema.

Scenario: l'imposizione dei criteri non è avvenuta come previsto

Problema

Una risorsa su cui si prevede che Criteri di Azure agisca non subisce interventi e non esistono voci a riguardo nel log attività di Azure.

Causa

L'assegnazione dei criteri è stata configurata per un'impostazione enforcementModedisabilitata. Mentre enforcementMode è disabilitato, l'effetto dei criteri non viene applicato e non è presente alcuna voce nel log attività.

Risoluzione

Per risolvere i problemi di applicazione dell'assegnazione di criteri, seguire questa procedura:

  1. Attendere prima il tempo necessario per il completamento della valutazione e la disponibilità dei risultati di conformità nel portale di Azure o nell'SDK.

  2. Per avviare una nuova analisi di valutazione con Azure PowerShell o l'API REST, vedere Analisi di valutazione su richiesta.

  3. Assicurarsi che i parametri di assegnazione e l'ambito di assegnazione siano impostati correttamente e che enforcementMode sia Abilitato.

  4. Controllare la modalità di definizione dei criteri:

    • La modalità deve essere all per tutti i tipi di risorse.
    • La modalità deve essere indexed se la definizione dei criteri verifica la presenza di tag o posizione.
  5. Assicurarsi che l'ambito della risorsa non sia escluso o esente.

  6. Verificare che il payload della risorsa corrisponda alla logica dei criteri. A tale scopo, è possibile acquisire una traccia HAR (HTTP Archive) o esaminare le proprietà del modello di Azure Resource Manager (modello di ARM).

  7. Per altri problemi e soluzioni comuni, vedere Risolvere i problemi: conformità diversa da quella prevista.

Se si verifica ancora un problema con la definizione di criteri predefinita duplicata e personalizzata o con la definizione personalizzata, creare un ticket di supporto in Creazione di un criterio per indirizzare correttamente il problema.

Scenario: operazione negata da Criteri di Azure

Problema

La creazione o l'aggiornamento di una risorsa viene negata.

Causa

Un'assegnazione di criteri nell'ambito della risorsa nuova o aggiornata soddisfa i criteri di una definizione di criteri con un effetto Deny. Non è consentito creare o aggiornare le risorse che soddisfano queste definizioni.

Risoluzione

Il messaggio di errore da un'assegnazione di criteri di rifiuto include gli ID di definizione dei criteri e di assegnazione di criteri. Se nel messaggio non sono presenti le informazioni sull'errore, tali informazioni sono disponibili anche nel log attività. Usare queste informazioni per ottenere altri dettagli per comprendere le restrizioni delle risorse e modificare le proprietà delle risorse nella richiesta in modo che corrispondano ai valori consentiti.

Scenario: Definizione destinata a più tipi di risorse

Problema

Una definizione di criteri che include più tipi di risorse non supera la convalida durante la creazione o l'aggiornamento con l'errore seguente:

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

Causa

La regola di definizione dei criteri ha una o più condizioni che non vengono valutate dai tipi di risorse di destinazione.

Risoluzione

Se viene usato un alias, assicurarsi che l'alias venga valutato solo rispetto al tipo di risorsa a cui appartiene aggiungendo una condizione di tipo prima. Un'alternativa consiste nel suddividere la definizione dei criteri in più definizioni per evitare la destinazione di più tipi di risorse.

Scenario: limite di sottoscrizione superato

Problema

Viene visualizzato un messaggio di errore nella pagina di conformità in portale di Azure durante il recupero della conformità per le assegnazioni di criteri.

Causa

Il numero di sottoscrizioni nell'ambito selezionato nella richiesta ha superato il limite di 5000 sottoscrizioni. I risultati della conformità possono essere visualizzati parzialmente.

Risoluzione

Selezionare un ambito più granulare con meno sottoscrizioni figlio per visualizzare i risultati completi.

Errori del modello

Scenario: funzioni supportate dai criteri elaborati dal modello

Problema

Criteri di Azure supporta diverse funzioni e funzioni del modello di Resource Manager disponibili solo in una definizione di criteri. Resource Manager elabora queste funzioni come parte di una distribuzione anziché come parte di una definizione di criteri.

Causa

L'uso di funzioni supportate, ad esempio parameter() o resourceGroup(), comporta l'elaborazione del risultato elaborato della funzione in fase di distribuzione anziché consentire la funzione per la definizione dei criteri e Criteri di Azure motore di elaborazione.

Risoluzione

Per passare una funzione attraverso come parte di una definizione di criteri, eseguire l'escape dell'intera stringa con [ in modo che la proprietà sia simile [[resourceGroup().tags.myTag]a . Il carattere di escape fa sì che Resource Manager consideri il valore come stringa quando elabora il modello. Criteri di Azure quindi inserisce la funzione nella definizione dei criteri, che consente di essere dinamica come previsto. Per altre informazioni, vedere Sintassi ed espressioni nei modelli di Azure Resource Manager.

Componenti aggiuntivi per gli errori di installazione di Kubernetes

Scenario: l'installazione tramite un grafico Helm ha esito negativo a causa di un errore di password

Problema

Il helm install azure-policy-addon comando ha esito negativo e restituisce uno degli errori seguenti:

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

Causa

La password generata include una virgola (,), su cui viene diviso il grafico Helm.

Risoluzione

Quando si esegue , eseguire helm install azure-policy-addonl'escape della virgola (,) nel valore della password con una barra rovesciata (\).

Scenario: l'installazione con un grafico Helm ha esito negativo perché il nome esiste già

Problema

Il helm install azure-policy-addon comando ha esito negativo e restituisce l'errore seguente:

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

Causa

Il grafico Helm con il nome azure-policy-addon è già stato installato o parzialmente installato.

Risoluzione

Seguire le istruzioni per rimuovere il componente aggiuntivo Criteri di Azure per Kubernetes, quindi eseguire di nuovo il helm install azure-policy-addon comando.

Scenario: le identità assegnate dall'utente della macchina virtuale di Azure vengono sostituite da identità gestite assegnate dal sistema

Problema

Dopo aver assegnato le iniziative dei criteri di configurazione guest alle impostazioni di controllo all'interno di un computer, le identità gestite assegnate dall'utente assegnate al computer non vengono più assegnate. Viene assegnata solo un'identità gestita assegnata dal sistema.

Causa

Le definizioni dei criteri usate in precedenza nelle definizioni DeployIfNotExists della configurazione guest hanno garantito che al computer sia assegnata un'identità assegnata dal sistema, ma hanno rimosso anche le assegnazioni di identità assegnate dall'utente.

Risoluzione

Le definizioni che in precedenza causavano questo problema vengono visualizzate come [Deprecate] e vengono sostituite da definizioni di criteri che gestiscono i prerequisiti senza rimuovere le identità gestite assegnate dall'utente. È necessario un passaggio manuale. Eliminare eventuali assegnazioni di criteri esistenti contrassegnate come [Deprecate] e sostituirle con l'iniziativa dei criteri dei prerequisiti aggiornata e le definizioni dei criteri con lo stesso nome dell'originale.

Per una narrazione dettagliata, vedere il post di blog Importanti modifiche rilasciate per i criteri di controllo della configurazione guest.

Componente aggiuntivo per gli errori generali di Kubernetes

Scenario: il componente aggiuntivo non è in grado di raggiungere l'endpoint di servizio Criteri di Azure a causa di restrizioni in uscita

Problema

Il componente aggiuntivo non riesce a raggiungere l'endpoint del servizio Criteri di Azure e restituisce uno degli errori seguenti:

  • 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

Causa

Questo problema si verifica quando un cluster in uscita è bloccato.

Risoluzione

Assicurarsi che i domini e le porte indicati nell'articolo seguente siano aperti:

Scenario: il componente aggiuntivo non è in grado di raggiungere l'endpoint di servizio Criteri di Azure a causa della configurazione aad-pod-identity

Problema

Il componente aggiuntivo non riesce a raggiungere l'endpoint del servizio Criteri di Azure e restituisce uno degli errori seguenti:

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

Causa

Questo errore si verifica quando aad-pod-identity viene installato nel cluster e i pod kube-system non sono esclusi in aad-pod-identity.

I pod aad-pod-identity Node Managed Identity (NMI) modificano le tabelle iptable dei nodi per intercettare le chiamate all'endpoint dei metadati dell'istanza di Azure. Questa configurazione significa che qualsiasi richiesta inviata all'endpoint dei metadati viene intercettata da NMI, anche se il pod non usa aad-pod-identity. AzurePodIdentityException CustomResourceDefinition (CRD) può essere configurato per informare aad-pod-identity che le richieste a un endpoint di metadati che hanno origine da un pod che corrispondono alle etichette definite nel CRD devono essere inoltrate tramite proxy senza alcuna elaborazione in NMI.

Risoluzione

Escludere i pod di sistema con l'etichetta kubernetes.azure.com/managedby: aks nello spazio dei nomi kube-system in aad-pod-identity configurando il CRD AzurePodIdentityException .

Per altre informazioni, vedere Disabilitare l'identità del pod di Azure Active Directory (Azure AD) per un pod/applicazione specifico.

Per configurare un'eccezione, seguire questo esempio:

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: il provider di risorse non è registrato

Problema

Il componente aggiuntivo può raggiungere l'endpoint del servizio Criteri di Azure, ma i log del componente aggiuntivo visualizzano uno degli errori seguenti:

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

Causa

Il provider di risorse "Microsoft.PolicyInsights" non è registrato. Deve essere registrato per il componente aggiuntivo per ottenere definizioni di criteri e restituire i dati di conformità.

Risoluzione

Registrare il provider di risorse "Microsoft.PolicyInsights" nella sottoscrizione del cluster. Per istruzioni, vedere Registrare un provider di risorse.

Scenario: la sottoscrizione è disabilitata

Problema

Il componente aggiuntivo può raggiungere l'endpoint di servizio Criteri di Azure, ma viene visualizzato l'errore seguente:

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

Causa

Questo errore indica che la sottoscrizione è stata determinata come problematica e che il flag Microsoft.PolicyInsights/DataPlaneBlocked di funzionalità è stato aggiunto per bloccare la sottoscrizione.

Risoluzione

Per analizzare e risolvere il problema, contattare il team delle funzionalità.

Scenario: le definizioni nella categoria "Configurazione guest" non possono essere duplicate da portale di Azure

Problema

Quando si tenta di creare una definizione di criteri personalizzata dalla pagina portale di Azure per le definizioni dei criteri, selezionare il pulsante "Duplica definizione". Dopo aver assegnato i criteri, i computer non sono conformi perché non esiste alcuna risorsa di assegnazione della configurazione guest.

Causa

La configurazione guest si basa sui metadati personalizzati aggiunti alle definizioni dei criteri durante la creazione di risorse di assegnazione della configurazione guest. L'attività "Duplica definizione" nella portale di Azure non copia i metadati personalizzati.

Risoluzione

Invece di usare il portale, duplicare la definizione dei criteri usando l'API Policy Insights. L'esempio di PowerShell seguente offre un'opzione.

# 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: la risorsa Kubernetes viene creata durante un errore di connettività nonostante i criteri di negazione assegnati

Problema

In caso di errore di connettività del cluster Kubernetes, la valutazione per le risorse appena create o aggiornate può essere ignorata a causa del comportamento di apertura non riuscita di Gatekeeper.

Causa

Il modello GK fail-open è progettato e basato sul feedback della community. La documentazione di Gatekeeper si espande sui motivi seguenti: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Risoluzione

Nell'evento precedente, il caso di errore può essere monitorato dalle metriche del webhook di ammissione fornite dal server kube-api. E anche se la valutazione viene ignorata in fase di creazione e viene creato un oggetto, verrà comunque segnalata la conformità Criteri di Azure come non conforme come flag ai clienti.

Indipendentemente da quanto sopra, in uno scenario di questo tipo, i criteri di Azure manterranno comunque l'ultimo criterio noto nel cluster e manterranno le protezioni.

Passaggi successivi

Se il problema non è elencato in questo articolo o non è possibile risolverlo, ottenere supporto visitando uno dei canali seguenti:

  • Ottenere risposte dagli esperti tramite Domande e risposte Microsoft.
  • Connessione con @AzureSupport. Questa risorsa ufficiale di Microsoft Azure su Twitter consente di migliorare l'esperienza dei clienti collegando la community di Azure alle risposte, al supporto e agli esperti corretti.
  • Se è ancora necessaria assistenza, passare al sito supporto tecnico di Azure e selezionare Invia una richiesta di supporto.