Felsöka villkor för Rolltilldelning i Azure
Allmänna problem
Symptom – Villkoret tillämpas inte
Orsak 1
Säkerhetsobjekt har en eller flera rolltilldelningar i samma eller högre omfång.
Lösning 1
Se till att säkerhetsobjekten inte har flera rolltilldelningar (med eller utan villkor) som ger åtkomst till samma dataåtgärd som leder till att villkor inte tillämpas. Information om utvärderingslogik finns i Hur Azure RBAC avgör 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 någon av /blobs/write
eller /blobs/add/action
dataåtgärder. Om rolltilldelningen 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 rolltilldelningen har flera åtgärder som beviljar en behörighet kontrollerar du 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 resursprovidrar (till exempel Microsoft Storage) om uppdateringen. Resursprovidrar uppdaterar sina lokala cacheminnen omedelbart för att säkerställa att de har de senaste rolltilldelningarna. Den här processen slutförs på 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 du lägger till ett villkor
När du försöker lägga till en rolltilldelning med ett villkor får du ett fel som liknar:
The given role assignment condition is invalid.
Orsak 1
Egenskapen conditionVersion
är inställd på "1.0".
Lösning 1
Ange conditionVersion
egenskapen till "2.0".
Orsak 2
Villkoret är inte korrekt formaterat.
Lösning 2
Åtgärda eventuella problem med villkorsformat eller syntax . Du kan också lägga till villkoret med hjälp av det visuella redigeringsprogrammet i Azure-portalen.
Problem i det visuella redigeringsprogrammet
Symptom – Villkorsredigeraren visas när ett villkor redigeras
Du skapade ett villkor med hjälp av en mall som beskrivs i Delegera hantering av Azure-rolltilldelning till andra med villkor. När du försöker redigera villkoret visas redigeraren för avancerade villkor.
När du tidigare redigerade villkoret redigerade du med hjälp av villkorsmallen.
Orsak
Villkoret matchar inte mönstret för mallen.
Lösning 1
Redigera villkoret så att det matchar något av följande mallmönster.
Template | Villkor |
---|---|
Begränsa roller | Exempel: Begränsa roller |
Begränsa roller och huvudtyper | Exempel: Begränsa roller och huvudnamnstyper |
Begränsa roller och huvudnamn | Exempel: Begränsa roller och specifika grupper |
Tillåt alla utom specifika roller | Exempel: Tillåt de flesta roller, men tillåt inte andra att tilldela roller |
Lösning 2
Ta bort villkoret och återskapa det med hjälp av stegen i Delegera Hantering av Azure-rolltilldelning till andra med villkor.
Symptom – Huvudnamn visas inte i attributkällan
När du försöker lägga till en rolltilldelning med ett villkor visas inte Principal i listan Attributkälla .
I stället visas meddelandet:
To use principal (user) attributes, you must have Microsoft Entra permissions (such as the [Attribute Assignment Administrator](../active-directory/roles/permissions-reference.md#attribute-assignment-administrator) role) and custom security attributes defined in Microsoft Entra ID.
Orsak
Du uppfyller inte kraven. Om du vill använda huvudattribut måste du ha följande:
- Microsoft Entra-behörigheter för den inloggade användaren att läsa minst en attributuppsättning
- Anpassade säkerhetsattribut som definierats i Microsoft Entra-ID
Lösning
Öppna anpassade säkerhetsattribut för Microsoft Entra ID>.
Om du ser sidan Kom igång har du inte behörighet att läsa minst en attributuppsättning eller så har anpassade säkerhetsattribut inte definierats ännu.
Om anpassade säkerhetsattribut har definierats tilldelar du någon av följande roller i klientomfånget eller attributuppsättningsomfånget. Mer information finns i Hantera åtkomst till anpassade säkerhetsattribut i Microsoft Entra-ID.
- Attributdefinitionsläsare
- Attributtilldelningsläsare
- Attributdefinitionsadministratör
- Attributtilldelningsadministratör
Viktigt!
Som standard har global administratör och andra administratörsroller inte behörighet att läsa, definiera eller tilldela anpassade säkerhetsattribut.
Om anpassade säkerhetsattribut inte har definierats ännu tilldelar du rollen Attributdefinitionsadministratör i klientomfånget och lägger till anpassade säkerhetsattribut. Mer information finns i Lägga till eller inaktivera anpassade säkerhetsattribut i Microsoft Entra-ID.
När du är klar bör du kunna läsa minst en attributuppsättning.
Huvudkontot bör nu visas i listan Attributkälla när du lägger till en rolltilldelning med ett villkor.
Symptom – Huvudkontot visas inte i attributkällan när pim används
När du försöker lägga till en rolltilldelning med ett villkor med hjälp av Microsoft Entra Privileged Identity Management (PIM) visas inte Principal i listan Attributkälla.
Orsak
PIM stöder för närvarande inte användning av huvudattributet i ett rolltilldelningsvillkor.
Felmeddelanden i visualiseringsredigeraren
Symptom – Villkoret känns inte igen
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 gjordes till villkoret att den visuella redigeraren 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 – Attributet gäller inte fel för tidigare sparat villkor
När du öppnar ett tidigare sparat villkor i den visuella redigeraren får du följande meddelande:
Attribute does not apply for the selected actions. Select a different set of actions.
Orsak
I maj 2022 ändrades åtgärden Läs en blob från följande format:
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
Så här exkluderar du underåtgärden Blob.List
:
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
Om du har skapat ett villkor med åtgärden Läs en blob före maj 2022 kan det här felmeddelandet visas i det visuella redigeraren.
Lösning
Öppna fönstret Välj en åtgärd och avmarkera åtgärden Läs en blob igen.
Symptom – Attributet gäller inte fel
När du väljer en eller flera åtgärder i det visuella redigeraren med ett befintligt uttryck får du följande meddelande och det tidigare markerade attributet tas bort:
Attribute does not apply for the selected actions. Select a different set of actions.
Orsak
Det tidigare markerade attributet gäller inte längre för de markerade åtgärderna.
Lösning 1
I avsnittet Lägg till åtgärd väljer du en åtgärd som gäller för det valda attributet. En lista över lagringsåtgärder som varje lagringsattribut stöder finns i Åtgärder och attribut för Tilldelningsvillkor för Azure-rolltilldelning för Azure Blob Storage och Åtgärder och attribut för Azure-rolltilldelningsvillkor för Azure-köer.
Lösning 2
I avsnittet Build expression (Skapa uttryck ) väljer du ett attribut som gäller för de markerade åtgärderna. En lista över lagringsattribut som varje lagringsåtgärd stöder finns i Åtgärder och attribut för Tilldelningsvillkor för Azure-rolltilldelning för Azure Blob Storage och Åtgärder och attribut för Azure-rolltilldelningsvillkor för Azure-köer.
Symptom – Attributet gäller inte i den här kontextvarningen
När du gör ändringar i kodredigeraren och sedan växlar till den visuella redigeraren får du följande meddelande och det tidigare valda attributet tas bort:
Attribute does not apply in this context. Use a different role assignment scope or remove the expression.
Orsak
Det angivna attributet är inte tillgängligt i det aktuella omfånget, till exempel att använda Version ID
i ett lagringskonto med hierarkiskt namnområde aktiverat.
Lösning
Om du vill använda det angivna attributet skapar du rolltilldelningsvillkoret i ett annat omfång, till exempel resursgruppsomfång. Eller ta bort och återskapa uttrycket med hjälp av de markerade åtgärderna.
Symptom – Attributet identifieras inte
När du gör ändringar i kodredigeraren och sedan växlar till den visuella redigeraren får du följande meddelande och det tidigare valda attributet tas bort:
Attribute is not recognized. Select a valid attribute or remove the expression.
Orsak
Det angivna attributet identifieras inte, möjligen på grund av ett stavfel.
Lösning
Åtgärda stavfelet i kodredigeraren. Eller ta bort det befintliga uttrycket och använd det visuella redigeraren för att välja ett attribut.
Symptom – Attributvärdet är ogiltigt fel
När du gör ändringar i kodredigeraren och sedan växlar till den visuella redigeraren får du följande meddelande och det tidigare valda attributet tas bort:
Attribute value is invalid. Select another attribute or value.
Orsak
Höger sida av uttrycket innehåller ett attribut eller värde som inte är giltigt.
Lösning
Använd den visuella redigeraren för att välja ett attribut eller ange ett värde.
Symptom – Inga åtgärder har valts
När du tar bort alla åtgärder i den visuella redigeraren får du följande meddelande:
No actions selected. Select one or more actions to edit expressions.
Orsak
Det finns ett befintligt uttryck, men inga åtgärder har valts som mål.
Lösning
I avsnittet Lägg till åtgärd lägger du till en eller flera åtgärder som uttrycket ska rikta in sig på.
Symptom – Inga tillgängliga alternativ fel
När du försöker lägga till ett uttryck får du följande meddelande:
No options available
Orsak
Du valde att rikta in dig på flera åtgärder och det finns inga attribut som gäller för alla markerade åtgärder.
Lösning
I avsnittet Lägg till åtgärd väljer du färre åtgärder att rikta in sig på. Lägg till flera villkor för att rikta in dig på de åtgärder som du har tagit bort.
Symptom – Rolldefinitions-ID:t hittades inte
När du försöker lägga till ett uttryck får du följande meddelande:
Cannot find built-in or custom role definitions with IDs: <role IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.
Orsak
Ett eller flera rolldefinitions-ID:t som du försökte lägga till för attributet Rolldefinitions-ID hittades inte eller har inte rätt GUID-format: 00000000-0000-0000-0000-000000000000
.
Lösning
Använd villkorsredigeraren för att välja rollen. Om du nyligen har lagt till den anpassade rollen uppdaterar du sidan eller loggar ut och loggar in igen.
Symptom – huvud-ID:t hittades inte
När du försöker lägga till ett uttryck får du följande meddelande:
Cannot find users, groups, or service principals in Azure Active Directory with principal IDs: <principal IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.
Orsak
Ett eller flera huvud-ID:t som du försökte lägga till för attributet Principal ID hittades inte eller har inte rätt GUID-format: 00000000-0000-0000-0000-000000000000
.
Lösning
Använd villkorsredigeraren för att välja huvudkontot. Om du nyligen har lagt till huvudkontot uppdaterar du sidan eller loggar ut och loggar in igen.
Felmeddelanden i Azure PowerShell
Symptom – Resursattributet är inte giltigt fel
När du försöker lägga till en rolltilldelning med ett villkor med Hjälp av Azure PowerShell får du ett fel som liknar:
New-AzRoleAssignment : Resource attribute
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.
Orsak
Om ditt villkor innehåller ett dollartecken ($) måste du prefixa 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 Om citatregler.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"
Symptom – Fel vid kopiering och klistra in ett villkor
Orsak
Om du använder PowerShell och kopierar ett villkor från ett dokument kan det innehålla specialtecken som orsakar följande fel. Vissa redigerare (till exempel Microsoft Word) lägger till kontrolltecken när du formaterar text som inte visas.
The given role assignment condition is invalid.
Lösning
Om du kopierade ett villkor från en RTF-redigerare och du är säker på att villkoret är korrekt tar du bort alla blanksteg och returnerar och lägger sedan till relevanta blanksteg. Du kan också använda en oformaterad textredigerare eller en kodredigerare, till exempel Visual Studio Code.
Felmeddelanden i Azure CLI
Symptom – Resursattributet är inte giltigt fel
När du försöker lägga till en rolltilldelning med ett villkor med hjälp av Azure CLI får du ett fel som liknar:
Resource attribute Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.
Orsak
Om ditt villkor innehåller ett dollartecken ($) måste du prefixa det med ett omvänt snedstreck (\).
Lösning
Lägg till ett omvänt snedstreck (\) 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 NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<\$key_case_sensitive\$>] StringEquals 'Cascade'))"
Symptom – Fel med okända argument
När du försöker lägga till en rolltilldelning med ett villkor med hjälp av Azure CLI får du ett fel som liknar:
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 – 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 meddelandet bash: !: event not found
.
Orsak
Om historikexpansionen är aktiverad i Bash kan meddelandet bash: !: event not found
visas på grund av utropstecken (!).
Lösning
Inaktivera historikexpansion med kommandot set +H
. Om du vill återaktivera historikexpansion använder du set -H
.