Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma condição é uma verificação adicional que pode, opcionalmente, adicionar à atribuição de funções para indicar um controlo de acesso mais detalhado. Por exemplo, você pode adicionar uma condição que exija que um objeto tenha uma tag específica para ler o objeto. Este artigo descreve o formato e a sintaxe das condições de atribuição de função.
Formato da condição
Para entender melhor as condições de atribuição de funções, é útil examinar o formato.
Condição simples
A condição mais básica consiste numa ação orientada e numa expressão. Uma ação é uma operação que um usuário pode executar em um tipo de recurso. Uma expressão é uma instrução que é avaliada como verdadeira ou falsa, que determina se a ação pode ser executada.
A seguir mostra o formato de uma condição simples.

(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
)
)
A condição a seguir tem uma ação de "Ler um blob". A expressão verifica se o nome do contêiner é blobs-example-container.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]
StringEquals 'blobs-example-container'
)
)

Como uma condição é avaliada
Se um usuário tentar executar uma ação na atribuição de função que não <action>seja , !(ActionMatches) será avaliada como true e a condição geral será avaliada como true para permitir que a ação seja executada.
Se um usuário tentar executar <action> na atribuição de função, !(ActionMatches) avaliará como false, para que a expressão seja avaliada. Se a expressão for avaliada como true, a condição geral será avaliada como true para permitir que <action> seja executada. Caso contrário, <action> não é permitido ser realizado.
O pseudocódigo a seguir mostra outra maneira de ler essa condição.
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
}
}
Suboperações
Algumas ações têm suboperações. Por exemplo, a Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read ação de dados tem a suboperação "Listar blobs". As condições com suboperações têm o seguinte formato.

(
(
!(ActionMatches{'<action>'}
AND
SubOperationMatches{'<subOperation>'})
)
OR
(
<attribute> <operator> <value>
)
)
Ações múltiplas
Uma condição pode incluir várias ações que você deseja permitir se a condição for verdadeira. Se você selecionar várias ações para uma única condição, pode haver menos atributos para escolher para sua condição, porque os atributos devem estar disponíveis nas ações selecionadas.

(
(
!(ActionMatches{'<action>'})
AND
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
)
)
Múltiplas expressões
Uma condição pode incluir várias expressões. Dependendo do operador, os atributos podem ser verificados em relação a vários valores.

(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
AND | OR
<attribute> <operator> {<value>, <value>, <value>}
AND | OR
<attribute> <operator> <value>
)
)
Múltiplas condições
Você também pode combinar condições para direcionar várias ações.

(
(
!(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>
)
)
Sintaxe da condição
A seguir mostra a sintaxe de uma condição de atribuição de função.
(
(
!(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
...
Ações
Atualmente, as condições podem ser adicionadas a atribuições de função internas ou personalizadas que tenham ações de dados de armazenamento de blob ou de armazenamento em fila. Estes incluem as seguintes funções incorporadas:
- Contribuinte de Dados do Armazenamento de Blobs
- Proprietário dos Dados do Armazenamento de Blobs
- Leitor de Dados do Armazenamento de Blobs
- Contribuidor de dados da fila de armazenamento
- Processador de mensagens de dados da fila de armazenamento
- Remetente da mensagem de dados da fila de armazenamento
- Leitor de dados da fila de armazenamento
Para obter uma lista das ações de armazenamento que você pode usar em condições, consulte:
- Ações e atributos para condições de atribuição de função do Azure para o Armazenamento de Blobs do Azure
- Ações e atributos para condições de atribuição de função do Azure para o Armazenamento de Filas do Azure.
Atributos
Dependendo das ações selecionadas, o atributo pode ser encontrado em locais diferentes. Se você selecionar várias ações para uma única condição, talvez haja menos atributos para escolher para sua condição, porque os atributos devem estar disponíveis em todas as ações selecionadas. Para especificar um atributo, você deve incluir a origem como um prefixo.
| Origem do atributo | Description | Código |
|---|---|---|
| Ambiente | O atributo está associado ao ambiente da solicitação, como a origem da rede da solicitação ou a data e hora atuais. |
@Environment |
| Mandante | Atributo é um atributo de segurança personalizado atribuído à entidade de segurança, como um usuário ou aplicativo empresarial (entidade de serviço). | @Principal |
| Pedir | O atributo faz parte da solicitação de ação, como definir a marca de índice de blob. | @Request |
| Recurso | Atributo é uma propriedade do recurso, como um nome de contêiner. | @Resource |
Para obter uma lista completa dos atributos de armazenamento que você pode usar em condições, consulte:
Atributos do ambiente
Os atributos de ambiente estão associados às circunstâncias em que a solicitação de acesso é feita, como a data e a hora do dia ou o ambiente de rede. O ambiente de rede pode ser se o acesso é através de um ponto de extremidade privado específico ou uma sub-rede de rede virtual, ou talvez sobre qualquer link privado.
A tabela a seguir lista os atributos de ambiente suportados para condições.
| Display name | Descrição | Atributo | Type |
|---|---|---|---|
| É linkprivado 1 | Use esse atributo em condições para exigir acesso por qualquer link privado. | isPrivateLink |
Booleano |
| Ponto finalprivado 1,2 | Use esse atributo em condições para restringir o acesso em um ponto de extremidade privado específico. | Microsoft.Network/privateEndpoints |
Cadeia |
| Sub-rede1,3 | Use esse atributo em condições para restringir o acesso de uma sub-rede específica. | Microsoft.Network/virtualNetworks/subnets |
Cadeia |
| UTC agora | Use esse atributo em condições para restringir o acesso a objetos durante períodos de tempo específicos. | UtcNow |
DateTime |
1 Para operações de cópia, os Is private linkatributos , Private endpointe Subnet só se aplicam ao destino, tal conta de armazenamento, não à origem. Para obter mais informações sobre as operações de cópia às quais isso se aplica, selecione cada atributo na tabela para ver mais detalhes.
2 Você só pode usar o Private endpoint atributo se tiver atualmente pelo menos um ponto de extremidade privado configurado em sua assinatura.
3 Você só poderá usar o Subnet atributo se tiver atualmente pelo menos uma sub-rede de rede virtual usando pontos de extremidade de serviço configurados em sua assinatura.
Principais atributos
Os atributos principais são atributos de segurança personalizados atribuídos à entidade de segurança que solicita acesso a um recurso. A entidade de segurança pode ser um usuário ou um aplicativo empresarial (entidade de serviço).
Para usar atributos principais, você deve ter o seguinte:
- Permissões do Microsoft Entra para o usuário conectado, como a função Administrador de Atribuição de Atributo
- Atributos de segurança personalizados definidos no Microsoft Entra ID
Para obter mais informações sobre atributos de segurança personalizados, consulte:
- Adicionar ou desativar atributos de segurança personalizados no Microsoft Entra ID
- Permitir acesso de leitura a blobs com base em tags e atributos de segurança personalizados
- Principal não aparece em Origem do atributo
Atributos de solicitação
Os atributos de solicitação são associados aos critérios especificados em uma solicitação de acesso, como o prefixo especificado de blobs a serem listados.
Atributos de recurso
Os atributos de recurso estão associados ao objeto ao qual o acesso está sendo solicitado, como o nome da conta de armazenamento, o nome do contêiner ou se o namespace hierárquico está habilitado para a conta de armazenamento.
Operadores de função
Esta seção lista os operadores de função que estão disponíveis para construir condições.
ActionMatches
| Property | valor |
|---|---|
| Operator | ActionMatches |
| Descrição | Verifica se a ação atual corresponde ao padrão de ação especificado. |
| Exemplos | ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}Se a ação que está sendo verificada for igual a "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read", true ActionMatches{'Microsoft.Authorization/roleAssignments/*'}Se a ação que está sendo verificada for igual a "Microsoft.Authorization/roleAssignments/write", true ActionMatches{'Microsoft.Authorization/roleDefinitions/*'}Se a ação que está sendo verificada for igual a "Microsoft.Authorization/roleAssignments/write", false |
SubOperationMatches
| Property | valor |
|---|---|
| Operator | SubOperationMatches |
| Descrição | Verifica se a suboperação atual corresponde ao padrão de suboperação especificado. |
| Exemplos | SubOperationMatches{'Blob.List'} |
Exists
| Property | valor |
|---|---|
| Operator | Exists |
| Descrição | Verifica se o atributo especificado existe. |
| Exemplos | Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:snapshot] |
| Suporte de atributos 1 | Nome do escopo de criptografia Instantâneo ID da versão |
1 O Exists operador tem suporte apenas para esses atributos no construtor de condições ABAC visual no portal do Azure. Você pode adicionar o Exists operador a qualquer atributo usando outras ferramentas, como o PowerShell, a CLI do Azure, a API REST e o editor de código de condição no portal do Azure.
Operadores lógicos
Esta seção lista os operadores lógicos que estão disponíveis para construir condições.
And
| Property | valor |
|---|---|
| Operadores | AND&& |
| Descrição | E operador. |
| Exemplos | !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) |
Ou
| Property | valor |
|---|---|
| Operadores | OR|| |
| Descrição | Ou operador. |
| Exemplos | @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
| Property | valor |
|---|---|
| Operadores | NOT! |
| Descrição | Não ou operador de negação. |
| Exemplos | NOT Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] |
Operadores de comparação booleana
Esta seção lista os operadores de comparação booleanos que estão disponíveis para construir condições.
| Property | valor |
|---|---|
| Operadores | BoolEqualsBoolNotEquals |
| Descrição | Comparação booleana. |
| Exemplos | @Resource[Microsoft.Storage/storageAccounts:isHnsEnabled] BoolEquals true |
Operadores de comparação de cadeia de caracteres
Esta seção lista os operadores de comparação de cadeia de caracteres que estão disponíveis para construir condições.
StringEquals
| Property | valor |
|---|---|
| Operadores | StringEqualsStringEqualsIgnoreCase |
| Descrição | Correspondência que diferencia maiúsculas de minúsculas (ou que não diferencia maiúsculas de minúsculas). Os valores devem corresponder exatamente à cadeia de caracteres. |
| Exemplos | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEquals 'Cascade' |
StringNotEquals
| Property | valor |
|---|---|
| Operadores | StringNotEqualsStringNotEqualsIgnoreCase |
| Descrição | Negação do StringEquals (ou StringEqualsIgnoreCase) operador. |
StringStartsCom
| Property | valor |
|---|---|
| Operadores | StringStartsWithStringStartsWithIgnoreCase |
| Descrição | Correspondência que diferencia maiúsculas de minúsculas (ou que não diferencia maiúsculas de minúsculas). Os valores começam com a cadeia de caracteres. |
StringNotStartsWith
| Property | valor |
|---|---|
| Operadores | StringNotStartsWithStringNotStartsWithIgnoreCase |
| Descrição | Negação do StringStartsWith (ou StringStartsWithIgnoreCase) operador. |
StringLike
| Property | valor |
|---|---|
| Operadores | StringLikeStringLikeIgnoreCase |
| Descrição | Correspondência que diferencia maiúsculas de minúsculas (ou que não diferencia maiúsculas de minúsculas). Os valores podem incluir um curinga de correspondência de vários caracteres (*) ou um curinga de correspondência de caractere único (?) em qualquer lugar da cadeia de caracteres. Se necessário, esses caracteres podem ser escapados adicionando uma barra \* invertida e \?. |
| Exemplos | @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'readonly/*'Resource[name1] StringLike 'a*c?'Se Resource[name1] for igual a "abcd", então true Resource[name1] StringLike 'A*C?'Se Resource[name1] for igual a "abcd", então false Resource[name1] StringLike 'a*c'Se Resource[name1] for igual a "abcd", então false |
StringNotLike
| Property | valor |
|---|---|
| Operadores | StringNotLikeStringNotLikeIgnoreCase |
| Descrição | Negação do StringLike (ou StringLikeIgnoreCase) operador. |
Operadores de comparação numérica
Esta seção lista os operadores de comparação numérica que estão disponíveis para construir condições.
| Property | valor |
|---|---|
| Operadores | NumericEqualsNumericNotEqualsNumericGreaterThanNumericGreaterThanEqualsNumericLessThanNumericLessThanEquals |
| Descrição | Correspondência de números. Apenas números inteiros são suportados. |
Operadores de comparação DateTime
Esta seção lista os operadores de comparação de data/hora que estão disponíveis para construir condições.
| Property | valor |
|---|---|
| Operadores | DateTimeEqualsDateTimeNotEqualsDateTimeGreaterThanDateTimeGreaterThanEqualsDateTimeLessThanDateTimeLessThanEquals |
| Descrição | Verificação de precisão total com o formato: yyyy-mm-ddThh:mm:ss.mmmmmmmZ. Usado para ID de versão de blob, instantâneo de blob e UTC agora. |
| Exemplos | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeEquals '2022-06-01T00:00:00.0Z' |
Operadores de comparação GUID
Esta seção lista os operadores de comparação de identificador global exclusivo (GUID) que estão disponíveis para construir condições.
| Property | valor |
|---|---|
| Operadores | GuidEqualsGuidNotEquals |
| Descrição | Correspondência que não diferencia maiúsculas de minúsculas com o formato: 00000000-0000-0000-0000-000000000000. Usado para identificar um recurso, como ID principal ou ID de definição de função. |
| Exemplos |
Operadores de comparação entre produtos
Esta seção lista os operadores de comparação entre produtos que estão disponíveis para construir condições.
ForAnyOfAnyValues
| Property | valor |
|---|---|
| Operadores | ForAnyOfAnyValues:StringEqualsForAnyOfAnyValues:StringEqualsIgnoreCaseForAnyOfAnyValues:StringNotEqualsForAnyOfAnyValues:StringNotEqualsIgnoreCaseForAnyOfAnyValues:StringLikeForAnyOfAnyValues:StringLikeIgnoreCaseForAnyOfAnyValues:StringNotLikeForAnyOfAnyValues:StringNotLikeIgnoreCaseForAnyOfAnyValues:NumericEqualsForAnyOfAnyValues:NumericNotEqualsForAnyOfAnyValues:NumericGreaterThanForAnyOfAnyValues:NumericGreaterThanEqualsForAnyOfAnyValues:NumericLessThanForAnyOfAnyValues:NumericLessThanEqualsForAnyOfAnyValues:GuidEqualsForAnyOfAnyValues:GuidNotEquals |
| Descrição | Se pelo menos um valor no lado esquerdo satisfizer a comparação com pelo menos um valor no lado direito, então a expressão será avaliada como verdadeira. Tem o formato: ForAnyOfAnyValues:<BooleanFunction>. Suporta várias cadeias de caracteres e números. |
| Exemplos | @Resource[Microsoft.Storage/storageAccounts/encryptionScopes:name] ForAnyOfAnyValues:StringEquals {'validScope1', 'validScope2'}Se o nome do escopo de criptografia for validScope1 igual ou validScope2, então true.{'red', 'blue'} ForAnyOfAnyValues:StringEquals {'blue', 'green'}verdadeiro {'red', 'blue'} ForAnyOfAnyValues:StringEquals {'orange', 'green'}false |
ForAllOfAnyValues
| Property | valor |
|---|---|
| Operadores | ForAllOfAnyValues:StringEqualsForAllOfAnyValues:StringEqualsIgnoreCaseForAllOfAnyValues:StringNotEqualsForAllOfAnyValues:StringNotEqualsIgnoreCaseForAllOfAnyValues:StringLikeForAllOfAnyValues:StringLikeIgnoreCaseForAllOfAnyValues:StringNotLikeForAllOfAnyValues:StringNotLikeIgnoreCaseForAllOfAnyValues:NumericEqualsForAllOfAnyValues:NumericNotEqualsForAllOfAnyValues:NumericGreaterThanForAllOfAnyValues:NumericGreaterThanEqualsForAllOfAnyValues:NumericLessThanForAllOfAnyValues:NumericLessThanEqualsForAllOfAnyValues:GuidEqualsForAllOfAnyValues:GuidNotEquals |
| Descrição | Se cada valor no lado esquerdo satisfizer a comparação com pelo menos um valor no lado direito, então a expressão será avaliada como verdadeira. Tem o formato: ForAllOfAnyValues:<BooleanFunction>. Suporta várias cadeias de caracteres e números. |
| Exemplos | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] ForAllOfAnyValues:StringEquals {'Cascade', 'Baker', 'Skagit'}{'red', 'blue'} ForAllOfAnyValues:StringEquals {'orange', 'red', 'blue'}verdadeiro {'red', 'blue'} ForAllOfAnyValues:StringEquals {'red', 'green'}false |
ForAnyOfAllValues
| Property | valor |
|---|---|
| Operadores | ForAnyOfAllValues:StringEqualsForAnyOfAllValues:StringEqualsIgnoreCaseForAnyOfAllValues:StringNotEqualsForAnyOfAllValues:StringNotEqualsIgnoreCaseForAnyOfAllValues:StringLikeForAnyOfAllValues:StringLikeIgnoreCaseForAnyOfAllValues:StringNotLikeForAnyOfAllValues:StringNotLikeIgnoreCaseForAnyOfAllValues:NumericEqualsForAnyOfAllValues:NumericNotEqualsForAnyOfAllValues:NumericGreaterThanForAnyOfAllValues:NumericGreaterThanEqualsForAnyOfAllValues:NumericLessThanForAnyOfAllValues:NumericLessThanEqualsForAnyOfAllValues:GuidEqualsForAnyOfAllValues:GuidNotEquals |
| Descrição | Se pelo menos um valor no lado esquerdo satisfizer a comparação com todos os valores do lado direito, então a expressão será avaliada como verdadeira. Tem o formato: ForAnyOfAllValues:<BooleanFunction>. Suporta várias cadeias de caracteres e números. |
| Exemplos | {10, 20} ForAnyOfAllValues:NumericLessThan {15, 18}verdadeiro |
ForAllOfAllValues
| Property | valor |
|---|---|
| Operadores | ForAllOfAllValues:StringEqualsForAllOfAllValues:StringEqualsIgnoreCaseForAllOfAllValues:StringNotEqualsForAllOfAllValues:StringNotEqualsIgnoreCaseForAllOfAllValues:StringLikeForAllOfAllValues:StringLikeIgnoreCaseForAllOfAllValues:StringNotLikeForAllOfAllValues:StringNotLikeIgnoreCaseForAllOfAllValues:NumericEqualsForAllOfAllValues:NumericNotEqualsForAllOfAllValues:NumericGreaterThanForAllOfAllValues:NumericGreaterThanEqualsForAllOfAllValues:NumericLessThanForAllOfAllValues:NumericLessThanEqualsForAllOfAllValues:GuidEqualsForAllOfAllValues:GuidNotEquals |
| Descrição | Se cada valor do lado esquerdo satisfizer a comparação com todos os valores do lado direito, então a expressão será avaliada como verdadeira. Tem o formato: ForAllOfAllValues:<BooleanFunction>. Suporta várias cadeias de caracteres e números. |
| Exemplos | {10, 20} ForAllOfAllValues:NumericLessThan {5, 15, 18}false {10, 20} ForAllOfAllValues:NumericLessThan {25, 30}verdadeiro {10, 20} ForAllOfAllValues:NumericLessThan {15, 25, 30}false |
Carateres especiais
| Caráter | Description |
|---|---|
* |
Um asterisco (*) representa uma correspondência curinga de vários caracteres que pode ser usada com Like operadores. Se necessário, você pode escapar de um asterisco adicionando uma barra invertida \*. |
? |
Um ponto de interrogação (?) representa uma correspondência curinga de caractere único que pode ser usada com Like operadores. Se necessário, você pode escapar de um ponto de interrogação adicionando uma barra invertida \?. |
$ |
Um cifrão ($) é usado para ajudar a delinear chaves de tag. No Azure PowerShell, se uma cadeia de caracteres entre aspas duplas (") incluir um cifrão, você deverá prefixá-la com um backtick ('). Por exemplo: tags:Project<`$key_case_sensitive`$>. |
Agrupamento e precedência
Se você tiver três ou mais expressões para uma ação direcionada com operadores diferentes entre as expressões, a ordem de avaliação será ambígua. Use parênteses () para agrupar expressões e especificar a ordem em que as expressões são avaliadas. As expressões entre parênteses têm maior precedência. Por exemplo, se você tiver a seguinte expressão:
a AND b OR c
Você deve adicionar parênteses de uma das seguintes maneiras:
(a AND b) OR c
a AND (b OR c)