Risolvere gli errori relativi all'uso di Criteri di Azure

Quando si creano definizioni di criteri, si usano gli SDK o si configura il componente aggiuntivo Criteri di Azure per Kubernetes, è possibile che si verifichino errori. Questo articolo descrive diversi errori generici che potrebbero verificarsi e suggerisce possibili metodi 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 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

L'assegnazione di un nuovo criterio o di un'iniziativa richiede 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 controlla i tag o la posizione.
  5. Assicurarsi che l'ambito della risorsa non sia escluso o esentato.
  6. Se la conformità per un'assegnazione di criteri mostra 0/0 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 è errato, rivedere la definizione dei criteri.
    • Se il valore corrente è errato, 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 dai registri attendibili"), verificare che il parametro 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 era configurata per un'impostazione enforcementMode disabilitata. 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 controlla i tag o la posizione.
  5. Assicurarsi che l'ambito della risorsa non sia escluso o esentato.
  6. Verificare che il payload della risorsa corrisponda alla logica dei criteri. Per eseguire la verifica, è 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 venga valutato solo sul tipo di risorsa a cui appartiene aggiungendo una condizione 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à nel portale di Azure durante il recupero della conformità per le assegnazioni di criteri.

Causa

Il numero di sottoscrizioni sotto gli ambiti selezionati nella richiesta ha superato il limite di 5.000 sottoscrizioni. I risultati della conformità potrebbero essere visualizzati parzialmente.

Risoluzione

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

Errori dei modelli

Scenario: funzioni supportate dai criteri elaborati dal modello

Problema

Criteri di Azure supporta molte funzioni e funzioni del modello di ARM 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 l'elaborazione della funzione per la definizione dei criteri e il motore di Criteri di Azure.

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 a [[resourceGroup().tags.myTag]. Il carattere di escape fa sì che Resource Manager consideri il valore come stringa quando elabora il modello. Criteri di Azure inserisce quindi 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 comando helm install azure-policy-addon 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 helm install azure-policy-addon, eseguire l'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 comando helm install azure-policy-addon 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 comando helm install azure-policy-addon.

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 di Configurazione guest deployIfNotExists assicurano che al computer sia assegnata un'identità assegnata dal sistema. Ma hanno anche rimosso le assegnazioni di identità assegnate dall'utente.

Risoluzione

Le definizioni che in precedenza causavano questo problema vengono visualizzate come \[Deprecated\] e vengono sostituite da definizioni di criteri che gestiscono i prerequisiti senza rimuovere le identità gestite assegnate dall'utente. È necessario un passaggio manuale. Eliminare tutte le assegnazioni di criteri esistenti contrassegnate come \[Deprecated\] 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 del 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 del 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 vengono esclusi in aad-pod-identity.

I pod di identità gestita del nodo (NMI) del componente aad-pod-identity modificano gli 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 dall'identità gestita del nodo, anche se il pod non usa aad-pod-identity. È possibile configurare il CustomResourceDefinition (CRD) AzurePodIdentityException per informare aad-pod-identity che le richieste a un endpoint di metadati provenienti da un pod che corrispondono alle etichette definite nel CRD devono essere trasmesse tramite proxy senza 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 specifica.

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 cluster. Per istruzioni, vedere Registrare un provider di risorse.

Scenario: la sottoscrizione è disabilitata

Problema

Il componente aggiuntivo può raggiungere l'endpoint del 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 di funzionalità Microsoft.PolicyInsights/DataPlaneBlocked è 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 nel portale di Azure

Problema

Quando si tenta di creare una definizione di criteri personalizzata dalla pagina del portale di Azure per le definizioni dei criteri, selezionare il pulsante Duplica definizione. Dopo aver assegnato i criteri, i computer sono Non 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 nel 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

Se si verifica un errore di connettività del cluster Kubernetes, la valutazione per le risorse appena create o aggiornate potrebbe 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

Nel caso precedente, il caso di errore può essere monitorato dalle metriche del webhook di ammissione fornite da kube-apiserver. Se la valutazione viene ignorata al momento della creazione e viene creato un oggetto, la conformità di Criteri di Azure viene segnalata come non conforme come flag ai clienti.

Indipendentemente dallo scenario, i criteri di Azure mantengono l'ultimo criterio noto nel cluster e mantengono 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 di Azure tramite Microsoft Q&A.
  • Connettersi con @AzureSupport. Questa risorsa ufficiale di Microsoft Azure su X consente di migliorare l'esperienza dei clienti connettendo la community di Azure alle risposte, al supporto e agli esperti corretti.
  • Se è ancora necessaria assistenza, andare al sito di supporto di Azure e selezionare Invia un ticket di supporto.