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:
Starta Azure Policy-tjänsten i Azure Portal genom att välja Alla tjänster och sedan söka efter och välja Princip.
På sidan Översikt eller Efterlevnad väljer du en princip i ett efterlevnadstillstånd som inte är kompatibelt.
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.
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.För en
auditIfNotExists
ellerdeployIfNotExists
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": { ... } } } }
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.Data
till 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.
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.
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 inte är kompatibel. Om du till exempel granskar lösenordsprinciper visar kolumnen Orsak text, inklusive det aktuella värdet för varje inställning.
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.
Ä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.
Starta Azure Policy-tjänsten i Azure Portal genom att välja Alla tjänster och sedan söka efter och välja Princip.
På sidan Översikt eller Efterlevnad väljer du en princip i alla efterlevnadstillstånd.
På fliken Resursefterlevnad på sidan Principefterlevnad väljer du en resurs.
Välj fliken Ändringshistorik (förhandsversion) på sidan Resursefterlevnad. En lista över identifierade ändringar, om det finns några, visas.
Välj en av de identifierade ändringarna. Det visuella diffet för resursen visas på sidan Ändringshistorik .
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 kör frågor mot den här informationen utanför Azure Portal finns i Hämta resursändringar.
Nästa steg
- Granska exempel i Azure Policy-exempel.
- Granska Azure Policy-definitionsstrukturen.
- Granska Förstå policy-effekter.
- Förstå hur du programmatiskt skapar principer.
- Lär dig hur du hämtar efterlevnadsdata.
- Lär dig hur du åtgärdar icke-kompatibla resurser.
- Granska vad en hanteringsgrupp är med Organisera dina resurser med Azure-hanteringsgrupper.