Rozwiązywanie problemów z błędami używania usługi Azure Policy

Podczas tworzenia definicji zasad, pracy z zestawami SDK lub konfigurowania dodatku usługi Azure Policy dla platformy Kubernetes mogą wystąpić błędy. W tym artykule opisano różne ogólne błędy, które mogą wystąpić, i sugeruje sposoby ich rozwiązania.

Znajdowanie szczegółów błędu

Lokalizacja szczegółów błędu zależy od tego, z jakim aspektem usługi Azure Policy pracujesz.

  • Jeśli pracujesz z zasadami niestandardowymi, przejdź do witryny Azure Portal, aby uzyskać raport z procesu linting dotyczący schematu lub przejrzeć dane dotyczące zgodności, aby zobaczyć, w jaki sposób oceniono zasoby.
  • Jeśli pracujesz z dowolnym z poszczególnych zestawów SDK, dany zestaw SDK zawiera szczegółowe informacje na temat przyczyny zakończenia funkcji niepowodzeniem.
  • Jeśli pracujesz z dodatkiem dla platformy Kubernetes, rozpocznij od rejestrowania w klastrze.

Błędy ogólne

Scenariusz: nie znaleziono aliasu

Problem

W definicji zasad użyto nieprawidłowego lub nieistniejącego aliasu. Usługa Azure Policy używa aliasów do mapowania na właściwości usługi Azure Resource Manager.

Przyczyna

W definicji zasad użyto nieprawidłowego lub nieistniejącego aliasu.

Rozwiązanie

Najpierw sprawdź, czy właściwość usługi Resource Manager ma alias. Aby wyszukać dostępne aliasy, przejdź do rozszerzenia usługi Azure Policy dla programu Visual Studio Code lub do zestawu SDK. Jeśli alias właściwości usługi Resource Manager nie istnieje, utwórz bilet pomocy technicznej.

Scenariusz: szczegóły oceny nie są aktualne

Problem

Zasób jest w stanie Nie uruchomiono lub szczegóły zgodności nie są aktualne.

Przyczyna

Zastosowanie nowego przypisania zasad lub inicjatywy trwa około pięciu minut. Nowe lub zaktualizowane zasoby w zakresie istniejącego przypisania staną się dostępne w ciągu około 15 minut. Standardowe skanowanie zgodności jest wykonywane co 24 godziny. Aby uzyskać więcej informacji, zobacz Wyzwalacze oceny.

Rozwiązanie

Najpierw poczekaj odpowiedni czas na zakończenie oceny i udostępnienie wyników zgodności w witrynie Azure Portal lub zestawie SDK. Aby rozpocząć nowe skanowanie oceny przy użyciu programu Azure PowerShell lub interfejsu API REST, zobacz Skanowanie oceny na żądanie.

Scenariusz: zgodność nie jest zgodna z oczekiwaniami

Problem

Zasób nie jest w stanie oceny zgodnym lub niezgodnym, który jest oczekiwany dla zasobu.

Przyczyna

Zasób nie znajduje się w prawidłowym zakresie dla przypisania zasad lub definicja zasad nie działa zgodnie z oczekiwaniami.

Rozwiązanie

Aby rozwiązać problemy z definicją zasad, wykonaj następujące czynności:

  1. Najpierw poczekaj odpowiedni czas na zakończenie oceny i udostępnienie wyników zgodności w witrynie Azure Portal lub zestawie SDK.

  2. Aby rozpocząć nowe skanowanie oceny przy użyciu programu Azure PowerShell lub interfejsu API REST, zobacz Skanowanie oceny na żądanie.

  3. Upewnij się, że parametry przypisania i zakres przypisania są ustawione poprawnie.

  4. Sprawdź tryb definicji zasad:

    • Tryb powinien dotyczyć all wszystkich typów zasobów.
    • Tryb powinien być indexed taki, jeśli definicja zasad sprawdza tagi lub lokalizację.
  5. Upewnij się, że zakres zasobu nie jest wykluczony ani wykluczony.

  6. Jeśli zgodność przypisania zasad pokazuje 0/0 zasoby, nie określono zasobów, które mają być stosowane w zakresie przypisania. Sprawdź zarówno definicję zasad, jak i zakres przypisania.

  7. W przypadku niezgodnego zasobu, który miał być zgodny, zobacz Określanie przyczyn niezgodności. Porównanie definicji z wartością właściwości ocenianej wskazuje, dlaczego zasób był niezgodny.

    • Jeśli wartość docelowa jest nieprawidłowa, popraw definicję zasad.
    • Jeśli bieżąca wartość jest nieprawidłowa, zweryfikuj ładunek zasobu za pomocą polecenia resources.azure.com.
  8. W przypadku definicji trybu dostawcy zasobów obsługującej parametr ciągu regex (na przykład Microsoft.Kubernetes.Data i wbudowanej definicji "Obrazy kontenerów powinny być wdrażane tylko z zaufanych rejestrów"), sprawdź, czy parametr ciągu regEx jest poprawny.

  9. Aby zapoznać się z innymi typowymi problemami i rozwiązaniami, zobacz Rozwiązywanie problemów: wymuszanie nie jest zgodnie z oczekiwaniami.

Jeśli nadal masz problem ze zduplikowaną i dostosowaną wbudowaną definicją zasad lub definicją niestandardową, utwórz bilet pomocy technicznej w obszarze Tworzenie zasad w celu poprawnego skierowania problemu.

Scenariusz: wymuszanie jest niezgodne z oczekiwaniami

Problem

Usługa Azure Policy nie działa na zasobie, na którym jest to oczekiwane, i nie ma odpowiedniego wpisu w dzienniku aktywności platformy Azure.

Przyczyna

Przypisanie zasad zostało skonfigurowane dla ustawienia enforcementMode (Tryb wymuszania) z wartością Disabled (Wyłączone). Mimo że tryb enforcementMode jest wyłączony, efekt zasad nie jest wymuszany i nie ma wpisu w dzienniku aktywności.

Rozwiązanie

Rozwiąż problemy z wymuszaniem przypisania zasad, wykonując następujące czynności:

  1. Najpierw poczekaj odpowiedni czas na zakończenie oceny i udostępnienie wyników zgodności w witrynie Azure Portal lub zestawie SDK.

  2. Aby rozpocząć nowe skanowanie oceny przy użyciu programu Azure PowerShell lub interfejsu API REST, zobacz Skanowanie oceny na żądanie.

  3. Upewnij się, że parametry przypisania i zakres przypisania są ustawione poprawnie, a właściwość enforcementMode jest włączona.

  4. Sprawdź tryb definicji zasad:

    • Tryb powinien dotyczyć all wszystkich typów zasobów.
    • Tryb powinien być indexed taki, jeśli definicja zasad sprawdza tagi lub lokalizację.
  5. Upewnij się, że zakres zasobu nie jest wykluczony ani wykluczony.

  6. Sprawdź, czy ładunek zasobu jest zgodny z logiką zasad. Można to zrobić, przechwytując ślad archiwum HTTP (HAR) lub przeglądając właściwości szablonu usługi Azure Resource Manager (szablon usługi ARM).

  7. Aby zapoznać się z innymi typowymi problemami i rozwiązaniami, zobacz Rozwiązywanie problemów: zgodność nie jest taka, jak oczekiwano.

Jeśli nadal masz problem ze zduplikowaną i dostosowaną wbudowaną definicją zasad lub definicją niestandardową, utwórz bilet pomocy technicznej w obszarze Tworzenie zasad w celu poprawnego skierowania problemu.

Scenariusz: odmowa przez usługę Azure Policy

Problem

Tworzenie lub aktualizacja zasobu zostały odrzucone.

Przyczyna

Przypisanie zasad do zakresu nowego lub zaktualizowanego zasobu spełnia kryteria definicji zasad z efektem odmowy. Zasoby spełniające te definicje nie mogą być tworzone ani aktualizowane.

Rozwiązanie

Komunikat o błędzie od przypisania zasad odmowy zawiera identyfikatory definicji zasad i przypisania zasad. Jeśli informacje o błędzie w komunikacie zostały pominięte, są również dostępne w dzienniku aktywności. Skorzystaj z tych informacji, aby uzyskać więcej szczegółów w celu zrozumienia ograniczeń zasobów i dostosowania właściwości zasobu w żądaniu, aby pasowały do dozwolonych wartości.

Scenariusz: definicja dotyczy wielu typów zasobów

Problem

Weryfikacja definicji zasad obejmującej wiele typów zasobów kończy się niepowodzeniem podczas tworzenia lub aktualizacji z następującym błędem:

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

Przyczyna

Reguła definicji zasad zawiera co najmniej jeden warunek, który nie jest oceniany przez docelowe typy zasobów.

Rozwiązanie

Jeśli używany jest alias, upewnij się, że alias zostanie oceniony tylko względem typu zasobu, do którego należy, dodając warunek typu przed nim. Alternatywą jest podzielenie definicji zasad na wiele definicji, aby uniknąć określania wielu typów zasobów.

Scenariusz: przekroczono limit subskrypcji

Problem

Podczas pobierania zgodności dla przypisań zasad jest wyświetlany komunikat o błędzie na stronie zgodności w witrynie Azure Portal.

Przyczyna

Liczba subskrypcji w wybranych zakresach w żądaniu przekroczyła limit 5000 subskrypcji. Wyniki zgodności mogą być wyświetlane tylko w części.

Rozwiązanie

Aby wyświetlić pełne wyniki, wybierz bardziej szczegółowy zakres z mniejszą liczbą subskrypcji podrzędnych.

Błędy szablonu

Scenariusz: Obsługiwane przez zasady funkcje przetwarzane przez szablon

Problem

Usługa Azure Policy obsługuje wiele funkcji i funkcji szablonu usługi ARM, które są dostępne tylko w definicji zasad. Usługa Resource Manager przetwarza te funkcje w ramach wdrożenia zamiast w ramach definicji zasad.

Przyczyna

Użycie obsługiwanych funkcji, takich jak parameter() lub resourceGroup(), powoduje przetworzenie wyniku funkcji w czasie wdrażania zamiast zezwalania funkcji na przetwarzanie definicji zasad i aparatu usługi Azure Policy.

Rozwiązanie

Aby przekazać funkcję w ramach definicji zasad, należy uruchomić cały ciąg, [ tak aby właściwość wyglądała następująco: [[resourceGroup().tags.myTag]. Znak ucieczki powoduje, że usługa Resource Manager traktuje wartość jako ciąg podczas przetwarzania szablonu. Następnie usługa Azure Policy umieszcza funkcję w definicji zasad, co umożliwia jej dynamiczne działanie zgodnie z oczekiwaniami. Aby uzyskać więcej informacji, zobacz Składnia i wyrażenia w szablonach usługi Azure Resource Manager.

Błędy instalacji dodatku dla platformy Kubernetes

Scenariusz: instalacja przy użyciu pakietu Helm Chart kończy się niepowodzeniem z powodu błędu hasła

Problem

Polecenie helm install azure-policy-addon kończy się niepowodzeniem i zwraca jeden z następujących błędów:

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

Przyczyna

Wygenerowane hasło zawiera przecinek (,), na którym jest podzielony wykres Helm.

Rozwiązanie

Po uruchomieniu helm install azure-policy-addonpolecenia należy uruchomić znak ucieczki przecinka (,) w wartości hasła ukośnikiem odwrotnym (\).

Scenariusz: instalacja przy użyciu pakietu Helm Chart kończy się niepowodzeniem, ponieważ nazwa już istnieje

Problem

Polecenie helm install azure-policy-addon kończy się niepowodzeniem i zwraca następujący błąd:

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

Przyczyna

Pakiet Helm o nazwie azure-policy-addon został już zainstalowany lub częściowo zainstalowany.

Rozwiązanie

Postępuj zgodnie z instrukcjami, aby usunąć dodatek usługi Azure Policy dla platformy Kubernetes, a następnie ponownie uruchomić helm install azure-policy-addon polecenie.

Scenariusz: tożsamości przypisane przez użytkownika maszyny wirtualnej platformy Azure są zastępowane przez tożsamości zarządzane przypisane przez system

Problem

Po przypisaniu inicjatyw zasad konfiguracji gościa do ustawień inspekcji na maszynie tożsamości zarządzane przypisane przez użytkownika, które zostały przypisane do maszyny, nie są już przypisane. Przypisywana jest tylko tożsamość zarządzana przypisana przez system.

Przyczyna

Definicje zasad, które były wcześniej używane w definicjach deployIfNotExists konfiguracji gościa, upewniły się, że tożsamość przypisana przez system jest przypisana do maszyny, ale również usunęły przypisania tożsamości przypisanej przez użytkownika.

Rozwiązanie

Definicje, które wcześniej spowodowały ten problem, są wyświetlane jako [Przestarzałe] i są zastępowane definicjami zasad, które zarządzają wymaganiami wstępnymi bez usuwania tożsamości zarządzanych przypisanych przez użytkownika. Wymagany jest krok ręczny. Usuń wszystkie istniejące przypisania zasad oznaczone jako [Przestarzałe], a następnie zastąp je zaktualizowaną inicjatywą zasad wymagań wstępnych i definicjami zasad o tej samej nazwie co oryginalna.

Aby uzyskać szczegółową narrację, zobacz wpis w blogu Ważne zmiany wydane dla zasad inspekcji konfiguracji gościa.

Dodatek dla ogólnych błędów platformy Kubernetes

Scenariusz: Dodatek nie może uzyskać dostępu do punktu końcowego usługi Azure Policy z powodu ograniczeń ruchu wychodzącego

Problem

Dodatek nie może uzyskać dostępu do punktu końcowego usługi Azure Policy i zwraca jeden z następujących błędów:

  • 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

Przyczyna

Ten problem występuje, gdy ruch wychodzący klastra jest zablokowany.

Rozwiązanie

Upewnij się, że domeny i porty wymienione w następującym artykule są otwarte:

Scenariusz: dodatek nie może uzyskać dostępu do punktu końcowego usługi Azure Policy z powodu konfiguracji tożsamości aad-pod-identity

Problem

Dodatek nie może uzyskać dostępu do punktu końcowego usługi Azure Policy i zwraca jeden z następujących błędów:

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

Przyczyna

Ten błąd występuje, gdy w klastrze jest zainstalowana tożsamość aad-pod-, a zasobniki kube-system nie są wykluczone z tożsamości aad-pod-identity.

Zasobniki aad-pod-identity Node Managed Identity (NMI) modyfikują tabele iptable węzłów w celu przechwytywania wywołań do punktu końcowego metadanych wystąpienia platformy Azure. Ta konfiguracja oznacza, że każde żądanie wprowadzone do punktu końcowego metadanych jest przechwytywane przez NMI, nawet jeśli zasobnik nie używa tożsamości aad-pod-. Klasę AzurePodIdentityException CustomResourceDefinition (CRD) można skonfigurować tak, aby poinformować tożsamość aad-pod,że wszystkie żądania do punktu końcowego metadanych pochodzące z zasobnika zgodnego z etykietami zdefiniowanymi w crD powinny być proxied bez żadnego przetwarzania w usłudze NMI.

Rozwiązanie

Wyklucz zasobniki systemowe, które mają etykietę kubernetes.azure.com/managedby: aks w przestrzeni nazw kube-system w tożsamości aad-pod-identity, konfigurując identyfikator CRD azurePodIdentityException.

Aby uzyskać więcej informacji, zobacz Wyłączanie tożsamości zasobnika usługi Azure Active Directory (Azure AD) dla określonego zasobnika/aplikacji.

Aby skonfigurować wyjątek, wykonaj następujące czynności:

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

Scenariusz: dostawca zasobów nie jest zarejestrowany

Problem

Dodatek może uzyskać dostęp do punktu końcowego usługi Azure Policy, ale dzienniki dodatku zawierają jeden z następujących błędów:

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

Przyczyna

Dostawca zasobów "Microsoft.Policy Szczegółowe informacje" nie jest zarejestrowany. Aby uzyskać definicje zasad i zwracać dane zgodności, należy zarejestrować dodatek.

Rozwiązanie

Zarejestruj dostawcę zasobów "Microsoft.Policy Szczegółowe informacje" w subskrypcji klastra. Aby uzyskać instrukcje, zobacz Rejestrowanie dostawcy zasobów.

Scenariusz: Subskrypcja jest wyłączona

Problem

Dodatek może uzyskać dostęp do punktu końcowego usługi Azure Policy, ale zostanie wyświetlony następujący błąd:

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

Przyczyna

Ten błąd oznacza, że subskrypcja została określona jako problematyczna, a flaga Microsoft.PolicyInsights/DataPlaneBlocked funkcji została dodana w celu zablokowania subskrypcji.

Rozwiązanie

Aby zbadać i rozwiązać ten problem, skontaktuj się z zespołem funkcji.

Scenariusz: definicje w kategorii "Konfiguracja gościa" nie mogą być zduplikowane z witryny Azure Portal

Problem

Podczas próby utworzenia niestandardowej definicji zasad na stronie witryny Azure Portal dla definicji zasad należy wybrać przycisk "Duplikuj definicję". Po przypisaniu zasad można znaleźć maszyny są niezgodne , ponieważ nie istnieje żaden zasób przypisania konfiguracji gościa.

Przyczyna

Konfiguracja gościa opiera się na niestandardowych metadanych dodanych do definicji zasad podczas tworzenia zasobów przypisania konfiguracji gościa. Działanie "Zduplikowana definicja" w witrynie Azure Portal nie kopiuje niestandardowych metadanych.

Rozwiązanie

Zamiast korzystać z portalu, zduplikuj definicję zasad przy użyciu interfejsu API Szczegółowe informacje zasad. Poniższy przykład programu PowerShell udostępnia opcję.

# 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)

Scenariusz: Zasób Kubernetes jest tworzony podczas awarii łączności pomimo przypisywanych zasad odmowy

Problem

W przypadku awarii łączności klastra Kubernetes ocena nowo utworzonych lub zaktualizowanych zasobów może zostać pominięta z powodu zachowania bramy w trybie fail-open.

Przyczyna

Model GK otwierany w trybie fail-open jest projektowany i oparty na opiniach społeczności. Dokumentacja usługi Gatekeeper rozszerza następujące przyczyny: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Rozwiązanie

W powyższym zdarzeniu można monitorować przypadek błędu z metryk elementu webhook przyjęcia dostarczonych przez serwer kube-apiserver. A nawet jeśli ocena zostanie pominięta w czasie tworzenia i zostanie utworzony obiekt, nadal będzie raportowany na temat zgodności usługi Azure Policy jako niezgodnej jako flaga dla klientów.

Niezależnie od powyższego, w takim scenariuszu zasady platformy Azure zachowają ostatnie znane zasady w klastrze i zachowają zabezpieczenia.

Następne kroki

Jeśli problem nie znajduje się na liście w tym artykule lub nie możesz go rozwiązać, uzyskaj pomoc techniczną, odwiedzając jeden z następujących kanałów:

  • Uzyskaj odpowiedzi od ekspertów za pośrednictwem pytań i odpowiedzi firmy Microsoft.
  • Połączenie z @AzureSupport. Ten oficjalny zasób platformy Microsoft Azure w serwisie Twitter pomaga ulepszyć środowisko klienta, łącząc społeczność platformy Azure z odpowiednimi odpowiedziami, pomocą techniczną i ekspertami.
  • Jeśli nadal potrzebujesz pomocy, przejdź do witryny pomoc techniczna platformy Azure i wybierz pozycję Prześlij wniosek o pomoc techniczną.