Felsöka villkor för Azure-rolltilldelning (förhandsversion)

Viktigt

Rolltilldelningsvillkor för Azure ABAC och Azure finns för närvarande i förhandsversion. Den här förhandsversionen tillhandahålls utan serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Symptom – Villkoret tillämpas inte

Orsak 1

Säkerhetsobjekt har en eller flera rolltilldelningar i samma eller högre omfattning.

Lösning 1

Se till att säkerhetsobjekten inte har flera rolltilldelningar (med eller utan villkor) som beviljar åtkomst till samma dataåtgärd, vilket leder till att villkoren inte efterlevs. Information om utvärderingslogiken finns i Så här avgör Azure RBAC om en användare har åtkomst till en resurs.

Orsak 2

Rolltilldelningen har flera åtgärder som beviljar en behörighet och villkoret riktar sig inte mot alla åtgärder. Du kan till exempel skapa en blob om du har antingen /blobs/write /blobs/add/action dataåtgärder eller . Om din rolltilldelning har båda dataåtgärderna och du endast riktar in dig på en av dem i ett villkor ger rolltilldelningen behörighet att skapa blobar och kringgå villkoret.

Lösning 2

Om din rolltilldelning har flera åtgärder som beviljar en behörighet ser du till att du riktar in dig på alla relevanta åtgärder.

Orsak 3

När du lägger till ett villkor i en rolltilldelning kan det ta upp till 5 minuter innan villkoret tillämpas. När du lägger till ett villkor meddelas resursproviders (till exempel Microsoft.Storage) om uppdateringen. Resursproviders uppdaterar sina lokala cacheminnen omedelbart för att säkerställa att de har de senaste rolltilldelningarna. Den här processen slutförs inom 1 eller 2 minuter, men kan ta upp till 5 minuter.

Lösning 3

Vänta i 5 minuter och testa villkoret igen.

Symptom – Villkoret är inte giltigt fel när ett villkor läggs till

När du försöker lägga till en rolltilldelning med ett villkor får du ett fel som liknar följande:

The given role assignment condition is invalid.

Orsak

Villkoret är inte korrekt formaterat.

Lösning

Åtgärda eventuella problem med villkorsformat eller syntax. Du kan också lägga till villkoret med hjälp av den visuella redigeraren i Azure Portal.

Symptom – Resursattributet är inte giltigt fel när du lägger till ett villkor med Azure PowerShell

När du försöker lägga till en rolltilldelning med ett villkor med Azure PowerShell får du ett felmeddelande som liknar följande:

New-AzRoleAssignment : Resource attribute
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.

Orsak

Om villkoret innehåller ett dollartecken ($), måste du prefixet det med en backtick ( ` ).

Lösning

Lägg till en backtick ( ` ) före varje dollartecken. Följande visar ett exempel. Mer information om regler för citattecken i PowerShell finns i About Quoting Rules.

$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND @Request[subOperation] ForAnyOfAnyValues:StringEqualsIgnoreCase {'Blob.Read.WithTagConditions'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"

Symptom – Resursattributet är inte giltigt fel när du lägger till ett villkor med Hjälp av Azure CLI

När du försöker lägga till en rolltilldelning med ett villkor med hjälp av Azure CLI får du ett felmeddelande som liknar följande:

Resource attribute Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.

Orsak

Om villkoret innehåller ett dollartecken ($) måste du prefixa det med ett omsnedstreck ( \ ).

Lösning

Lägg till ett om bakstreck ( \ ) före varje dollartecken. Följande visar ett exempel. Mer information om regler för citattecken i Bash finns i Dubbla citattecken.

condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND @Request[subOperation] ForAnyOfAnyValues:StringEqualsIgnoreCase {'Blob.Read.WithTagConditions'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<\$key_case_sensitive\$>] StringEquals 'Cascade'))"

Symptom – Fel vid tilldelning av en villkorssträng till en variabel i Bash

När du försöker tilldela en villkorssträng till en variabel i Bash får du bash: !: event not found meddelandet.

Orsak

Om historikexpansion är aktiverad i Bash kan du se bash: !: event not found meddelandet på grund av utropstecknet (!).

Lösning

Inaktivera historikexpansion med kommandot set +H . Om du vill återaktivera historikexpansion använder du set -H .

Symptom – Fel med okända argument när du lägger till ett villkor med Hjälp av Azure CLI

När du försöker lägga till en rolltilldelning med ett villkor med hjälp av Azure CLI får du ett felmeddelande som liknar följande:

az: error: unrecognized arguments: --description {description} --condition {condition} --condition-version 2.0

Orsak

Du använder förmodligen en tidigare version av Azure CLI som inte stöder parametrar för rolltilldelningsvillkor.

Lösning

Uppdatera till den senaste versionen av Azure CLI (2.18 eller senare). Mer information finns i Installera Azure CLI.

Symptom – Villkoret känns inte igen i det visuella redigeringsprogram

När du har använt kodredigeraren växlar du till den visuella redigeraren och får ett meddelande som liknar följande:

The current expression cannot be recognized. Switch to the code editor to edit the expression or delete the expression and add a new one.

Orsak

Uppdateringar har gjorts i villkoret att det visuella redigeringsredigeraren inte kan parsa.

Lösning

Åtgärda eventuella problem med villkorsformat eller syntax. Du kan också ta bort villkoret och försöka igen.

Symptom – Fel vid kopiering och klistra in ett villkor

Orsak

Om du kopierar ett villkor från ett dokument kan det innehålla specialtecken och orsaka fel. Vissa redigeringsprogram (till exempel Microsoft Word) lägger till kontrolltecken när text formateras som inte visas.

Lösning

Om du är säker på att villkoret är korrekt tar du bort alla blanksteg och returnerar och lägger sedan tillbaka relevanta blanksteg.

Nästa steg