Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett villkor är en extra kontroll som du kan lägga till valfritt till din rolltilldelning för att ge mer detaljerad åtkomstkontroll. Du kan till exempel lägga till ett villkor som kräver att ett objekt har en specifik tagg för att läsa objektet. I den här artikeln beskrivs format och syntax för rolltilldelningsvillkor.
Villkorsformat
För att bättre förstå rolltilldelningsvillkor hjälper det att titta på formatet.
Enkelt villkor
Det mest grundläggande villkoret består av en riktad åtgärd och ett uttryck. En åtgärd är en åtgärd som en användare kan utföra på en resurstyp. Ett uttryck är en instruktion som utvärderas till sant eller falskt, vilket avgör om åtgärden tillåts utföras.
Följande visar formatet för ett enkelt villkor.
(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
)
)
Följande villkor har en åtgärd som "Läsa en blob". Uttrycket kontrollerar om containernamnet är blobs-example-container.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]
StringEquals 'blobs-example-container'
)
)
Hur ett villkor utvärderas
Om en användare försöker utföra en åtgärd i rolltilldelningen som inte <action>
är utvärderas !(ActionMatches)
till true och det övergripande villkoret utvärderas till sant för att åtgärden ska kunna utföras.
Om en användare försöker utföra <action>
i rolltilldelningen kommer !(ActionMatches)
att utvärderas som falskt. Därmed utvärderas uttrycket. Om uttrycket utvärderas till sant utvärderas det övergripande villkoret till sant så att <action>
kan utföras. Annars får <action>
inte utföras.
Följande pseudokod visar ett annat sätt att läsa det här villkoret.
if a user tries to perform an action in the role assignment that does not match <action>
{
Allow action to be performed
}
else
{
if <attribute> <operator> <value> is true
{
Allow <action> to be performed
}
else
{
Do not allow <action> to be performed
}
}
Underåtgärder
Vissa åtgärder har underåtgärder. Dataåtgärden Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
har till exempel underoperationen "Listblobar". Villkor med underåtgärder har följande format.
(
(
!(ActionMatches{'<action>'}
AND
SubOperationMatches{'<subOperation>'})
)
OR
(
<attribute> <operator> <value>
)
)
Flera åtgärder
Ett villkor kan innehålla flera åtgärder som du vill tillåta om villkoret är sant. Om du väljer flera åtgärder för ett enda villkor kan det finnas färre attribut att välja mellan för ditt villkor eftersom attributen måste vara tillgängliga för de valda åtgärderna.
(
(
!(ActionMatches{'<action>'})
AND
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
)
)
Flera uttryck
Ett villkor kan innehålla flera uttryck. Beroende på operatorn kan attribut kontrolleras mot flera värden.
(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
AND | OR
<attribute> <operator> {<value>, <value>, <value>}
AND | OR
<attribute> <operator> <value>
)
)
Flera villkor
Du kan också kombinera villkor för att rikta in dig på flera åtgärder.
(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
AND | OR
<attribute> <operator> {<value>, <value>, <value>}
AND | OR
<attribute> <operator> <value>
)
)
AND
(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
AND | OR
<attribute> <operator> <value>
)
)
Villkorssyntax
Följande visar syntaxen för ett rolltilldelningsvillkor.
(
(
!(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
AND
!(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
AND
...
)
OR
(
<attribute> <operator> {<value, <value>, ...}
AND | OR
<attribute> <operator> {<value>, <value>, ...}
AND | OR
...
)
)
AND
(
(
!(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
AND
!(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
AND
...
)
OR
(
<attribute> <operator> {<value, <value>, ...}
AND | OR
<attribute> <operator> {<value>, <value>, ...}
AND | OR
...
)
)
AND
...
Åtgärder
För närvarande kan villkor läggas till i inbyggda eller anpassade rolltilldelningar som har bloblagrings- eller kölagringsdataåtgärder. Här är några exempel på dessa inbyggda roller:
- Storage Blob Data-bidragsgivare
- Storage Blob Data-ägare
- Storage Blob Data-läsare
- Bidragsgivare för Lagringsködata
- Processor för datameddelanden i lagringskö
- Lagringsködatameddelandesändare
- Läsare av lagringskösdata
En lista över de lagringsåtgärder som du kan använda under förhållanden finns i:
- Åtgärder och attribut för villkor vid Azure-rolltilldelning för Azure Blob Storage
- Åtgärder och attribut för tilldelningsvillkor för Azure-rolltilldelning för Azure Queue Storage.
Attribut
Beroende på de valda åtgärderna kan attributet hittas på olika platser. Om du väljer flera åtgärder för ett enda villkor kan det finnas färre attribut att välja mellan för ditt villkor eftersom attributen måste vara tillgängliga för alla valda åtgärder. Om du vill ange ett attribut måste du inkludera källan som ett prefix.
Attributkälla | beskrivning | Kod |
---|---|---|
Miljö | Attributet är associerat med miljön för begäran, till exempel begärans nätverks ursprung eller aktuellt datum och tid. |
@Environment |
Rektor | Attributet är ett anpassat säkerhetsattribut som tilldelats principalen, till exempel ett användar- eller företagsprogram (tjänstens principal). | @Principal |
Förfrågan | Attributet är en del av åtgärdsbegäran, till exempel att ange blobindextaggen. | @Request |
Resurs | Attributet är en egenskap för resursen, till exempel ett containernamn. | @Resource |
En fullständig lista över de lagringsattribut som du kan använda under förhållanden finns i:
Miljöattribut
Miljöattribut associeras med de omständigheter under vilka åtkomstbegäran görs, till exempel datum och tid på dagen eller nätverksmiljön. Nätverksmiljön kan vara om åtkomsten är över en specifik privat slutpunkt eller ett virtuellt nätverksundernät, eller kanske via någon privat länk.
I följande tabell visas de miljöattribut som stöds för villkor.
Visningsnamn | beskrivning | Attribut | Typ |
---|---|---|---|
Är privat länk1 | Använd det här attributet i villkor för att kräva åtkomst via en privat länk. | isPrivateLink |
Boolesk |
Privat slutpunkt1,2 | Använd det här attributet i villkor för att begränsa åtkomsten över en specifik privat slutpunkt. | Microsoft.Network/privateEndpoints |
Sträng |
Undernät1,3 | Använd det här attributet i villkor för att begränsa åtkomsten från ett visst undernät. | Microsoft.Network/virtualNetworks/subnets |
Sträng |
UTC nu | Använd det här attributet i villkor för att begränsa åtkomsten till objekt under vissa tidsperioder. | UtcNow |
DateTime |
1 För kopieringsåtgärder gäller attributen Is private link
, Private endpoint
och Subnet
endast för målet, ett sådant lagringskonto, inte källan. Om du vill ha mer information om de kopieringsåtgärder som detta gäller väljer du varje attribut i tabellen för att se mer information.
2 Du kan bara använda Private endpoint
attributet om du för närvarande har minst en privat slutpunkt konfigurerad i din prenumeration.
3 Du kan bara använda Subnet
attributet om du för närvarande har minst ett virtuellt nätverksundernät med hjälp av tjänstslutpunkter som konfigurerats i din prenumeration.
Huvudattribut
Huvudattribut är anpassade säkerhetsattribut som tilldelats säkerhetsobjektet och som begär åtkomst till en resurs. Säkerhetsobjektet kan vara en användare eller ett företagsprogram (tjänstens huvudnamn).
Om du vill använda huvudattribut måste du ha följande:
- Microsoft Entra-behörigheter för den inloggade användaren, till exempel rollen Administratör för attributtilldelning
- Anpassade säkerhetsattribut som definierats i Microsoft Entra-ID
Mer information om anpassade säkerhetsattribut finns i:
- Lägga till eller inaktivera anpassade säkerhetsattribut i Microsoft Entra-ID
- Tillåt läsåtkomst till blobar baserat på taggar och anpassade säkerhetsattribut
- Principal visas inte i attributkällan
Attribueter för begäran
Begärandeattribut associeras med de villkor som anges i en åtkomstbegäran, till exempel det angivna prefixet för blobar som ska visas.
Resursattribut
Resursattribut är associerade med det objekt som åtkomst begärs till, till exempel lagringskontots namn, containernamn eller om hierarkiskt namnområde är aktiverat för lagringskontot.
Funktionsoperatorer
I det här avsnittet visas de funktionsoperatorer som är tillgängliga för att skapa villkor.
ActionMatches
Egendom | Värde |
---|---|
Operatör | ActionMatches |
Beskrivning | Kontrollerar om den aktuella åtgärden matchar det angivna åtgärdsmönstret. |
Exempel | ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} Om åtgärden som kontrolleras är lika med "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read", så är det sant. ActionMatches{'Microsoft.Authorization/roleAssignments/*'} Om åtgärden som kontrolleras är lika med "Microsoft.Authorization/roleAssignments/write", så är det sant ActionMatches{'Microsoft.Authorization/roleDefinitions/*'} Om åtgärden som kontrolleras är lika med "Microsoft.Authorization/roleAssignments/write", då är svaret falskt |
SubOperationMatches
Egendom | Värde |
---|---|
Operatör | SubOperationMatches |
Beskrivning | Kontrollerar om den aktuella underoperationen matchar det angivna underoperationsmönstret. |
Exempel | SubOperationMatches{'Blob.List'} |
Existerar
Fastighet or Egendom/Egenskap (depending on context) | Värde |
---|---|
Operatör | Exists |
Beskrivning | Kontrollerar om det angivna attributet finns. |
Exempel | Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:snapshot] |
Stöd för attribut1 |
Namn på krypteringsomfång Ögonblicksbild Versions-ID |
1 Operatorn Exists
stöds endast för dessa attribut i det visuella ABAC-villkorsverktyget i Azure Portal. Du kan lägga till operatorn i Exists
alla attribut med andra verktyg, till exempel PowerShell, Azure CLI, REST API och villkorskodredigeraren i Azure Portal.
Logiska operatorer
I det här avsnittet visas de logiska operatorer som är tillgängliga för att skapa villkor.
och
Egendom | Värde |
---|---|
Operatorer | AND && |
Beskrivning | Och operator. |
Exempel | !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) |
Eller
Egendom | Värde |
---|---|
Operatörer | OR || |
Beskrivning | Eller operator. |
Exempel | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeEquals '2022-06-01T00:00:00.0Z' OR NOT Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId |
Inte
Egendom | Värde |
---|---|
Operatorer | NOT ! |
Beskrivning | Negationsoperator eller inte-operator. |
Exempel | NOT Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] |
Booleska jämförelseoperatorer
I det här avsnittet visas de booleska jämförelseoperatorer som är tillgängliga för att konstruera villkor.
Egendom | Värde |
---|---|
Operatorer | BoolEquals BoolNotEquals |
Beskrivning | Boolesk jämförelse. |
Exempel | @Resource[Microsoft.Storage/storageAccounts:isHnsEnabled] BoolEquals true |
Strängjämförelseoperatorer
I det här avsnittet visas de strängjämförelseoperatorer som är tillgängliga för att skapa villkor.
StringEquals
Egendom | Värde |
---|---|
Operatorer | StringEquals StringEqualsIgnoreCase |
Beskrivning | Skiftlägeskänslig (eller skiftlägesokänslig) matchning. Värdena måste exakt matcha strängen. |
Exempel | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEquals 'Cascade' |
StringNotEquals
Egenskap | Värde |
---|---|
Operatorer | StringNotEquals StringNotEqualsIgnoreCase |
Beskrivning | Negation av StringEquals (eller StringEqualsIgnoreCase ) operatören. |
StringStartsWith
Egenskap | Värde |
---|---|
Operatorer | StringStartsWith StringStartsWithIgnoreCase |
Beskrivning | Skiftlägeskänslig (eller icke skiftlägeskänslig) matchning. Värdena börjar med strängen. |
StringNotStartsWith
Egendom | Värde |
---|---|
Operatorer | StringNotStartsWith StringNotStartsWithIgnoreCase |
Beskrivning | Negering av StringStartsWith -operatorn (eller StringStartsWithIgnoreCase -operatorn). |
StringLike
Fastighet | Värde |
---|---|
Operatorer | StringLike StringLikeIgnoreCase |
Beskrivning | Skiftlägeskänslig (eller skiftlägesokänslig) matchning. Värdena kan innehålla ett jokertecken med flera tecken (* ) eller ett jokertecken för enstaka tecken (? ) var som helst i strängen. Om det behövs kan dessa tecken undantagas genom att lägga till ett omvänt snedstreck \* och \? . |
Exempel | @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'readonly/*' Resource[name1] StringLike 'a*c?' Om Resource[name1] är lika med "abcd" är det sant Resource[name1] StringLike 'A*C?' Om Resource[name1] är lika med "abcd" är det falskt Resource[name1] StringLike 'a*c' Om Resource[name1] är lika med "abcd" är det falskt |
StringNotLike
Egendom | Värde |
---|---|
Operatorer | StringNotLike StringNotLikeIgnoreCase |
Beskrivning | Negation av StringLike (eller StringLikeIgnoreCase ) operatör. |
Numeriska jämförelseoperatorer
I det här avsnittet visas de numeriska jämförelseoperatorer som är tillgängliga för att skapa villkor.
Egendom | Värde |
---|---|
Operatorer | NumericEquals NumericNotEquals NumericGreaterThan NumericGreaterThanEquals NumericLessThan NumericLessThanEquals |
Beskrivning | Nummermatchning. Endast heltal stöds. |
DateTime-jämförelseoperatorer
I det här avsnittet visas de datum-/tidsjämförelseoperatorer som är tillgängliga för att konstruera villkor.
Egendom | Värde |
---|---|
Operatorer | DateTimeEquals DateTimeNotEquals DateTimeGreaterThan DateTimeGreaterThanEquals DateTimeLessThan DateTimeLessThanEquals |
Beskrivning | Fullständig precisionskontroll med formatet: yyyy-mm-ddThh:mm:ss.mmmmmmmZ . Används för blobversions-ID, blobsnapshot och aktuell UTC-tid. |
Exempel | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeEquals '2022-06-01T00:00:00.0Z' |
GUID-jämförelseoperatorer
I det här avsnittet listas jämförelseoperatorer för globalt unika identifierare (GUID) som är tillgängliga för att konstruera villkor.
Egendom | Värde |
---|---|
Operatorer | GuidEquals GuidNotEquals |
Beskrivning | Skiftlägesokänslig matchning med formatet: 00000000-0000-0000-0000-000000000000 . Används för att identifiera en resurs, till exempel huvudnamns-ID eller rolldefinitions-ID. |
Exempel |
Operatorer för kryssproduktjämförelse
I det här avsnittet visas de korsproduktjämförelseoperatorer som är tillgängliga för att konstruera villkor.
ForAnyOfAnyValues
Egendom | Värde |
---|---|
Operatorer | ForAnyOfAnyValues:StringEquals ForAnyOfAnyValues:StringEqualsIgnoreCase ForAnyOfAnyValues:StringNotEquals ForAnyOfAnyValues:StringNotEqualsIgnoreCase ForAnyOfAnyValues:StringLike ForAnyOfAnyValues:StringLikeIgnoreCase ForAnyOfAnyValues:StringNotLike ForAnyOfAnyValues:StringNotLikeIgnoreCase ForAnyOfAnyValues:NumericEquals ForAnyOfAnyValues:NumericNotEquals ForAnyOfAnyValues:NumericGreaterThan ForAnyOfAnyValues:NumericGreaterThanEquals ForAnyOfAnyValues:NumericLessThan ForAnyOfAnyValues:NumericLessThanEquals ForAnyOfAnyValues:GuidEquals ForAnyOfAnyValues:GuidNotEquals |
Beskrivning | Om minst ett värde på vänster sida uppfyller jämförelsen med minst ett värde till höger utvärderas uttrycket till sant. Har formatet : ForAnyOfAnyValues:<BooleanFunction> . Stöder flera strängar och tal. |
Exempel | @Resource[Microsoft.Storage/storageAccounts/encryptionScopes:name] ForAnyOfAnyValues:StringEquals {'validScope1', 'validScope2'} Om krypteringsomfångsnamnet är lika med validScope1 eller validScope2 , är det sant.{'red', 'blue'} ForAnyOfAnyValues:StringEquals {'blue', 'green'} true {'red', 'blue'} ForAnyOfAnyValues:StringEquals {'orange', 'green'} falskt |
ForAllOfAnyValues
Egendom | Värde |
---|---|
Operatörer | ForAllOfAnyValues:StringEquals ForAllOfAnyValues:StringEqualsIgnoreCase ForAllOfAnyValues:StringNotEquals ForAllOfAnyValues:StringNotEqualsIgnoreCase ForAllOfAnyValues:StringLike ForAllOfAnyValues:StringLikeIgnoreCase ForAllOfAnyValues:StringNotLike ForAllOfAnyValues:StringNotLikeIgnoreCase ForAllOfAnyValues:NumericEquals ForAllOfAnyValues:NumericNotEquals ForAllOfAnyValues:NumericGreaterThan ForAllOfAnyValues:NumericGreaterThanEquals ForAllOfAnyValues:NumericLessThan ForAllOfAnyValues:NumericLessThanEquals ForAllOfAnyValues:GuidEquals ForAllOfAnyValues:GuidNotEquals |
Beskrivning | Om varje värde på vänster sida uppfyller jämförelsen med minst ett värde till höger utvärderas uttrycket till sant. Har formatet : ForAllOfAnyValues:<BooleanFunction> . Stöder flera strängar och tal. |
Exempel | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] ForAllOfAnyValues:StringEquals {'Cascade', 'Baker', 'Skagit'} {'red', 'blue'} ForAllOfAnyValues:StringEquals {'orange', 'red', 'blue'} true {'red', 'blue'} ForAllOfAnyValues:StringEquals {'red', 'green'} falskt |
FörNågonAvAllaVärden
Fastighet | Värde |
---|---|
Operatorer | ForAnyOfAllValues:StringEquals ForAnyOfAllValues:StringEqualsIgnoreCase ForAnyOfAllValues:StringNotEquals ForAnyOfAllValues:StringNotEqualsIgnoreCase ForAnyOfAllValues:StringLike ForAnyOfAllValues:StringLikeIgnoreCase ForAnyOfAllValues:StringNotLike ForAnyOfAllValues:StringNotLikeIgnoreCase ForAnyOfAllValues:NumericEquals ForAnyOfAllValues:NumericNotEquals ForAnyOfAllValues:NumericGreaterThan ForAnyOfAllValues:NumericGreaterThanEquals ForAnyOfAllValues:NumericLessThan ForAnyOfAllValues:NumericLessThanEquals ForAnyOfAllValues:GuidEquals ForAnyOfAllValues:GuidNotEquals |
Beskrivning | Om minst ett värde på vänster sida uppfyller jämförelsen med varje värde till höger utvärderas uttrycket till sant. Har formatet : ForAnyOfAllValues:<BooleanFunction> . Stöder flera strängar och tal. |
Exempel | {10, 20} ForAnyOfAllValues:NumericLessThan {15, 18} true |
ForAllOfAllValues
Fastighet/Egendom | Värde |
---|---|
Operatorer | ForAllOfAllValues:StringEquals ForAllOfAllValues:StringEqualsIgnoreCase ForAllOfAllValues:StringNotEquals ForAllOfAllValues:StringNotEqualsIgnoreCase ForAllOfAllValues:StringLike ForAllOfAllValues:StringLikeIgnoreCase ForAllOfAllValues:StringNotLike ForAllOfAllValues:StringNotLikeIgnoreCase ForAllOfAllValues:NumericEquals ForAllOfAllValues:NumericNotEquals ForAllOfAllValues:NumericGreaterThan ForAllOfAllValues:NumericGreaterThanEquals ForAllOfAllValues:NumericLessThan ForAllOfAllValues:NumericLessThanEquals ForAllOfAllValues:GuidEquals ForAllOfAllValues:GuidNotEquals |
Beskrivning | Om varje värde på vänster sida uppfyller jämförelsen med varje värde till höger utvärderas uttrycket till sant. Har formatet : ForAllOfAllValues:<BooleanFunction> . Stöder flera strängar och tal. |
Exempel | {10, 20} ForAllOfAllValues:NumericLessThan {5, 15, 18} falskt {10, 20} ForAllOfAllValues:NumericLessThan {25, 30} true {10, 20} ForAllOfAllValues:NumericLessThan {15, 25, 30} falskt |
Specialtecken
Tecken | beskrivning |
---|---|
* |
En asterisk (*) representerar en jokerteckenmatchning med flera tecken som kan användas med Like operatorer. Om det behövs kan du fly från en asterisk genom att lägga till ett omvänt snedstreck \* . |
? |
Ett frågetecken (?) representerar ett enstaka jokertecken som kan användas med Like -operatorer. Om det behövs kan du maskera ett frågetecken genom att lägga till ett omvänt snedstreck \? . |
$ |
Ett dollartecken ($) används för att definiera taggnycklar. I Azure PowerShell, om en sträng som omges av dubbla citattecken (") innehåller ett dollartecken, måste du lägga till ett backtick-tecken (`) före det. Exempel: tags:Project<`$key_case_sensitive`$> . |
Gruppering och prioritet
Om du har tre eller fler uttryck för en riktad åtgärd med olika operatorer mellan uttrycken är utvärderingsordningen tvetydig. Du använder parenteser ()
för att gruppera uttryck och ange den ordning som uttrycken utvärderas. Uttryck som omges av parenteser har högre prioritet. Om du till exempel har följande uttryck:
a AND b OR c
Du måste lägga till parenteser på något av följande sätt:
(a AND b) OR c
a AND (b OR c)