Ustalanie przyczyn niezgodności
Jeśli zasób platformy Azure jest określany jako niezgodny z regułą zasad, warto zrozumieć, która część reguły, z którą zasób nie jest zgodny. Warto również zrozumieć, która zmiana zmieniła wcześniej zgodny zasób, aby nie była zgodna. Istnieją dwa sposoby znajdowania tych informacji:
Szczegóły zgodności
Jeśli zasób jest niezgodny, szczegóły zgodności dla tego zasobu są dostępne na stronie Zgodność z zasadami . Okienko szczegółów zgodności zawiera następujące informacje:
- Szczegóły zasobu, takie jak nazwa, typ, lokalizacja i identyfikator zasobu.
- Stan zgodności i sygnatura czasowa ostatniej oceny dla bieżącego przypisania zasad.
- Lista przyczyn niezgodności zasobu.
Ważne
Ponieważ szczegóły zgodności zasobu Niezgodne pokazują bieżącą wartość właściwości tego zasobu, użytkownik musi mieć operację odczytu dla typu zasobu. Jeśli na przykład zasób niezgodny jest Microsoft.Compute/virtualMachines
, użytkownik musi mieć operację Microsoft.Compute/virtualMachines/read
. Jeśli użytkownik nie ma wymaganej operacji, zostanie wyświetlony błąd dostępu.
Aby wyświetlić szczegóły zgodności, wykonaj następujące kroki:
Uruchom usługę Azure Policy w witrynie Azure Portal, wybierając pozycję Wszystkie usługi, a następnie wyszukując i wybierając pozycję Zasady.
Na stronie Przegląd lub Zgodność wybierz zasady w stanie zgodności, który jest niezgodny.
Na karcie Zgodność zasobów na stronie Zgodność z zasadami wybierz i przytrzymaj (lub kliknij prawym przyciskiem myszy) lub wybierz wielokropek zasobu w stanie zgodności, który jest niezgodny. Następnie wybierz pozycję Wyświetl szczegóły zgodności.
W okienku Szczegóły zgodności są wyświetlane informacje z najnowszej oceny zasobu do bieżącego przypisania zasad. W tym przykładzie można znaleźć pole
Microsoft.Sql/servers/version
12.0, a definicja zasad powinna mieć wartość 14.0. Jeśli zasób jest niezgodny z wielu powodów, każdy z nich jest wyświetlany w tym okienku.auditIfNotExists
W przypadku definicji zasad lubdeployIfNotExists
szczegóły obejmują właściwość details.type i wszelkie właściwości opcjonalne. Aby uzyskać listę, zobacz właściwości auditIfNotExists i właściwości deployIfNotExists. Ostatnio oceniony zasób to powiązany zasób z sekcji szczegółów definicji.Przykładowa definicja częściowa
deployIfNotExists
:{ "if": { "field": "type", "equals": "[parameters('resourceType')]" }, "then": { "effect": "deployIfNotExists", "details": { "type": "Microsoft.Insights/metricAlerts", "existenceCondition": { "field": "name", "equals": "[concat(parameters('alertNamePrefix'), '-', resourcegroup().name, '-', field('name'))]" }, "existenceScope": "subscription", "deployment": { ... } } } }
Uwaga
Aby chronić dane, gdy wartość właściwości jest wpisem tajnym, bieżąca wartość wyświetla gwiazdki.
Te szczegóły wyjaśniają, dlaczego zasób jest obecnie niezgodny, ale nie pokazuj, kiedy wprowadzono zmianę zasobu, który spowodował jego niezgodność. Aby uzyskać te informacje, zobacz Historia zmian (wersja zapoznawcza).
Przyczyny zgodności
Tryby usługi Resource Manager i tryby dostawcy zasobów mają różne przyczyny niezgodności.
Ogólne przyczyny zgodności trybu usługi Resource Manager
Poniższa tabela mapuje każdą przyczynę trybu usługi Resource Manager na warunek odpowiedzialny w definicji zasad:
Przyczyna | Stan |
---|---|
Bieżąca wartość musi zawierać wartość docelową jako klucz. | containsKey lub notContainsKey |
Bieżąca wartość musi zawierać wartość docelową. | zawiera lub niecontains |
Bieżąca wartość musi być równa wartości docelowej. | equals lub notEquals |
Bieżąca wartość musi być mniejsza niż wartość docelowa. | mniejsze lub nie większe Lub większe |
Bieżąca wartość musi być większa lub równa wartości docelowej. | greaterOrEquals lub nie mniej |
Bieżąca wartość musi być większa niż wartość docelowa. | większa lub nie mniejsza |
Bieżąca wartość musi być mniejsza lub równa wartości docelowej. | lessOrEquals lub nie większe |
Bieżąca wartość musi istnieć. | istnieje |
Bieżąca wartość musi być w wartości docelowej. | in lub notIn |
Bieżąca wartość musi być podobna do wartości docelowej. | lub nie Lubię |
Bieżąca wartość musi być uwzględniana wielkość liter zgodną z wartością docelową. | dopasowanie lub notMatch |
Bieżąca wartość musi być bez uwzględniania wielkości liter zgodnie z wartością docelową. | matchInsensitively lub notMatchInsensitively |
Bieżąca wartość nie może zawierać wartości docelowej jako klucza. | notContainsKey lub nie containsKey |
Bieżąca wartość nie może zawierać wartości docelowej. | notContains lub nie zawiera |
Bieżąca wartość nie może być równa wartości docelowej. | notEquals lub not equals |
Bieżąca wartość nie może istnieć. | nie istnieje |
Bieżąca wartość nie może być w wartości docelowej. | notIn lub not in |
Bieżąca wartość nie może być podobna do wartości docelowej. | notLike lub nie lubię |
Bieżąca wartość nie może być uwzględniana wielkości literą zgodną z wartością docelową. | notMatch lub nie jest zgodny |
Bieżąca wartość nie może być bez uwzględniania wielkości liter zgodnie z wartością docelową. | notMatchInsensitively lub not matchInsensitively |
Brak powiązanych zasobów jest zgodny ze szczegółami efektu w definicji zasad. | Zasób typu zdefiniowanego w then.details.type pliku i powiązany z zasobem zdefiniowanym w części, jeśli część reguły zasad nie istnieje. |
Przyczyny zgodności trybu dostawcy zasobów usługi Azure Policy
Poniższa tabela mapuje Microsoft.PolicyInsights
kod przyczyny trybu dostawcy zasobów na odpowiednie wyjaśnienie:
Kod przyczyny zgodności | Komunikat o błędzie i wyjaśnienie |
---|---|
NonModifiablePolicyAlias | NonModifiableAliasConflict: alias "{alias}" nie można modyfikować w żądaniach przy użyciu wersji interfejsu API "{apiVersion}". Ten błąd występuje, gdy żądanie przy użyciu wersji interfejsu API, w której alias nie obsługuje efektu "modyfikuj" lub obsługuje tylko efekt "modyfikuj" z innym typem tokenu. |
AppendPoliciesNotApplicable | AppendPoliciesUnableToAppend: aliasy: "{ aliases }" nie można modyfikować w żądaniach przy użyciu wersji interfejsu API: "{ apiVersion }". Może się to zdarzyć w żądaniach przy użyciu wersji interfejsu API, dla których aliasy nie obsługują efektu "modyfikuj" lub obsługują efekt "modyfikuj" z innym typem tokenu. |
KonfliktyAppendPolicies | KonfliktAppendPolicies: Znaleziono sprzeczne przypisania zasad, które modyfikują pole "{notApplicableFields}". Identyfikatory zasad: "{policy}". Skontaktuj się z administratorem subskrypcji, aby zaktualizować przypisania zasad. |
AppendPoliciesFieldsExist | AppendPoliciesFieldsExistWithDifferentValues: przypisania zasad próbowały dołączyć pola, które już istnieją w żądaniu z różnymi wartościami. Pola: "{existingFields}". Identyfikatory zasad: "{policy}". Skontaktuj się z administratorem subskrypcji, aby zaktualizować zasady. |
AppendPoliciesUndefinedFields | AppendPoliciesUndefinedFields: Znaleziono definicję zasad odwołującą się do niezdefiniowanej właściwości pola dla wersji interfejsu API "{apiVersion}". Pola: "{nonExistingFields}". Identyfikatory zasad: "{policy}". Skontaktuj się z administratorem subskrypcji, aby zaktualizować zasady. |
MissingRegistrationForType | MissingRegistrationForResourceType: subskrypcja nie jest zarejestrowana dla typu zasobu "{ResourceType}". Sprawdź, czy typ zasobu istnieje i czy typ zasobu jest zarejestrowany. |
AmbiguousPolicyEvaluationPaths | Zawartość żądania ma co najmniej jedną niejednoznaczną ścieżkę: "{0}" wymaganą przez zasady: "{1}". |
InvalidResourceNameWildcardPosition | Nie można ocenić przypisania zasad "{0}" skojarzonego z definicją zasad "{1}". Nazwa zasobu "{2}" w warunku ifNotExists zawiera symbol wieloznaczny "?", w nieprawidłowej pozycji. Symbole wieloznaczne mogą znajdować się tylko na końcu nazwy segmentu (np. TopLevelResourceName/?). Napraw zasady lub usuń przypisanie zasad w celu odblokowania. |
TooManyResourceNameSegments | Nie można ocenić przypisania zasad "{0}" skojarzonego z definicją zasad "{1}". Nazwa zasobu "{2}" w warunku ifNotExists zawiera zbyt wiele segmentów nazw. Liczba segmentów nazw musi być równa lub mniejsza niż liczba segmentów typów (z wyłączeniem przestrzeni nazw dostawcy zasobów). Napraw definicję zasad lub usuń przypisanie zasad w celu odblokowania. |
InvalidPolicyFieldPath | Ścieżka pola "{0}" w definicji zasad jest nieprawidłowa. Ścieżki pól nie mogą zawierać pustych segmentów. Mogą zawierać tylko znaki alfanumeryczne z wyjątkiem znaku "." dla segmentów podziału i sekwencji znaków "[*]" w celu uzyskania dostępu do właściwości tablicy. |
Przyczyny zgodności trybu dostawcy zasobów usługi AKS
Poniższa tabela mapuje każdą Microsoft.Kubernetes.Data
przyczynę trybu dostawcy zasobów na stan odpowiedzialny szablonu ograniczenia w definicji zasad:
Przyczyna | Opis przyczyny szablonu ograniczenia |
---|---|
Ograniczenie/szablonUtwórzFailed | Nie można utworzyć zasobu dla definicji zasad z ograniczeniem/szablonem, który nie jest zgodny z istniejącym ograniczeniem/szablonem w klastrze według nazwy metadanych zasobu. |
Ograniczenie/TemplateUpdateFailed | Nie można zaktualizować ograniczenia/szablonu dla definicji zasad z ograniczeniem/szablonem zgodnym z istniejącą ograniczeniami/szablonem w klastrze według nazwy metadanych zasobu. |
Ograniczenie/szablonInstallFailed | Kompilacja ograniczenia/szablonu nie powiodła się i nie można jej zainstalować w klastrze dla operacji tworzenia lub aktualizowania. |
ConstraintTemplateConflicts | Szablon ma konflikt z co najmniej jedną definicją zasad używającą tej samej nazwy szablonu z innym źródłem. |
OgraniczenieStatusStale | Istnieje stan "Inspekcja", ale usługa Gatekeeper nie przeprowadziła inspekcji w ciągu ostatniej godziny. |
ConstraintNotProcessed | Nie ma stanu, a program Gatekeeper nie przeprowadził inspekcji w ciągu ostatniej godziny. |
InvalidConstraint/Template | Zasób został odrzucony z jednego z następujących powodów: nieprawidłowa zawartość rego szablonu ograniczeń, nieprawidłowa zawartość YAML lub niezgodność typów parametrów między szablonem ograniczeń i ograniczeń (podając wartość ciągu, gdy oczekiwano liczby całkowitej). |
Uwaga
W przypadku istniejących przypisań zasad i szablonów ograniczeń już w klastrze, jeśli to ograniczenie/szablon zakończy się niepowodzeniem, klaster jest chroniony przez zachowanie istniejącego ograniczenia/szablonu. Klaster zgłasza jako niezgodny, dopóki błąd nie zostanie rozwiązany w przypisaniu zasad lub samonależności dodatku. Aby uzyskać więcej informacji na temat obsługi konfliktów, zobacz Konflikty szablonów ograniczeń.
Szczegóły składnika dla trybów dostawcy zasobów
W przypadku przypisań w trybie dostawcy zasobów wybierz zasób Niezgodny , aby wyświetlić jego rekordy zgodności składników. Karta Zgodność składników zawiera więcej informacji specyficznych dla trybu dostawcy zasobów, takich jak nazwa składnika, identyfikator składnika i typ.
Szczegóły zgodności konfiguracji gościa
W przypadku definicji zasad w kategorii Konfiguracja gościa może istnieć wiele ustawień ocenianych wewnątrz maszyny wirtualnej i trzeba wyświetlić szczegóły poszczególnych ustawień. Jeśli na przykład przeprowadzasz inspekcję dla listy ustawień zabezpieczeń i tylko jeden z nich ma stan Niezgodne, musisz wiedzieć, które określone ustawienia są niezgodne i dlaczego.
Być może nie masz również dostępu do logowania się bezpośrednio do maszyny wirtualnej, ale musisz zgłosić, dlaczego maszyna wirtualna jest niezgodna.
Azure Portal
Zacznij od wykonania tych samych kroków w sekcji Szczegóły zgodności, aby wyświetlić szczegóły zgodności zasad.
W widoku okienka Szczegóły zgodności wybierz link Ostatnio oceniony zasób.
Na stronie Przypisanie gościa są wyświetlane wszystkie dostępne szczegóły zgodności. Każdy wiersz w widoku reprezentuje ocenę, która została wykonana wewnątrz maszyny. W kolumnie Przyczyna jest wyświetlana fraza opisująca, dlaczego przypisanie gościa jest niezgodne. Jeśli na przykład przeprowadzasz inspekcję zasad haseł, w kolumnie Przyczyna będzie wyświetlany tekst zawierający bieżącą wartość dla każdego ustawienia.
Wyświetlanie szczegółów przypisania konfiguracji na dużą skalę
Funkcja konfiguracji gościa może być używana poza przypisaniami usługi Azure Policy. Na przykład usługa Azure Automanage tworzy przypisania konfiguracji gościa lub można przypisać konfiguracje podczas wdrażania maszyn.
Aby wyświetlić wszystkie przypisania konfiguracji gościa w dzierżawie, w witrynie Azure Portal otwórz stronę Przypisania gościa . Aby wyświetlić szczegółowe informacje o zgodności, wybierz każde przypisanie przy użyciu linku w kolumnie Nazwa.
Historia zmian (wersja zapoznawcza)
W ramach nowej publicznej wersji zapoznawczej historia zmian z ostatnich 14 dni jest dostępna dla wszystkich zasobów platformy Azure, które obsługują usuwanie trybu pełnego. Historia zmian zawiera szczegółowe informacje o tym, kiedy została wykryta zmiana, oraz różnice wizualne dla każdej zmiany. Wykrywanie zmian jest wyzwalane po dodaniu, usunięciu lub zmianie właściwości usługi Azure Resource Manager.
Uruchom usługę Azure Policy w witrynie Azure Portal, wybierając pozycję Wszystkie usługi, a następnie wyszukując i wybierając pozycję Zasady.
Na stronie Przegląd lub Zgodność wybierz zasady w dowolnym stanie zgodności.
Na karcie Zgodność zasobów na stronie Zgodność z zasadami wybierz zasób.
Wybierz kartę Historia zmian (wersja zapoznawcza) na stronie Zgodność zasobów. Zostanie wyświetlona lista wykrytych zmian, jeśli istnieją.
Wybierz jedną z wykrytych zmian. Różnica wizualna zasobu jest wyświetlana na stronie Historia zmian.
Wizualizacja różnicuje elementy w identyfikowaniu zmian w zasobie. Wykryte zmiany mogą nie być powiązane z bieżącym stanem zgodności zasobu.
Dane historii zmian są udostępniane przez usługę Azure Resource Graph. Aby wykonywać zapytania dotyczące tych informacji poza witryną Azure Portal, zobacz Pobieranie zmian zasobów.
Następne kroki
- Zapoznaj się z przykładami w przykładach usługi Azure Policy.
- Przejrzyj temat Struktura definicji zasad Azure Policy.
- Przejrzyj wyjaśnienie działania zasad.
- Dowiedz się, jak programowo tworzyć zasady.
- Dowiedz się, jak uzyskać dane zgodności.
- Dowiedz się, jak korygować niezgodne zasoby.
- Sprawdź, co to jest grupa zarządzania za pomocą funkcji Organizowanie zasobów przy użyciu grup zarządzania platformy Azure.