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.
(
(
!(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'
)
)
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.
(
(
!(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.
(
(
!(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.
(
(
!(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í.
(
(
!(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:
- Přispěvatel dat v objektech blob služby Storage
- Vlastník dat v objektech blob služby Storage
- Čtenář dat v objektech blob služby Storage
- Přispěvatel dat fronty služby Storage
- Zpracovatel zpráv fronty úložiště
- Odesílatel datové zprávy fronty úložiště
- Čtenář dat fronty úložiště
Seznam akcí úložiště, které můžete použít v podmínkách, najdete tady:
- Akce a atributy pro podmínky přiřazení role Azure pro Azure Blob Storage
- Akce a atributy pro podmínky přiřazení role Azure pro Azure Queue Storage
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 link
Private 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í:
- Oprávnění Microsoft Entra pro přihlášeného uživatele, například roli Správce přiřazení atributů
- Vlastní atributy zabezpečení definované v Microsoft Entra ID
Další informace o vlastníchatributch
- Přidání nebo deaktivace vlastních atributů zabezpečení v Microsoft Entra ID
- Povolení přístupu pro čtení k objektům blob na základě značek a vlastních atributů zabezpečení
- Objekt zabezpečení se nezobrazuje ve zdroji atributů.
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)