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.
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.
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.
Un alias non corretto o inesistente viene usato in una definizione di criteri.
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.
Una risorsa si trova nello stato Non avviato o i dettagli di conformità non sono aggiornati.
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.
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.
Una risorsa non si trova nello stato di valutazione Conforme o Non conforme previsto.
La risorsa non è nell'ambito corretto per l'assegnazione dei criteri o la definizione dei criteri non funziona come previsto.
Per risolvere i problemi relativi alla definizione dei criteri, eseguire le operazioni seguenti:
- 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.
- Assicurarsi che i parametri di assegnazione e l'ambito di assegnazione siano impostati correttamente.
- 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.
- La modalità deve essere
- Assicurarsi che l'ambito della risorsa non sia escluso o esentato.
- 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. - 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
.
- 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. - 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.
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.
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à.
Per risolvere i problemi di applicazione dell'assegnazione di criteri, seguire questa procedura:
- 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.
- Assicurarsi che i parametri di assegnazione e l'ambito di assegnazione siano impostati correttamente e che
enforcementMode
sia Abilitato. - 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.
- La modalità deve essere
- Assicurarsi che l'ambito della risorsa non sia escluso o esentato.
- 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).
- 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.
La creazione o l'aggiornamento di una risorsa viene negata.
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.
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.
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}'.
La regola di definizione dei criteri ha una o più condizioni che non vengono valutate dai tipi di risorse di destinazione.
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.
Viene visualizzato un messaggio di errore nella pagina di conformità nel portale di Azure durante il recupero della conformità per le assegnazioni di criteri.
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.
Selezionare un ambito più granulare con meno sottoscrizioni figlio per visualizzare i risultati completi.
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.
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.
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.
Scenario: l'installazione tramite un grafico Helm ha esito negativo a causa di un errore di password
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 ,)
La password generata include una virgola (,
), su cui viene diviso il grafico Helm.
Quando si esegue helm install azure-policy-addon
, eseguire l'escape della virgola (,
) nel valore della password con una barra rovesciata (\
).
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
Il grafico Helm con il nome azure-policy-addon
è già stato installato o parzialmente installato.
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
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.
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.
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.
Scenario: il componente aggiuntivo non è in grado di raggiungere l'endpoint del servizio Criteri di Azure a causa di restrizioni in uscita
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
Questo problema si verifica quando un cluster in uscita è bloccato.
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
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>
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.
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
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.
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à.
Registrare il provider di risorse Microsoft.PolicyInsights
nella sottoscrizione cluster. Per istruzioni, vedere Registrare un provider di risorse.
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.
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.
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
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.
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.
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
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.
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.
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.
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.