Formát a syntaxe podmínky přiřazení role Azure

Podmínka je další kontrola, kterou můžete volitelně přidat k přiřazení role, abyste získali podrobnější řízení přístupu. Můžete například přidat podmínku, která vyžaduje, aby objekt měl ke čtení objektu určitou značku. Tento článek popisuje formát a syntaxi podmínek přiřazení rolí.

Formát podmínky

Pokud chcete lépe porozumět podmínkám přiřazení rolí, pomůže vám to podívat se na formát.

Jednoduchá podmínka

Nejzásadnější podmínka se skládá z cílené akce a výrazu. Akce je operace, kterou může uživatel provést u typu prostředku. Výraz je příkaz, který se vyhodnotí jako true nebo false, což určuje, jestli je akce povolena.

Následující příklad ukazuje formát jednoduché podmínky.

Formát jednoduché podmínky s jedinou akcí a jediným výrazem

(
    (
        !(ActionMatches{'<action>'})
    )
    OR
    (
        <attribute> <operator> <value>
    )
)

Následující podmínka má akci Čtení objektu blob. Výraz zkontroluje, jestli je název kontejneru blobs-example-container.

(
    (
        !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
    )
    OR 
    (
        @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]
        StringEquals 'blobs-example-container'
    )
)

Diagram znázorňující přístup pro čtení k objektům blob s konkrétním názvem kontejneru

Vyhodnocení podmínky

Pokud se uživatel pokusí provést akci v přiřazení role, která není <action>, !(ActionMatches) vyhodnotí se jako true a celková podmínka se vyhodnotí jako true, aby akce mohla být provedena.

Pokud se uživatel pokusí provést <action> v přiřazení role, !(ActionMatches) vyhodnotí se jako false, takže se výraz vyhodnotí. Pokud se výraz vyhodnotí jako pravdivý, vyhodnotí se celková podmínka jako true, aby bylo možné <action> provést. <action> Jinak není povoleno provádět.

Následující pseudokód ukazuje jiný způsob, jak tuto podmínku přečíst.

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
    }
}

Podoperace

Některé akce mají podoperace. Například akce Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read dat obsahuje podoperaci "Výpis objektů blob". Podmínky s podoperacemi mají následující formát.

Naformátujte akci s podoperací.

(
    (
        !(ActionMatches{'<action>'}
        AND
        SubOperationMatches{'<subOperation>'})

    )
    OR
    (
        <attribute> <operator> <value>
    )
)

Více akcí

Podmínka může obsahovat více akcí, které chcete povolit, pokud je podmínka pravdivá. Pokud pro jednu podmínku vyberete více akcí, může být pro vaši podmínku méně atributů, protože atributy musí být dostupné napříč vybranými akcemi.

Umožňuje formátovat více akcí, které umožní, pokud je podmínka pravdivá.

(
    (
        !(ActionMatches{'<action>'})
        AND
        !(ActionMatches{'<action>'})
    )
    OR
    (
        <attribute> <operator> <value>
    )
)

Více výrazů

Podmínka může obsahovat více výrazů. V závislosti na operátoru lze atributy zkontrolovat na více hodnotách.

Formát pro více výrazů pomocí logických operátorů a více hodnot

(
    (
        !(ActionMatches{'<action>'})
    )
    OR
    (
        <attribute> <operator> <value>
        AND | OR
        <attribute> <operator> {<value>, <value>, <value>}
        AND | OR
        <attribute> <operator> <value>
    )
)

Více podmínek

Můžete také zkombinovat podmínky pro cílení na více akcí.

Formát pro více podmínek pomocí logického operátoru

(
    (
        !(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>
    )
)

Syntaxe podmínky

Následující příklad ukazuje syntaxi podmínky přiřazení role.

(
    (
        !(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
...

Akce

V současné době je možné podmínky přidat do předdefinovaných nebo vlastních přiřazení rolí, které mají akce úložiště objektů blob nebo ukládání dat do fronty. Patří mezi ně následující předdefinované role:

Seznam akcí úložiště, které můžete použít v podmínkách, najdete tady:

Atributy

V závislosti na vybraných akcích se atribut může nacházet na různých místech. Pokud pro jednu podmínku vyberete více akcí, může být pro vaši podmínku méně atributů, protože atributy musí být dostupné ve všech vybraných akcích. Pokud chcete zadat atribut, musíte zdroj zahrnout jako předponu.

Zdroj atributů Popis Kód
Prostředí Atribut je přidružený k prostředí požadavku, například k síťovému původu požadavku nebo k aktuálnímu datu a času.
@Environment
Hlavní Atribut je vlastní atribut zabezpečení přiřazený k objektu zabezpečení, jako je uživatel nebo podniková aplikace (instanční objekt). @Principal
Požádat Atribut je součástí požadavku akce, například nastavení značky indexu objektu blob. @Request
Prostředek Atribut je vlastnost prostředku, například název kontejneru. @Resource

Úplný seznam atributů úložiště, které můžete použít v podmínkách, najdete tady:

Atributy prostředí

Atributy prostředí jsou přidružené k okolnostem, za kterých se žádost o přístup provede, například datum a čas dne nebo síťové prostředí. Síťové prostředí může být bez ohledu na to, jestli je přístup přes konkrétní privátní koncový bod nebo podsíť virtuální sítě, nebo možná přes jakékoli privátní propojení.

Následující tabulka uvádí podporované atributy prostředí pro podmínky.

Display name Popis Atribut Typ
Je private link1 Tento atribut použijte v podmínkách, pokud chcete vyžadovat přístup k libovolnému privátnímu propojení. isPrivateLink Logická hodnota
Privátní koncový bod1 2 Tento atribut použijte v podmínkách k omezení přístupu přes konkrétní privátní koncový bod. Microsoft.Network/privateEndpoints Řetězec
Podsíť1,3 Tento atribut použijte v podmínkách k omezení přístupu z konkrétní podsítě. Microsoft.Network/virtualNetworks/subnets Řetězec
UTC Tento atribut použijte v podmínkách k omezení přístupu k objektům během určitých časových období. UtcNow Datetime

1 Pro operace kopírování platí Is private linkPrivate endpoint, a Subnet atributy pouze pro cíl, takový účet úložiště, nikoli zdroj. Další informace o operacích kopírování, které se týkají, získáte výběrem jednotlivých atributů v tabulce a zobrazit další podrobnosti.
2 Atribut můžete použít Private endpoint pouze v případě, že máte v předplatném nakonfigurovaný aspoň jeden privátní koncový bod.
3 Atribut můžete použít Subnet pouze v případě, že aktuálně máte aspoň jednu podsíť virtuální sítě pomocí koncových bodů služby nakonfigurovaných ve vašem předplatném.

Hlavní atributy

Hlavní atributy jsou vlastní atributy zabezpečení přiřazené objektu zabezpečení požadujícího přístup k prostředku. Objekt zabezpečení může být uživatel nebo podniková aplikace (instanční objekt).

Pokud chcete použít hlavní atributy, musíte mít následující:

Další informace o vlastníchatributch

Atributy požadavku

Atributy požadavku jsou přidružené k kritériím zadaným v žádosti o přístup, jako je například zadaná předpona objektů blob, které mají být uvedeny.

Atributy prostředků

Atributy prostředků jsou přidružené k objektu, ke kterému se požaduje přístup, například název účtu úložiště, název kontejneru nebo jestli je pro účet úložiště povolený hierarchický obor názvů.

Operátory funkcí

V této části jsou uvedeny operátory funkcí, které jsou k dispozici pro vytvoření podmínek.

AkceMatches

Vlastnost Hodnota
Operátor ActionMatches
Popis Zkontroluje, jestli aktuální akce odpovídá zadanému vzoru akce.
Příklady ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}
Pokud se akce kontroluje jako Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read, pak true

ActionMatches{'Microsoft.Authorization/roleAssignments/*'}
Pokud se akce kontrolovaná rovná hodnotě Microsoft.Authorization/roleAssignments/write, pak hodnota true

ActionMatches{'Microsoft.Authorization/roleDefinitions/*'}
Pokud se akce kontrolovaná rovná hodnotě Microsoft.Authorization/roleAssignments/write, pak nepravda.

SubOperationMatches

Vlastnost Hodnota
Operátor SubOperationMatches
Popis Zkontroluje, jestli aktuální podoperace odpovídá zadanému vzoru podoperace.
Příklady SubOperationMatches{'Blob.List'}

Exists

Vlastnost Hodnota
Operátor Exists
Popis Zkontroluje, jestli zadaný atribut existuje.
Příklady Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:snapshot]
Podpora atributů1 Název oboru šifrování
Snímková
ID verze

1 Operátor Exists je podporován pouze pro tyto atributy v tvůrci podmínek ABAC vizuálu na webu Azure Portal. Operátor můžete přidat Exists k libovolnému atributu pomocí jiných nástrojů, jako je PowerShell, Azure CLI, rest API a editor kódu podmínky na webu Azure Portal.

Logické operátory

Tato část obsahuje seznam logických operátorů, které jsou k dispozici pro vytváření podmínek.

And

Vlastnost Hodnota
Operátory AND
&&
Popis Operátor And.
Příklady !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})

Nebo

Vlastnost Hodnota
Operátory OR
||
Popis Nebo operátor.
Příklady @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

Not

Vlastnost Hodnota
Operátory NOT
!
Popis Operátor negace nebo negace
Příklady NOT Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId]

Logické relační operátory

Tato část obsahuje seznam logických relačních operátorů, které jsou k dispozici pro vytváření podmínek.

Vlastnost Hodnota
Operátory BoolEquals
BoolNotEquals
Popis Logické porovnání.
Příklady @Resource[Microsoft.Storage/storageAccounts:isHnsEnabled] BoolEquals true

Operátory porovnání řetězců

V této části jsou uvedeny operátory porovnání řetězců, které jsou k dispozici pro vytváření podmínek.

StringEquals

Vlastnost Hodnota
Operátory StringEquals
StringEqualsIgnoreCase
Popis Rozlišovat malá a velká písmena (nebo rozlišovat malá a velká písmena) porovnávání. Hodnoty musí přesně odpovídat řetězci.
Příklady @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEquals 'Cascade'

StringNotEquals

Vlastnost Hodnota
Operátory StringNotEquals
StringNotEqualsIgnoreCase
Popis Negace operátoru StringEquals (nebo StringEqualsIgnoreCase)

StringStartsWith

Vlastnost Hodnota
Operátory StringStartsWith
StringStartsWithIgnoreCase
Popis Rozlišovat malá a velká písmena (nebo rozlišovat malá a velká písmena) porovnávání. Hodnoty začínají řetězcem.

StringNotStartsWith

Vlastnost Hodnota
Operátory StringNotStartsWith
StringNotStartsWithIgnoreCase
Popis Negace operátoru StringStartsWith (nebo StringStartsWithIgnoreCase)

StringLike

Vlastnost Hodnota
Operátory StringLike
StringLikeIgnoreCase
Popis Rozlišovat malá a velká písmena (nebo rozlišovat malá a velká písmena) porovnávání. Tyto hodnoty můžou obsahovat zástupný znak (*) nebo zástupný znak s jedním znakem (?) kdekoli v řetězci. V případě potřeby lze tyto znaky utéct přidáním zpětného lomítka \* a \?.
Příklady @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'readonly/*'

Resource[name1] StringLike 'a*c?'
Pokud se prostředek[name1] rovná "abcd", pak true

Resource[name1] StringLike 'A*C?'
Pokud se prostředek[name1] rovná "abcd", pak nepravda

Resource[name1] StringLike 'a*c'
Pokud se prostředek[name1] rovná "abcd", pak nepravda

StringNotLike

Vlastnost Hodnota
Operátory StringNotLike
StringNotLikeIgnoreCase
Popis Negace operátoru StringLike (nebo StringLikeIgnoreCase)

Číselné relační operátory

Tato část obsahuje seznam číselných relačních operátorů, které jsou k dispozici pro vytváření podmínek.

Vlastnost Hodnota
Operátory NumericEquals
NumericNotEquals
NumericGreaterThan
NumericGreaterThanEquals
NumericLessThan
NumericLessThanEquals
Popis Párování čísel Podporují se pouze celá čísla.

Operátory porovnání data a času

V této části jsou uvedeny operátory porovnání data a času, které jsou k dispozici pro vytváření podmínek.

Vlastnost Hodnota
Operátory DateTimeEquals
DateTimeNotEquals
DateTimeGreaterThan
DateTimeGreaterThanEquals
DateTimeLessThan
DateTimeLessThanEquals
Popis Kontrola úplné přesnosti ve formátu: yyyy-mm-ddThh:mm:ss.mmmmmmmZ. Používá se pro ID verze objektu blob, snímek objektu blob a UTC.
Příklady @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeEquals '2022-06-01T00:00:00.0Z'

Relační operátory GUID

V této části jsou uvedeny globálně jedinečné relační operátory identifikátoru (GUID), které jsou k dispozici pro vytváření podmínek.

Vlastnost Hodnota
Operátory GuidEquals
GuidNotEquals
Popis Porovnávání nerozlišující malá a velká písmena s formátem: 00000000-0000-0000-0000-000000000000. Používá se k identifikaci prostředku, jako je ID objektu zabezpečení nebo ID definice role.
Příklady

Operátory porovnání napříč produkty

V této části jsou uvedeny operátory porovnání mezi produkty, které jsou k dispozici pro vytváření podmínek.

ForAnyOfAnyValues

Vlastnost Hodnota
Operátory 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
Popis Pokud alespoň jedna hodnota na levé straně splňuje porovnání s alespoň jednou hodnotou na pravé straně, výraz se vyhodnotí jako true. Má formát: ForAnyOfAnyValues:<BooleanFunction>. Podporuje více řetězců a čísel.
Příklady @Resource[Microsoft.Storage/storageAccounts/encryptionScopes:name] ForAnyOfAnyValues:StringEquals {'validScope1', 'validScope2'}
Pokud se název oboru šifrování rovná validScope1 nebo validScope2, pak true.

{'red', 'blue'} ForAnyOfAnyValues:StringEquals {'blue', 'green'}
true

{'red', 'blue'} ForAnyOfAnyValues:StringEquals {'orange', 'green'}
false (nepravda)

ForAllOfAnyValues

Vlastnost Hodnota
Operátory 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
Popis Pokud každá hodnota na levé straně splňuje porovnání s alespoň jednou hodnotou na pravé straně, výraz se vyhodnotí jako true. Má formát: ForAllOfAnyValues:<BooleanFunction>. Podporuje více řetězců a čísel.
Příklady @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'}
false (nepravda)

ForAnyOfAllValues

Vlastnost Hodnota
Operátory 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
Popis Pokud alespoň jedna hodnota na levé straně splňuje porovnání s každou hodnotou na pravé straně, výraz se vyhodnotí jako true. Má formát: ForAnyOfAllValues:<BooleanFunction>. Podporuje více řetězců a čísel.
Příklady {10, 20} ForAnyOfAllValues:NumericLessThan {15, 18}
true

ForAllOfAllValues

Vlastnost Hodnota
Operátory 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
Popis Pokud každá hodnota na levé straně splňuje porovnání s každou hodnotou na pravé straně, výraz se vyhodnotí jako true. Má formát: ForAllOfAllValues:<BooleanFunction>. Podporuje více řetězců a čísel.
Příklady {10, 20} ForAllOfAllValues:NumericLessThan {5, 15, 18}
false (nepravda)

{10, 20} ForAllOfAllValues:NumericLessThan {25, 30}
true

{10, 20} ForAllOfAllValues:NumericLessThan {15, 25, 30}
false (nepravda)

Speciální znaky

Znak Popis
* Hvězdička (*) představuje shodu se zástupnými znaky s více znaky, kterou lze použít s operátory Like . V případě potřeby můžete utéct hvězdičkou přidáním zpětného lomítka \*.
? Otazník (?) představuje shodu se zástupnými znaky s jedním znakem, kterou lze použít s operátory Like . V případě potřeby můžete uvozit otazník přidáním zpětného lomítka \?.
$ Znak dolaru ($) slouží k delineaci klíčů značek. Pokud řetězec uzavřený v dvojitých uvozovkách (") obsahuje v Azure PowerShellu znak dolaru, musíte ho předponovat zpětným znaménkem ('). Například: tags:Project<`$key_case_sensitive`$>.

Seskupování a priorita

Pokud máte tři nebo více výrazů pro cílovou akci s různými operátory mezi výrazy, pořadí vyhodnocení je nejednoznačné. Pomocí závorek () seskupíte výrazy a určíte pořadí, ve kterém se výrazy vyhodnocují. Výrazy uzavřené v závorkách mají vyšší prioritu. Pokud máte například následující výraz:

a AND b OR c

Závorky je nutné přidat jedním z následujících způsobů:

(a AND b) OR c
a AND (b OR c)

Další kroky