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 znajduje się w stanie oceny Zgodne lub Niezgodne oczekiwane 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:
- 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.
- Upewnij się, że parametry przypisania i zakres przypisania są ustawione poprawnie.
- 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ę.
- Tryb powinien dotyczyć
- Upewnij się, że zakres zasobu nie jest wykluczony ani wykluczony.
- 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. - 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
.
- 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. - 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 wyłączone. Mimo enforcementMode
że 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:
- 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.
- Upewnij się, że parametry przypisania i zakres przydziału są ustawione poprawnie i że
enforcementMode
jest włączona. - 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ę.
- Tryb powinien dotyczyć
- Upewnij się, że zakres zasobu nie jest wykluczony ani wykluczony.
- Sprawdź, czy ładunek zasobu jest zgodny z logiką zasad. Tę weryfikację można przeprowadzić, przechwytując ślad archiwum HTTP (HAR) lub przeglądając właściwości szablonu usługi Azure Resource Manager (szablon usługi ARM).
- 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ć częściowo wyświetlane.
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-addon
polecenia 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 konfiguracji deployIfNotExists
gościa, upewniły się, że tożsamość przypisana przez system jest przypisana do maszyny. Usunięto również przypisania tożsamości przypisane przez użytkownika.
Rozwiązanie
Definicje, które wcześniej spowodowały ten problem, są wyświetlane jako \[Deprecated\]
, 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 \[Deprecated\]
, a następnie zastąp je zaktualizowaną inicjatywą zasad wymagań wstępnych i definicjami zasad, które mają taką samą nazwę jak 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:
- Wymagane reguły sieci wychodzącej i w pełni kwalifikowane nazwy domen (FQDN) dla klastrów usługi AKS
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 aad-pod-identity
jest zainstalowany w klastrze, a zasobniki kube-system nie są wykluczone w programie aad-pod-identity
.
Zasobniki aad-pod-identity
tożsamości zarządzanej węzła składnika (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 wszystkie żądania skierowane do punktu końcowego metadanych są przechwytywane przez NMI, nawet jeśli zasobnik nie używa elementu aad-pod-identity
. Można AzurePodIdentityException
skonfigurować parametr CustomResourceDefinition (CRD), aby poinformować aad-pod-identity
o tym, ż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 NMI.
Rozwiązanie
Wyklucz zasobniki systemowe, które mają etykietę kubernetes.azure.com/managedby: aks
w przestrzeni nazw kube-system w programie aad-pod-identity
, konfigurując AzurePodIdentityException
crD.
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 Microsoft.PolicyInsights
zasobów nie jest zarejestrowany. Aby uzyskać definicje zasad i zwracać dane zgodności, należy zarejestrować dodatek.
Rozwiązanie
Zarejestruj dostawcę Microsoft.PolicyInsights
zasobów 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 Zduplikowane definicje w witrynie Azure Portal nie kopiuje niestandardowych metadanych.
Rozwiązanie
Zamiast korzystać z portalu, zduplikuj definicję zasad przy użyciu interfejsu API usługi Policy Insights. 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
Jeśli wystąpi błąd łączności klastra Kubernetes, ocena nowo utworzonych lub zaktualizowanych zasobów może zostać pominięta z powodu zachowania trybu fail-open usługi Gatekeeper.
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 poprzednim przypadku przypadek błędu można monitorować z metryk elementu webhook przyjęcia dostarczonych kube-apiserver
przez element . Jeśli ocena zostanie pominięta w czasie tworzenia i zostanie utworzony obiekt, jest zgłaszany na podstawie zgodności usługi Azure Policy jako niezgodnej jako flaga dla klientów.
Niezależnie od scenariusza zasady platformy Azure zachowują ostatnie znane zasady w klastrze i utrzymują 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.
- Nawiąż połączenie z @AzureSupport. Ten oficjalny zasób platformy Microsoft Azure na platformie X 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 bilet pomocy technicznej.