Řešení chyb s využitím Azure Policy
Při vytváření definic zásad, práci se sadami SDK nebo nastavení doplňku Azure Policy for Kubernetes může docházet k chybám. Tento článek popisuje různé obecné chyby, ke kterým může dojít, a navrhuje způsoby jejich řešení.
Zjištění podrobností o chybě
Umístění podrobností o chybách se liší v závislosti na tom, s jakými aspekty služby Azure Policy pracujete.
- Pokud pracujete s vlastními zásadami, přejděte na web Azure Portal, kde získáte zpětnou vazbu k lintování schématu, nebo si projděte výsledná data dodržování předpisů, kde najdete informace o vyhodnocení prostředků.
- Pokud pracujete s některou ze sad SDK, informace o příčině selhání funkce vám poskytne daná sada SDK.
- Pokud pracujete s doplňkem pro Kubernetes, začněte s protokolováním v clusteru.
Obecné chyby
Scénář: Alias se nenašel
Problém
V definici zásad se používá nesprávný nebo neexistující alias. Azure Policy používá aliasy k mapování na vlastnosti Azure Resource Manageru.
Příčina
V definici zásad se používá nesprávný nebo neexistující alias.
Rozlišení
Nejprve ověřte, že vlastnost Resource Manageru má alias. Pokud chcete vyhledat dostupné aliasy, přejděte do tématu Rozšíření služby Azure Policy pro Visual Studio Code nebo použijte sadu SDK. Pokud alias vlastnosti Resource Manageru neexistuje, vytvořte lístek podpory.
Scénář: Podrobnosti o vyhodnocení nejsou aktuální
Problém
Prostředek je ve stavu Nespuštěno nebo podrobnosti o vyhodnocení nejsou aktuální.
Příčina
Použití nové zásady nebo přiřazení iniciativy trvá přibližně pět minut. Nové nebo aktualizované zdroje v rámci existujícího přiřazení budou dostupné přibližně za 15 minut. Standardní kontrola dodržování předpisů se provádí každých 24 hodin. Další informace najdete v části Triggery hodnocení.
Rozlišení
Nejprve vyčkejte přiměřenou dobu na dokončení hodnocení a na zpřístupnění výsledků kontroly dodržování předpisů na webu Azure Portal nebo v sadě SDK. Pokud chcete zahájit novou kontrolu hodnocení s využitím Azure PowerShellu nebo rozhraní REST API, přečtěte si téma Prohledávání hodnocení na vyžádání.
Scénář: Dodržování předpisů neodpovídá očekávání
Problém
Prostředek není v očekávaném stavu vyhodnocení vyhovující nebo nevyhovující předpisům pro daný prostředek.
Příčina
Prostředek není ve správném rozsahu pro přiřazení zásad nebo definice zásad nefunguje podle očekávání.
Rozlišení
Při řešení potíží s definicí zásad postupujte takto:
- Nejprve vyčkejte přiměřenou dobu na dokončení hodnocení a na zpřístupnění výsledků kontroly dodržování předpisů na webu Azure Portal nebo v sadě SDK.
- Pokud chcete zahájit novou kontrolu hodnocení s využitím Azure PowerShellu nebo rozhraní REST API, přečtěte si téma Prohledávání hodnocení na vyžádání.
- Ujistěte se, že jsou správně nastavené parametry přiřazení a obor přiřazení.
- Zkontrolujte režim definice zásad:
- Režim by měl být
all
pro všechny typy prostředků. - Režim by měl být
indexed
v případě, že definice zásady kontroluje značky nebo umístění.
- Režim by měl být
- Ujistěte se, že rozsah prostředku není vyloučený nebo vyloučený.
- Pokud dodržování předpisů pro přiřazení zásad zobrazuje
0/0
prostředky, nebyly v rámci oboru přiřazení určeny žádné prostředky, které by se měly použít. Zkontrolujte definici zásad i obor přiřazení. - V případě prostředku nedodržujícího zásady, u kterého se očekávalo, že je bude dodržovat, si projděte téma věnované určení důvodů pro nedodržování předpisů. Porovnání definice s vyhodnocenou hodnotou vlastnosti indikuje, proč byl prostředek nevyhovující.
- Pokud je cílová hodnota špatná, upravte definici zásady.
- Pokud je aktuální hodnota nesprávná, ověřte datovou část prostředku prostřednictvím
resources.azure.com
.
- Pro definici režimu poskytovatele prostředků, která podporuje parametr řetězce RegEx (například
Microsoft.Kubernetes.Data
a předdefinovaná definice "Image kontejnerů by se měly nasazovat pouze z důvěryhodných registrů"), ověřte správnost parametru řetězce RegEx. - Další běžné problémy a řešení najdete v tématu Řešení potíží: Jiné než očekávané vynucování zásad.
Pokud stále máte problém s duplicitní a přizpůsobenou definicí předdefinovaných zásad nebo vlastní definicí, vytvořte lístek podpory v kategorii Vytváření zásad a nasměrujte tento problém správně.
Scénář: Jiné než očekávané vynucování
Problém
Na prostředek, na který má služba Azure Policy reagovat, se nereaguje a v protokolu aktivit Azure není žádný záznam.
Příčina
Přiřazení zásad bylo nakonfigurováno pro nastavení vynuceníMode zakázáno. I když enforcementMode
je zakázaný, účinek zásady se nevynucuje a v protokolu aktivit není žádná položka.
Rozlišení
Při řešení potíží s vynucením přiřazení zásad postupujte následovně:
- Nejprve vyčkejte přiměřenou dobu na dokončení hodnocení a na zpřístupnění výsledků kontroly dodržování předpisů na webu Azure Portal nebo v sadě SDK.
- Pokud chcete zahájit novou kontrolu hodnocení s využitím Azure PowerShellu nebo rozhraní REST API, přečtěte si téma Prohledávání hodnocení na vyžádání.
- Ujistěte se, že jsou správně nastavené parametry přiřazení a obor přiřazení a že
enforcementMode
je povoleno. - Zkontrolujte režim definice zásad:
- Režim by měl být
all
pro všechny typy prostředků. - Režim by měl být
indexed
v případě, že definice zásady kontroluje značky nebo umístění.
- Režim by měl být
- Ujistěte se, že rozsah prostředku není vyloučený nebo vyloučený.
- Ověřte, že datová část prostředku odpovídá logice zásad. Toto ověření můžete provést zachycením trasování archivu HTTP (HAR) nebo kontrolou vlastností šablony Azure Resource Manageru (šablona ARM).
- Další běžné problémy a řešení najdete v tématu Řešení potíží: Jiné než očekávané dodržování předpisů.
Pokud stále máte problém s duplicitní a přizpůsobenou definicí předdefinovaných zásad nebo vlastní definicí, vytvořte lístek podpory v kategorii Vytváření zásad a nasměrujte tento problém správně.
Scénář: Zamítnutí službou Azure Policy
Problém
Došlo k zamítnutí vytvoření nebo aktualizace prostředku.
Příčina
Přiřazení zásad k oboru nového nebo aktualizovaného prostředku splňuje kritéria definice zásad s účinkem Deny. U prostředků, které splňují tyto definice, se zabraňuje vytváření nebo aktualizaci.
Rozlišení
Chybová zpráva z přiřazení zásady zamítnutí zahrnuje definici zásady a ID přiřazení zásady. Pokud informace o chybě ve zprávě chybí, jsou k dispozici také v protokolu aktivit. Pomocí těchto informací získáte další podrobnosti, abyste porozuměli omezením prostředků a upravili vlastnosti prostředků v požadavku tak, aby odpovídaly povoleným hodnotám.
Scénář: Definice cílí na několik typů prostředků
Problém
Při vytváření nebo aktualizaci dojde k selhání ověření definice zásad zahrnující několik typů prostředků s následující chybou:
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}'.
Příčina
Pravidlo definice zásad obsahuje jednu nebo více podmínek, které se u cílových typů prostředků nevyhodnocují.
Rozlišení
Pokud se používá alias, ujistěte se, že se alias vyhodnotí pouze vůči typu prostředku, do kterého patří, přidáním podmínky typu před něj. Alternativním řešením je rozdělit definici zásad na více definic, aby se zabránilo cílení na více typů prostředků.
Scénář: Překročení limitu předplatného
Problém
Při načítání dodržování předpisů pro přiřazení zásad se na stránce Dodržování předpisů na webu Azure Portal zobrazí chybová zpráva.
Příčina
Počet předplatných ve vybraných oborech v požadavku překročil limit 5 000 předplatných. Výsledky dodržování předpisů se můžou zobrazit částečně.
Rozlišení
Pokud chcete zobrazit úplné výsledky, vyberte podrobnější rozsah s menším počtem podřízených předplatných.
Chyby šablony
Scénář: Podporované funkce zásad zpracovávané šablonou
Problém
Azure Policy podporuje mnoho funkcí šablon ARM a funkcí, které jsou k dispozici pouze v definici zásad. Resource Manager tyto funkce zpracovává jako součást nasazení místo jako součást definice zásad.
Příčina
Použití podporovaných funkcí, jako parameter()
je například nebo resourceGroup()
, vede ke zpracovanému výsledku funkce v době nasazení místo toho, aby funkce umožňovala zpracovat definici zásad a modul Azure Policy.
Rozlišení
Pokud chcete funkci předat jako součást definice zásady, uchytejte celý řetězec tak [
, aby vlastnost vypadala jako [[resourceGroup().tags.myTag]
. Řídicí znak způsobí, že Resource Manager bude při zpracování šablony považovat hodnotu za řetězec. Azure Policy pak funkci umístí do definice zásad, která umožňuje, aby byla dynamická podle očekávání. Další informace najdete v tématu Syntaxe a výrazy v šablonách Azure Resource Manageru.
Chyby instalace doplňku Kubernetes
Scénář: Instalace pomocí chartu Helm selže kvůli chybě hesla
Problém
Příkaz helm install azure-policy-addon
selže a vrátí jednu z následujících chyb:
!: event not found
Error: failed parsing --set data: key "<key>" has no value (cannot end with ,)
Příčina
Vygenerované heslo obsahuje čárku (,
), na které se chart Helm rozděluje.
Rozlišení
Při spuštění uchytíte helm install azure-policy-addon
čárku (,
) v hodnotě hesla zpětným lomítkem (\
).
Scénář: Instalace pomocí chartu Helm selže, protože název již existuje
Problém
Příkaz helm install azure-policy-addon
selže a vrátí následující chybu:
Error: cannot re-use a name that is still in use
Příčina
Chart Helm s názvem azure-policy-addon
už byl nainstalovaný nebo částečně nainstalovaný.
Rozlišení
Podle pokynů odeberte doplněk Azure Policy for Kubernetes a pak příkaz spusťte helm install azure-policy-addon
znovu.
Scénář: Identity přiřazené uživatelem virtuálního počítače Azure se nahrazují identitami spravovanými přiřazenými systémem
Problém
Po přiřazení iniciativ zásad konfigurace hosta k auditování nastavení v počítači už nebudou přiřazené spravované identity přiřazené uživatelem, které byly přiřazeny k počítači. Je přiřazena pouze spravovaná identita přiřazená systémem.
Příčina
Definice zásad, které byly dříve použity v definicích konfigurace deployIfNotExists
hosta, zajistily, že je k počítači přiřazena identita přiřazená systémem. Zároveň ale odebrali přiřazení identity přiřazené uživatelem.
Rozlišení
Definice, které dříve způsobily tento problém, se zobrazují jako \[Deprecated\]
definice zásad, které spravují požadavky bez odebrání spravovaných identit přiřazených uživatelem. Vyžaduje se ruční krok. Odstraňte všechna existující přiřazení zásad, která jsou označená jako \[Deprecated\]
, a nahraďte je aktualizovanou iniciativou zásad předpokladů a definicemi zásad, které mají stejný název jako původní.
Podrobný příběh najdete v blogovém příspěvku Důležitá změna vydaná pro zásady auditu konfigurace hosta.
Obecné chyby doplňku Kubernetes
Scénář: Doplněk se kvůli omezením výchozího přenosu dat nemůže spojit s koncovým bodem služby Azure Policy
Problém
Doplněk se nemůže spojit s koncovým bodem služby Azure Policy a vrátí jednu z následujících chyb:
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
Příčina
K tomuto problému dochází při uzamčení výchozího přenosu dat clusteru.
Rozlišení
Ujistěte se, že jsou otevřené domény a porty uvedené v následujícím článku:
Scénář: Doplněk se kvůli konfiguraci identity aad-pod-identity nemůže spojit s koncovým bodem služby Azure Policy.
Problém
Doplněk se nemůže spojit s koncovým bodem služby Azure Policy a vrátí jednu z následujících chyb:
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>
Příčina
K této chybě dochází, když aad-pod-identity
je nainstalován v clusteru a kube-system pody nejsou vyloučeny .aad-pod-identity
Pody aad-pod-identity
spravované identity uzlu komponenty upravují iptables uzlů tak, aby zachytily volání koncového bodu metadat instance Azure. Toto nastavení znamená, že NMI zachytí všechny požadavky na koncový bod metadat, i když pod nepoužívá aad-pod-identity
. CustomResourceDefinition AzurePodIdentityException
(CRD) je možné nakonfigurovat tak, aby informovala aad-pod-identity
, že všechny požadavky na koncový bod metadat, který pochází z podu, který odpovídá popiskům definovaným v CRD, by se měly zadávat bez jakéhokoli zpracování v NMI.
Rozlišení
Vylučte systémové pody, které mají kubernetes.azure.com/managedby: aks
popisek v oboru názvů aad-pod-identity
kube-system v konfiguraci AzurePodIdentityException
CRD.
Další informace najdete v tématu Zakázání identity podu Azure Active Directory (Azure AD) pro konkrétní pod nebo aplikaci.
Pokud chcete nakonfigurovat výjimku, postupujte podle tohoto příkladu:
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
Scénář: Poskytovatel prostředků není zaregistrovaný
Problém
Doplněk se může spojit s koncovým bodem služby Azure Policy, ale protokoly doplňků zobrazují jednu z následujících chyb:
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.
Příčina
Poskytovatel Microsoft.PolicyInsights
prostředků není zaregistrovaný. Aby bylo možné získat definice zásad a vrátit data dodržování předpisů, musí být zaregistrovaný pro doplněk.
Rozlišení
Microsoft.PolicyInsights
Zaregistrujte poskytovatele prostředků v předplatném clusteru. Pokyny najdete v tématu Registrace poskytovatele prostředků.
Scénář: Předplatné je zakázané
Problém
Doplněk se může připojit ke koncovému bodu služby Azure Policy, ale zobrazí se následující chyba:
The subscription '{subId}' has been disabled for azure data-plane policy. Please contact support.
Příčina
Tato chyba znamená, že předplatné bylo zjištěno, že je problematické a příznak Microsoft.PolicyInsights/DataPlaneBlocked
funkce se přidal k blokování předplatného.
Rozlišení
Pokud chcete tento problém prošetřit a vyřešit, obraťte se na tým funkcí.
Scénář: Definice v kategorii Konfigurace hosta nejde duplikovat z webu Azure Portal
Problém
Při pokusu o vytvoření vlastní definice zásad na stránce webu Azure Portal pro definice zásad vyberete tlačítko Duplikovat definici . Po přiřazení zásady zjistíte, že počítače nedodržují předpisy , protože neexistuje žádný prostředek přiřazení konfigurace hosta.
Příčina
Konfigurace hosta při vytváření prostředků přiřazení konfigurace hosta spoléhá na vlastní metadata přidaná do definic zásad. Aktivita duplicitní definice na webu Azure Portal nekopírovala vlastní metadata.
Rozlišení
Místo použití portálu duplikujte definici zásady pomocí rozhraní API Policy Insights. Následující ukázka PowerShellu nabízí možnost.
# 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)
Scénář: Prostředek Kubernetes se vytvoří během selhání připojení bez ohledu na přiřazené zásady zamítnutí
Problém
Pokud dojde k selhání připojení ke clusteru Kubernetes, může se vyhodnocení nově vytvořených nebo aktualizovaných prostředků obejít kvůli chování brány při selhání při selhání.
Příčina
Model GK bez selhání je založený na návrhu a na základě zpětné vazby komunity. Dokumentace gatekeeperu se rozšiřuje o tyto důvody: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.
Rozlišení
V předchozím případě lze případ chyby monitorovat z metrik webhooku přístupu poskytnutého webhookem kube-apiserver
. Pokud se vyhodnocení v době vytvoření vynechá a vytvoří se objekt, zobrazí se v souladu se zásadami Azure Policy jako příznak pro zákazníky.
Bez ohledu na scénář si zásady Azure zachová poslední známou zásadu v clusteru a zachovají ochranné mantinely.
Další kroky
Pokud váš problém není uvedený v tomto článku nebo ho nemůžete vyřešit, navštivte některý z následujících kanálů:
- Získejte odpovědi od odborníků prostřednictvím Microsoft Q&A.
- Připojte se pomocí @AzureSupport. Tento oficiální prostředek Microsoft Azure na platformě X pomáhá zlepšit uživatelské prostředí propojením komunity Azure se správnými odpověďmi, podporou a odborníky.
- Pokud stále potřebujete pomoc, přejděte na web podpora Azure a vyberte Odeslat lístek podpory.