Fastställa orsaker till icke-kompatibilitet

När en Azure-resurs bedöms vara icke-kompatibel med en principregel är det bra att förstå vilken del av regeln som resursen inte är kompatibel med. Det är också användbart att förstå vilken ändring som ändrade en tidigare kompatibel resurs för att göra den icke-kompatibel. Det finns två sätt att hitta den här informationen:

Efterlevnadsinformation

När en resurs inte är kompatibel är efterlevnadsinformationen för den resursen tillgänglig på sidan Principefterlevnad. Fönstret med efterlevnadsinformation innehåller följande information:

  • Resursinformation som namn, typ, plats och resurs-ID.
  • Efterlevnadstillstånd och tidsstämpel för den senaste utvärderingen för den aktuella principtilldelningen.
  • En lista över orsaker till resursens bristande efterlevnad.

Viktigt!

Eftersom efterlevnadsinformationen för en icke-kompatibel resurs visar det aktuella värdet för egenskaperna för den resursen måste användaren ha läsåtgärd för resurstypen . Om den icke-kompatibla resursen till exempel är Microsoft.Compute/virtualMachines måste användaren ha åtgärdenMicrosoft.Compute/virtualMachines/read. Om användaren inte har den nödvändiga åtgärden visas ett åtkomstfel.

Följ dessa steg om du vill visa efterlevnadsinformationen:

  1. Starta Azure Policy-tjänsten i Azure-portalen genom att välja Alla tjänster och sedan söka efter och välja Princip.

  2. På sidan Översikt eller Efterlevnad väljer du en princip i ett efterlevnadstillstånd som inte är kompatibelt.

  3. På fliken Resursefterlevnad på sidan Principefterlevnad väljer du och håller (eller högerklickar) eller väljer ellipsen för en resurs i ett efterlevnadstillstånd som inte är kompatibelt. Välj sedan Visa efterlevnadsinformation.

    Screenshot of the View compliance details link on the Resource compliance tab.

  4. Fönstret Efterlevnadsinformation visar information från den senaste utvärderingen av resursen till den aktuella principtilldelningen. I det här exemplet visar det sig att fältet Microsoft.Sql/servers/version är 12,0 medan principdefinitionen förväntade sig 14.0. Om resursen inte är kompatibel av flera orsaker visas var och en i det här fönstret.

    Screenshot of the Compliance details pane and reasons for non-compliance that current value is 12 and target value is 14.

    För en auditIfNotExists eller deployIfNotExists en principdefinition innehåller informationen egenskapen details.type och valfria egenskaper. En lista finns i auditIfNotExists-egenskaper och deployIfNotExists-egenskaper. Senast utvärderad resurs är en relaterad resurs från informationsavsnittet i definitionen.

    Exempel på partiell deployIfNotExists definition:

    {
      "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": {
            ...
          }
        }
      }
    }
    

    Screenshot of Compliance details pane for ifNotExists including evaluated resource count.

Kommentar

Om ett egenskapsvärde är en hemlighet visar det aktuella värdet asterisker för att skydda data.

Den här informationen förklarar varför en resurs för närvarande inte är kompatibel, men visar inte när ändringen gjordes för resursen som gjorde att den blev icke-kompatibel. Mer information finns i Ändringshistorik (förhandsversion).

Efterlevnadsskäl

Resource Manager-lägen och resursproviderlägen har olika orsaker till bristande efterlevnad.

Allmänna efterlevnadsskäl för Resource Manager-läge

I följande tabell mappas varje Resource Manager-lägesorsak till det ansvarsfulla villkoret i principdefinitionen:

Anledning Villkor
Aktuellt värde måste innehålla målvärdet som en nyckel. containsKey eller inteContainsKey
Aktuellt värde måste innehålla målvärdet. innehåller eller inteContains
Det aktuella värdet måste vara lika med målvärdet. är lika med eller inteEquals
Det aktuella värdet måste vara mindre än målvärdet. mindre eller inte störreEllerEquals
Det aktuella värdet måste vara större än eller lika med målvärdet. greaterOrEquals eller inte mindre
Det aktuella värdet måste vara större än målvärdet. större eller inte lessOrEquals
Det aktuella värdet måste vara mindre än eller lika med målvärdet. lessOrEquals eller inte större
Aktuellt värde måste finnas. finns
Det aktuella värdet måste finnas i målvärdet. in eller notIn
Det aktuella värdet måste vara som målvärdet. like or notLike
Det aktuella värdet måste vara skiftlägeskänsligt och matcha målvärdet. matcha eller inteMatcha
Det aktuella värdet måste vara skiftlägesokänsligt och matcha målvärdet. matchInsensitively eller notMatchInsensitively
Det aktuella värdet får inte innehålla målvärdet som en nyckel. notContainsKey eller inte containsKey
Det aktuella värdet får inte innehålla målvärdet. notContains eller inte innehåller
Det aktuella värdet får inte vara lika med målvärdet. notEquals eller inte är lika med
Aktuellt värde får inte finnas. finns inte
Det aktuella värdet får inte finnas i målvärdet. notIn eller inte i
Det aktuella värdet får inte vara som målvärdet. notLike eller inte som
Det aktuella värdet får inte vara skiftlägeskänsligt och matcha målvärdet. notMatch eller inte matcha
Det aktuella värdet får inte vara skiftlägeskänsligt och matcha målvärdet. notMatchInsensitively eller inte matchInsensitively
Inga relaterade resurser matchar effektinformationen i principdefinitionen. En resurs av den typ som definierats i then.details.type och som är relaterad till resursen som definierats i om-delen av principregeln inte finns.

Kompatibilitetsskäl för Azure Policy-resursproviderläge

I följande tabell mappas orsakskoden för resursproviderläget Microsoft.PolicyInsights till motsvarande förklaring:

Kod för efterlevnadsorsak Felmeddelande och förklaring
NonModifiablePolicyAlias NonModifiableAliasConflict: Aliaset {alias} kan inte ändras i begäranden med API-versionen {apiVersion}. Det här felet inträffar när en begäran med en API-version där aliaset inte stöder "ändra"-effekten eller bara stöder "ändra"-effekten med en annan tokentyp.
AppendPoliciesNotApplicable AppendPoliciesUnableToAppend: Aliasen: {alias }' kan inte ändras i begäranden med api-versionen: {apiVersion }. Detta kan inträffa i begäranden med hjälp av API-versioner för vilka aliasen inte stöder effekten "ändra" eller stöder effekten "ändra" med en annan tokentyp.
KonfliktAppendPolicies ConflictingAppendPolicies: Hittade motstridiga principtilldelningar som ändrar fältet {notApplicableFields}. Principidentifierare: {policy}. Kontakta prenumerationsadministratören för att uppdatera principtilldelningarna.
AppendPoliciesFieldsExist AppendPoliciesFieldsExistWithDifferentValues: Principtilldelningar försökte lägga till fält som redan finns i begäran med olika värden. Fält: {existingFields}. Principidentifierare: {policy}. Kontakta prenumerationsadministratören för att uppdatera principerna.
AppendPoliciesUndefinedFields AppendPoliciesUndefinedFields: Hittade principdefinition som refererar till en odefinierad fältegenskap för API-versionen {apiVersion}. Fält: {nonExistingFields}. Principidentifierare: {policy}. Kontakta prenumerationsadministratören för att uppdatera principerna.
MissingRegistrationForType MissingRegistrationForResourceType: Prenumerationen är inte registrerad för resurstypen {ResourceType}. Kontrollera att resurstypen finns och att resurstypen är registrerad.
AmbiguousPolicyEvaluationPaths Begärandeinnehållet har en eller flera tvetydiga sökvägar: "{0}" som krävs av principer: "{1}".
InvalidResourceNameWildcardPosition Det gick inte att utvärdera principtilldelningen{0} som är associerad med principdefinitionen{1}. Resursnamnet i{2} ett ifNotExists-villkor innehåller jokertecknet ?, i en ogiltig position. Jokertecken kan bara finnas i slutet av namnet i ett segment själva (till exempel TopLevelResourceName/?). Åtgärda principen eller ta bort principtilldelningen för att avblockera.
TooManyResourceNameSegments Det gick inte att utvärdera principtilldelningen{0} som är associerad med principdefinitionen{1}. Resursnamnet i{2} ett ifNotExists-villkor innehåller för många namnsegment. Antalet namnsegment måste vara lika med eller mindre än antalet typsegment (exklusive resursproviderns namnområde). Åtgärda principdefinitionen eller ta bort principtilldelningen för att avblockera.
InvalidPolicyFieldPath Fältsökvägen i{0} principdefinitionen är ogiltig. Fältsökvägar får inte innehålla några tomma segment. De kan bara innehålla alfanumeriska tecken med undantag för tecknet "." för att dela segment och teckensekvensen "[*]" för att komma åt matrisegenskaper.

Kompatibilitetsskäl för AKS-resursproviderläge

I följande tabell mappas orsaken Microsoft.Kubernetes.Datatill varje resursproviderläge till villkorsmallens ansvarsfulla tillstånd i principdefinitionen:

Anledning Orsaksbeskrivning för begränsningsmall
Constraint/TemplateCreateFailed Resursen kunde inte skapa för en principdefinition med en begränsning/mall som inte matchar en befintlig begränsning/mall i klustret efter resursmetadatanamn.
Constraint/TemplateUpdateFailed Begränsningen/mallen kunde inte uppdateras för en principdefinition med en begränsning/mall som matchar en befintlig begränsning/mall i klustret efter resursmetadatanamn.
Constraint/TemplateInstallFailed Begränsningen/mallen kunde inte skapas och kunde inte installeras i klustret för antingen skapa eller uppdatera åtgärden.
ConstraintTemplateConflicts Mallen har en konflikt med en eller flera principdefinitioner med samma mallnamn med en annan källa.
ConstraintStatusStale Det finns en befintlig granskningsstatus, men Gatekeeper har inte utfört någon granskning under den senaste timmen.
ConstraintNotProcessed Det finns ingen status och Gatekeeper har inte utfört någon granskning under den senaste timmen.
InvalidConstraint/Template Resursen avvisades på grund av någon av följande orsaker: ogiltig villkorsmall Rego-innehåll, ogiltig YAML eller en parametertyp som inte matchar mellan villkorsmallen (vilket ger ett strängvärde när ett heltal förväntades).

Kommentar

För befintliga principtilldelningar och villkorsmallar som redan finns i klustret skyddas klustret om villkoret/mallen misslyckas genom att den befintliga begränsningen/mallen bibehålls. Klustret rapporterar som icke-kompatibelt tills felet har lösts för principtilldelningen eller tillägget självläker. Mer information om hur du hanterar konflikter finns i Villkorsmallskonflikter.

Komponentinformation för resursproviderlägen

För tilldelningar med ett resursproviderläge väljer du den icke-kompatibla resursen för att visa dess komponentefterlevnadsposter. Fliken Komponentefterlevnad visar mer information som är specifik för läget Resursprovider, till exempel Komponentnamn, Komponent-ID och Typ.

Screenshot of Component Compliance dashboard and compliance details for assignments with a Resource Provider mode.

Efterlevnadsinformation för gästkonfiguration

För principdefinitioner i kategorin Gästkonfiguration kan det finnas flera inställningar som utvärderas på den virtuella datorn och du måste visa information per inställning. Om du till exempel granskar en lista över säkerhetsinställningar och endast en av dem har statusen Icke-kompatibel, måste du veta vilka specifika inställningar som inte är kompatibla och varför.

Du kanske inte heller har åtkomst till att logga in på den virtuella datorn direkt, men du måste rapportera om varför den virtuella datorn inte är kompatibel.

Azure Portal

Börja med att följa samma steg i avsnittet Efterlevnadsinformation för att visa information om principefterlevnad.

I fönstret Efterlevnadsinformation väljer du länken Senast utvärderad resurs.

Screenshot of viewing the auditIfNotExists definition compliance details.

sidan Gästtilldelning visas all tillgänglig efterlevnadsinformation. Varje rad i vyn representerar en utvärdering som utfördes på datorn. I kolumnen Orsak visas en fras som beskriver varför gästtilldelningen inte är kompatibel. Om du till exempel granskar lösenordsprinciper visar kolumnen Orsak text, inklusive det aktuella värdet för varje inställning.

Screenshot of the Guest Assignment compliance details.

Visa information om konfigurationstilldelning i stor skala

Gästkonfigurationsfunktionen kan användas utanför Azure Policy-tilldelningar. Till exempel skapar Azure Automanage gästkonfigurationstilldelningar, eller så kan du tilldela konfigurationer när du distribuerar datorer.

Om du vill visa alla gästkonfigurationstilldelningar i klientorganisationen öppnar du sidan Gästtilldelningar i Azure-portalen. Om du vill visa detaljerad efterlevnadsinformation väljer du varje tilldelning med hjälp av länken i kolumnen Namn.

Screenshot of the Guest Assignment page.

Ändringshistorik (förhandsversion)

Som en del av en ny offentlig förhandsversion är de senaste 14 dagarnas ändringshistorik tillgänglig för alla Azure-resurser som stöder fullständig borttagning av läge. Ändringshistorik innehåller information om när en ändring identifierades och ett visuellt diff för varje ändring. En ändringsidentifiering utlöses när Azure Resource Manager-egenskaperna läggs till, tas bort eller ändras.

  1. Starta Azure Policy-tjänsten i Azure-portalen genom att välja Alla tjänster och sedan söka efter och välja Princip.

  2. På sidan Översikt eller Efterlevnad väljer du en princip i alla efterlevnadstillstånd.

  3. På fliken Resursefterlevnad på sidan Principefterlevnad väljer du en resurs.

  4. Välj fliken Ändringshistorik (förhandsversion) på sidan Resursefterlevnad. En lista över identifierade ändringar, om det finns några, visas.

    Screenshot of the Change History tab and detected change times on Resource Compliance page.

  5. Välj en av de identifierade ändringarna. Det visuella diffet för resursen visas på sidan Ändringshistorik .

    Screenshot of the Change History Visual Diff of the before and after state of properties on the Change history page.

    Det visuellaiffet hjälper dig att identifiera ändringar i en resurs. De identifierade ändringarna kanske inte är relaterade till resursens aktuella efterlevnadstillstånd.

Ändringshistorikdata tillhandahålls av Azure Resource Graph. Information om hur du frågar efter den här informationen utanför Azure-portalen finns i Hämta resursändringar.

Nästa steg