Felsöka problem med att implementera Azure-principer på Key Vault
Den här artikeln beskriver hur du felsöker allmänna fel som kan uppstå när du konfigurerar Azure Policy för Key Vault och föreslår sätt att lösa dem.
Om Azure Policy for Key Vault
Azure Policy är ett styrningsverktyg som ger användarna möjlighet att granska och hantera sin Azure-miljö i stor skala. Azure Policy gör att du kan placera skyddsmekanismer på Azure-resurser för att säkerställa att de är kompatibla med tilldelade principregler. Det gör det möjligt för användare att utföra granskning, tillämpning i realtid och reparation av sin Azure-miljö. Resultatet av granskningar som utförs av principen kommer att vara tillgängliga för användare på en instrumentpanel för efterlevnad där de kan se en ökad detaljnivå för vilka resurser och komponenter som är kompatibla och vilka som inte är det.
Loggning
För att övervaka hur principutvärderingar utförs kan du granska Key Vault loggarna. Aktivera loggning för Azure Key Vault, vilket sparar information i ett Azure Storage-konto som du anger. Stegvisa anvisningar finns i Aktivera Key Vault loggning.
När du aktiverar loggning skapas automatiskt en ny container med namnet AzurePolicyEvaluationDetails för att samla in principrelaterad loggningsinformation i ditt angivna lagringskonto.
Anteckning
Du bör strikt reglera åtkomsten till övervakningsdata, särskilt loggfiler, eftersom de kan innehålla känslig information. Lär dig mer om hur du tillämpar den inbyggda övervakningsrollen i Azure och begränsar åtkomsten.
Enskilda blobbar lagras som text, formaterad som en JSON-blobb.
Nu ska vi titta på en exempelloggpost för en nyckelprincip: Nycklar ska ha ett angivet utgångsdatum. Den här principen utvärderar alla nycklar i dina nyckelvalv och flaggor som inte har ett utgångsdatum inställt som icke-kompatibelt.
{
"ObjectName": "example",
"ObjectType": "Key",
"IsComplianceCheck": false,
"EvaluationDetails": [
{
"AssignmentId": "<subscription ID>",
"AssignmentDisplayName": "[Preview]: Key Vault keys should have an expiration date",
"DefinitionId": "<definition ID>",
"DefinitionDisplayName": "[Preview]: Key Vault keys should have an expiration date",
"Outcome": "NonCompliant",
"ExpressionEvaluationDetails": [
{
"Result": "True",
"Expression": "type",
"ExpressionKind": "Field",
"ExpressionValue": "Microsoft.KeyVault.Data/vaults/keys",
"TargetValue": "Microsoft.KeyVault.Data/vaults/keys",
"Operator": "Equals"
},
{
"Result": "True",
"Expression": "Microsoft.KeyVault.Data/vaults/keys/attributes.expiresOn",
"ExpressionKind": "Field",
"ExpressionValue": "******",
"TargetValue": "False",
"Operator": "Exists"
}
]
}
]
}
I följande tabell visas fältnamn och beskrivningar:
Fältnamn | Beskrivning |
---|---|
ObjectName | Namnet på objektet |
ObjectType | Typ av nyckelvalvsobjekt: certifikat, hemlighet eller nyckel |
IsComplianceCheck | Sant om utvärderingen inträffade under granskning nattetid, falskt om utvärderingen gjordes när resursen skapades eller uppdaterades |
AssignmentId | ID för principtilldelningen |
AssignmentDisplayName | Eget namn på principtilldelningen |
DefinitionId | ID för principdefinitionen för tilldelningen |
DefinitionDisplayName | Eget namn på principdefinitionen för tilldelningen |
Resultatet | Resultatet av principutvärderingen |
ExpressionEvaluationDetails | Information om utvärderingarna som utförs under principutvärderingen |
ExpressionValue | Det faktiska värdet för det angivna fältet under principutvärderingen |
TargetValue | Förväntat värde för det angivna fältet |
Vanliga frågor och svar
Key Vault återställning som blockeras av Azure Policy
En av orsakerna kan vara att din prenumeration (eller hanteringsgrupp) har en princip som blockerar återställningen. Korrigeringen är att justera principen så att den inte tillämpas när ett valv återställs.
Om du ser feltypen RequestDisallowedByPolicy
för återställning på grund av den inbyggda principen kontrollerar du att du använder den mest uppdaterade versionen.
Om du har skapat en anpassad princip med din egen logik är här ett exempel på en del av en princip som kan användas för att kräva mjuk borttagning. Återställningen av ett mjukt borttaget valv använder samma API som att skapa eller uppdatera ett valv. Men i stället för att ange egenskaperna för valvet har det en enda "createMode"-egenskap med värdet "recover". Valvet återställs med de egenskaper som fanns när det togs bort. Principer som blockerar begäranden om de inte har specifika egenskaper konfigurerade blockerar även återställningen av mjukt borttagna valv. Korrigeringen är att inkludera en -sats som gör att principen ignorerar begäranden där "createMode" är "recover":
Du ser att den har en -sats som gör att principen endast tillämpas när "createMode" inte är lika med "återställ":
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.KeyVault/vaults"
},
{
"not": {
"field": "Microsoft.Keyvault/vaults/createMode",
"equals": "recover"
}
},
{
"anyOf": [
{
"field": "Microsoft.KeyVault/vaults/enableSoftDelete",
"exists": "false"
},
{
"field": "Microsoft.KeyVault/vaults/enableSoftDelete",
"equals": "false"
}
]
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
}
Svarstid vid borttagning av Azure-principtilldelning på Key Vault
Microsoft.KeyVault.Data: En borttagen principtilldelning kan ta upp till 24 timmar att sluta tillämpas.
Åtgärd: Uppdatera principtilldelningens effekt till "Inaktiverad".
Principutvärdering saknas när en hemlighet skapas via ARM-mallen
Dataplansprinciper som utvärderar skapande av hemligheter kan inte tillämpas på hemligheter som skapats via EN ARM-mall när hemligheten skapas. Efter 24 timmar, när den automatiserade kompatibilitetskontrollen skulle ske, och efterlevnadsresultaten kan granskas.
Nästa steg
- Lär dig hur du felsöker fel med Azure Policy
- Läs mer om Azure Policy kända problem