Ř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í ve stavu kompatibilního nebo nekompatibilního vyhodnocení, který se pro daný prostředek očekává.

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:

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

  2. 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í.

  3. Ujistěte se, že jsou správně nastavené parametry přiřazení a obor přiřazení.

  4. 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í.
  5. Ujistěte se, že rozsah prostředku není vyloučený nebo vyloučený.

  6. 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í.

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

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

V konfiguraci přiřazení zásad je vlastnost enforcementMode nastavená na hodnotu Zakázáno. Režim vynucení je zakázán, ale úč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ím zásad postupujte takto:

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

  2. 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í.

  3. Ujistěte se, že jsou správně nastavené parametry přiřazení a obor přiřazení a že je povoleno vynucováníMode.

  4. 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í.
  5. Ujistěte se, že rozsah prostředku není vyloučený nebo vyloučený.

  6. Ověřte, že datová část prostředku odpovídá logice zásad. Můžete to provést zachycením trasování archivu HTTP (HAR) nebo kontrolou vlastností šablony Azure Resource Manageru (ARM).

  7. 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. Můžou se zobrazit pouze částečné výsledky dodržování předpisů.

Rozlišení

Pokud chcete zobrazit úplné výsledky, vyberte podrobnější obor s méně podřízenými předplatnými.

Chyby šablony

Scénář: Podporované funkce zásad zpracovávané šablonou

Problém

Azure Policy podporuje řadu funkcí a funkcí šablon ARM, 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 již byl nainstalován nebo částečně nainstalován.

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 DeployIfNotExists konfigurace hosta, zajistily přiřazení identity přiřazené systémem k počítači, ale také odebraly přiřazení identity přiřazené uživatelem.

Rozlišení

Definice, které dříve způsobily tento problém, se zobrazují jako [zastaralé] a nahrazují se definicemi 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 [zastaralé], a nahraďte je aktualizovanými iniciativami 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í při instalaci identity aad-pod-identity v clusteru a pody kube-system nejsou vyloučeny v aad-pod-identity.

Pody node Managed Identity (NMI) komponenty aad-pod-identity upravují iptables uzlů tak, aby zachycovaly volání koncového bodu metadat instance Azure. Toto nastavení znamená, že NMI zachytí všechny požadavky vytvořené do koncového bodu metadat, i když pod nepoužívá identitu aad-pod. AzurePodIdentityException CustomResourceDefinition (CRD) je možné nakonfigurovat tak, aby informovala identitu podu aad-pod, že všechny požadavky na koncový bod metadat, který pochází z podu, který odpovídá popiskům definovaným v CRD, by měly být proxidovány 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ů kube-system v aad-pod-identity konfigurací CRD AzurePodIdentityException .

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 prostředků Microsoft.Policy Přehledy 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í

Zaregistrujte poskytovatele prostředků Microsoft.Policy Přehledy 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 Duplikovat definici na webu Azure Portal nekopírovala vlastní metadata.

Rozlišení

Místo použití portálu duplikujte definici zásady pomocí rozhraní API Přehledy Policy. 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

V případě selhání připojení ke clusteru Kubernetes se může 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řípadě výše je možné případ chyby monitorovat z metrik webhooku přístupu, které poskytuje server kube-apiserver. A i když se vyhodnocení v době vytvoření vynechá a objekt se vytvoří, bude se dál hlásit dodržování předpisů ve službě Azure Policy jako příznak pro zákazníky.

Bez ohledu na výše uvedené zásady v takovém scénáři zachová zásady Azure v clusteru poslední známou zásadu 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řipojení s @AzureSupport. Tento oficiální prostředek Microsoft Azure na Twitteru 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 žádost o podporu.