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 har ändrat 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 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 inkompatibilitet

Viktigt

Eftersom kompatibilitetsinformationen för en icke-kompatibel resurs visar det aktuella värdet för egenskaper 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ärden Microsoft.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 kompatibilitetsinformationen:

  1. Starta Azure Policy-tjänsten i Azure Portal 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. Under fliken Resursefterlevnad på sidan Principefterlevnad väljer du och håller (eller högerklickar) eller väljer ellipsen för en resurs i ett kompatibilitetstillstånd som inte är kompatibelt. Välj sedan Visa efterlevnadsinformation.

    Skärmbild av länken Visa efterlevnadsinformation på fliken Resursefterlevnad.

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

    Skärmbild av fönstret Efterlevnadsinformation och orsaker till bristande efterlevnad att det aktuella värdet är tolv och målvärdet är fjorton.

    För en auditIfNotExists eller deployIfNotExists-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 distributionIfNotExists-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": {
                    ...
                }
            }
        }
    }
    

    Skärmbild av fönstret Efterlevnadsinformation för ifNotExists inklusive utvärderat resursantal.

Anteckning

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 i resursen som gjorde att den blev inkompatibel. Mer information finns i Ändringshistorik (förhandsversion) nedan.

Efterlevnadsskäl

Resource Manager lägen och lägen för resursprovidern har var och en olika orsaker till bristande efterlevnad.

Allmänna Resource Manager lägesefterlevnadsskäl

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. lika med eller inteEquals
Det aktuella värdet måste vara mindre än målvärdet. less or not greaterOrEquals
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
Aktuellt värde måste finnas i målvärdet. in eller inteIn
Aktuellt värde måste vara som målvärdet. like or notLike
Aktuellt värde måste skiftlägeskänsligt matcha målvärdet. matcha eller inteMatcha
Aktuellt värde måste skiftlägesokänsligt matcha målvärdet. matchInsensitively eller inteMatchInsensitively
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 innehåller inte
Det aktuella värdet får inte vara lika med målvärdet. notEquals eller inte 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
Aktuellt värde får inte skiftlägeskänsligt matcha målvärdet. notMatch eller inte matcha
Aktuellt värde får inte skiftlägesokänsligt matcha målvärdet. notMatchInsensitively eller inte matchInsensitively
Inga relaterade resurser matchar effektinformationen i principdefinitionen. En resurs av den typ som definieras i then.details.type och som är relaterad till den resurs 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 varje Microsoft.PolicyInsightsresursproviderläge 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-version: {apiVersion }. Detta kan inträffa i begäranden som använder API-versioner för vilka aliasen inte stöder "ändra"-effekten eller stöder "ändra"-effekten med en annan tokentyp.
KonfliktApparPrinciper 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: Principdefinitionen hittades 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 på egen hand (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 tomma segment. De får bara innehålla alfanumeriska tecken, med undantag för tecknet .' för att dela segment och teckensekvensen [*] för att få åtkomst till matrisegenskaper.

Kompatibilitetsskäl för AKS-resursproviderläge

I följande tabell mappas orsaken för varjeMicrosoft.Kubernetes.Dataresursproviderläge till villkorsmallens ansvarsfulla tillstånd i principdefinitionen:

Anledning Orsaksbeskrivning för villkorsmall
Constraint/TemplateCreateFailed Det gick inte att skapa resursen för en principdefinition med en begränsning/mall som inte matchar en befintlig begränsning/mall i klustret efter resursmetadatanamn.
Constraint/TemplateUpdateFailed Det gick inte att uppdatera villkoret/mallen för en principdefinition med en begränsning/mall som matchar en befintlig begränsning/mall i klustret efter resursmetadatanamn.
Constraint/TemplateInstallFailed Det gick inte att skapa villkoret/mallen och kunde inte installeras i klustret för att skapa eller uppdatera åtgärden.
ConstraintTemplateConflicts Mallen har en konflikt med en eller flera principdefinitioner som använder 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 API Server har avvisat resursen på grund av en felaktig YAML. Den här orsaken kan också orsakas av en parametertypsmatchningsfel (exempel: sträng som tillhandahålls för ett heltal)

Anteckning

För befintliga principtilldelningar och villkorsmallar som redan finns i klustret skyddas klustret genom att underhålla den befintliga begränsningen/mallen om villkoret/mallen misslyckas. Klustret rapporterar som inkompatibelt tills felet har lösts i principtilldelningen eller tillägget självreläker. Mer information om hur du hanterar konflikter finns i Konflikter i villkorsmallar.

Komponentinformation för resursproviderlägen

För tilldelningar med ett resursproviderläge väljer du den icke-kompatibla resursen för att öppna en djupare vy. På fliken Komponentefterlevnad finns ytterligare information som är specifik för resursproviderläget i den tilldelade principen som visar det icke-kompatiblakomponent- och komponent-ID:t.

Skärmbild av fliken Komponentefterlevnad och kompatibilitetsinformation för tilldelning av resursproviderläge.

Kompatibilitetsinformation för gästkonfiguration

För principdefinitioner i kategorin Gästkonfiguration kan flera inställningar 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 varför den virtuella datorn inte är kompatibel.

Azure Portal

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

I vyn Efterlevnadsinformation väljer du länken Senast utvärderad resurs.

Skärmbild av att visa auditIfNotExists definitionsefterlevnadsinformation.

På 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 är icke-kompatibel. Om du till exempel granskar lösenordsprinciper visar kolumnen Orsak text, inklusive det aktuella värdet för varje inställning.

Skärmbild av kompatibilitetsinformation för gästtilldelning.

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 från Azure Portal. Om du vill visa detaljerad efterlevnadsinformation väljer du varje tilldelning med hjälp av länken i kolumnen "Namn".

Skärmbild av sidan Gästtilldelning.

Ä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 borttagning i fullständigt läge. Ändringshistoriken innehåller information om när en ändring identifierades och en visuell diff för varje ändring. En ändringsidentifiering utlöses när Egenskaperna för Azure Resource Manager läggs till, tas bort eller ändras.

  1. Starta Azure Policy-tjänsten i Azure Portal 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 kompatibilitetstillstånd.

  3. Under 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.

    Skärmbild av fliken Ändringshistorik och identifierade ändringstider på sidan Resursefterlevnad.

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

    Skärmbild av den visuella ändringshistorikens diff för egenskapernas tillstånd före och efter på sidan Ändringshistorik.

Den visuella differensen hjälper dig att identifiera ändringar i en resurs. De ändringar som identifieras kanske inte är relaterade till resursens aktuella kompatibilitetsstatus.

Ändringshistorikdata tillhandahålls av Azure Resource Graph. Information om hur du kör frågor mot den här informationen utanför Azure Portal finns i Hämta resursändringar.

Nästa steg