Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma condição é uma verificação adicional que você pode adicionar opcionalmente à sua atribuição de função para fornecer um controle de acesso mais refinado. Por exemplo, você pode adicionar uma condição que exige que um objeto tenha uma marca 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ção, é interessante observar o formato.
Condição simples
A condição mais básica consiste em uma ação direcionada e uma 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 e determina se a ação tem permissão para ser executada.
O exemplo 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
Quando um usuário tenta executar uma ação na atribuição de função que não é <action>, !(ActionMatches) é avaliado como verdadeiro e a condição geral é avaliada como verdadeira para permitir que a ação seja executada.
Se um usuário tentar executar <action> na atribuição de função, !(ActionMatches) será avaliado como falso. Portanto, a expressão será avaliada. Se a expressão for avaliada como verdadeira, a condição geral será avaliada como verdadeira para permitir a execução de <action>. Caso contrário, <action> não terá permissão para ser executado.
O pseudocódigo a seguir mostra outra maneira em que você pode 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 ação de dados Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read tem a suboperação "Listar blobs". As condições com suboperações têm o formato a seguir.

(
(
!(ActionMatches{'<action>'}
AND
SubOperationMatches{'<subOperation>'})
)
OR
(
<attribute> <operator> <value>
)
)
Várias ações
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 opções de atributos para a sua condição, pois os atributos devem estar disponíveis nas ações selecionadas.

(
(
!(ActionMatches{'<action>'})
AND
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
)
)
Várias 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>
)
)
Condições múltiplas
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 de condição
O exemplo 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 personalizada ou internas que tenham ações de dados de armazenamento de fila ou de armazenamento de blobs. Elas incluem as seguintes funções internas:
- Colaborador de dados de blob de armazenamento
- Proprietário de Dados do Blob de Armazenamento
- Leitor de Dados do Blob de Armazenamento
- Colaborador 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 podem ser usadas em condições, consulte:
- Ações e atributos das 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
A depender das ações selecionadas, o atributo pode ser encontrado em locais diferentes. Se você selecionar várias ações para uma única condição, pode haver menos opções de atributos para a sua condição, pois 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 | Descrição | Código |
|---|---|---|
| Ambiente | O atributo está associado ao ambiente da solicitação, como a origem da rede da solicitação ou a data e a hora atuais. |
@Environment |
| Principal | O 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 |
| Solicitar | O atributo faz parte da solicitação da ação, como definir a marca de índice do blob. | @Request |
| Recurso | O atributo é uma propriedade do recurso, como um nome de contêiner. | @Resource |
Para obter uma lista completa dos atributos de armazenamento que podem ser usados em condições, consulte:
Atributos de ambiente
Os atributos de ambiente sã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 o acesso em um ponto de extremidade privado específico ou em uma sub-rede de rede virtual ou talvez em qualquer link privado.
A tabela a seguir lista os atributos de ambiente com suporte para condições.
| Nome de exibição | Descrição | Atributo | Tipo |
|---|---|---|---|
| É um link privado1 | Use esse atributo em condições para exigir acesso em qualquer link privado. | isPrivateLink |
Booliano |
| Ponto de extremidade privado1,2 | Use este atributo em condições para restringir o acesso em um ponto de extremidade privado específico. | Microsoft.Network/privateEndpoints |
Cadeia de caracteres |
| Sub-rede1,3 | Use esse atributo em condições para restringir o acesso de uma sub-rede específica. | Microsoft.Network/virtualNetworks/subnets |
Cadeia de caracteres |
| UTC agora | Use esse atributo em condições para restringir o acesso aos objetos durante períodos de tempo específicos. | UtcNow |
DateTime |
1 Para operações de cópia, os atributos Is private link, Private endpoint e Subnet somente se aplicam ao destino, como uma 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 visualizar mais detalhes.
2 Você só poderá usar o atributo Private endpoint se atualmente tiver pelo menos um ponto de extremidade privado configurado em sua assinatura.
3 Você só poderá usar o atributo Subnet se tiver pelo menos uma sub-rede de rede virtual usando pontos de extremidade de serviço configurados em sua assinatura.
Atributos principais
Os atributos de entidade de segurança 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 os atributos de entidade de segurança, é necessário ter o seguinte:
- Permissões do Microsoft Entra para o usuário conectado, como a função de 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, confira:
- Adicionar ou desativar as definições dos atributos de segurança personalizados no Microsoft Entra ID
- Permitir acesso de leitura a blobs com base em marcas e atributos de segurança personalizados
- Principal não aparece na fonte 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 do recurso
Os atributos de recurso sã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 criar condições.
ActionMatches
| Propriedade | Valor |
|---|---|
| Operador | 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 verificada for igual a “Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read”, então é true ActionMatches{'Microsoft.Authorization/roleAssignments/*'}Se a ação verificada for igual a "Microsoft.Authorization/roleAssignments/write", então é true ActionMatches{'Microsoft.Authorization/roleDefinitions/*'}Se a ação verificada for igual a "Microsoft.Authorization/roleAssignments/write", então é false |
SubOperationMatches
| Propriedade | Valor |
|---|---|
| Operador | SubOperationMatches |
| Descrição | Verifica se a suboperação atual corresponde ao padrão de suboperação especificado. |
| Exemplos | SubOperationMatches{'Blob.List'} |
Existe
| Propriedade | Valor |
|---|---|
| Operador | Exists |
| Descrição | Verifica se o atributo especificado existe. |
| Exemplos | Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:snapshot] |
| Suporte a atributos 1 | Nome do escopo de criptografia Instantâneo ID da Versão |
1 O operador Exists tem suporte apenas para esses atributos no construtor de condições do ABAC visual no portal do Azure. É possível adicionar o operador Exists 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 criar condições.
And
| Propriedade | Valor |
|---|---|
| Operadores | AND&& |
| Descrição | Operador And. |
| Exemplos | !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) |
Ou
| Propriedade | Valor |
|---|---|
| Operadores | OR|| |
| Descrição | Operador Or. |
| 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
| Propriedade | Valor |
|---|---|
| Operadores | NOT! |
| Descrição | Operador Not ou negação. |
| Exemplos | NOT Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] |
Operadores de comparação boolianos
Esta seção lista os operadores de comparação boolianos que estão disponíveis para criar condições.
| Propriedade | Valor |
|---|---|
| Operadores | BoolEqualsBoolNotEquals |
| Descrição | Comparação de boolianos. |
| 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 criar condições.
StringEquals
| Propriedade | Valor |
|---|---|
| Operadores | StringEqualsStringEqualsIgnoreCase |
| Descrição | Correspondência entre maiúsculas e minúsculas (ou não diferenciação de maiúsculas e 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
| Propriedade | Valor |
|---|---|
| Operadores | StringNotEqualsStringNotEqualsIgnoreCase |
| Descrição | Negação do operador StringEquals (ou StringEqualsIgnoreCase). |
StringStartsWith
| Propriedade | Valor |
|---|---|
| Operadores | StringStartsWithStringStartsWithIgnoreCase |
| Descrição | Correspondência entre maiúsculas e minúsculas (ou não diferenciação de maiúsculas e minúsculas). Os valores começam com a cadeia de caracteres. |
StringNotStartsWith
| Propriedade | Valor |
|---|---|
| Operadores | StringNotStartsWithStringNotStartsWithIgnoreCase |
| Descrição | Negação do operador StringStartsWith (ou StringStartsWithIgnoreCase). |
StringLike
| Propriedade | Valor |
|---|---|
| Operadores | StringLikeStringLikeIgnoreCase |
| Descrição | Correspondência entre maiúsculas e minúsculas (ou não diferenciação de maiúsculas e minúsculas). Os valores podem incluir um curinga de combinação de vários caracteres (*) ou um curinga de caractere único (?) em qualquer lugar na cadeia de caracteres. Se necessário, esses caracteres podem ser ignorados com a adição de uma barra invertida \* e \?. |
| Exemplos | @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'readonly/*'Resource[name1] StringLike 'a*c?'Se Resource[Nome1] for igual a "abcd", então verdadeiro Resource[name1] StringLike 'A*C?'Se Resource[Nome1] for igual a "abcd", então falso Resource[name1] StringLike 'a*c'Se Resource[Nome1] for igual a "abcd", então falso |
StringNotLike
| Propriedade | Valor |
|---|---|
| Operadores | StringNotLikeStringNotLikeIgnoreCase |
| Descrição | Negação do operador StringLike (ou StringLikeIgnoreCase). |
Operadores de comparação numérica
Esta seção lista os operadores de comparação numérica que estão disponíveis para criar condições.
| Propriedade | Valor |
|---|---|
| Operadores | NumericEqualsNumericNotEqualsNumericGreaterThanNumericGreaterThanEqualsNumericLessThanNumericLessThanEquals |
| Descrição | Correspondência de números. Somente há suporte para inteiros. |
Operadores de comparação de datetime
Esta seção lista os operadores de comparação de data/hora que estão disponíveis para criar condições.
| Propriedade | Valor |
|---|---|
| Operadores | DateTimeEqualsDateTimeNotEqualsDateTimeGreaterThanDateTimeGreaterThanEqualsDateTimeLessThanDateTimeLessThanEquals |
| Descrição | Verificação de precisão total com o formato: yyyy-mm-ddThh:mm:ss.mmmmmmmZ. Usado para ID da versão do blob, instantâneo de blob e agora para o UTC. |
| Exemplos | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeEquals '2022-06-01T00:00:00.0Z' |
Operadores de comparação de GUID
Esta seção lista os operadores de comparação de GUID (identificador global exclusivo) que estão disponíveis para condições de construção.
| Propriedade | 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 de entidade de segurança 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 criar condições.
ForAnyOfAnyValues
| Propriedade | 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, a expressão será avaliada como verdadeira. Tem o formato: ForAnyOfAnyValues:<BooleanFunction>. Dá suporte a 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 igual a validScope1 ou validScope2, então é true.{'red', 'blue'} ForAnyOfAnyValues:StringEquals {'blue', 'green'}true {'red', 'blue'} ForAnyOfAnyValues:StringEquals {'orange', 'green'}false |
ForAllOfAnyValues
| Propriedade | 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, a expressão será avaliada como verdadeira. Tem o formato: ForAllOfAnyValues:<BooleanFunction>. Dá suporte a 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'}true {'red', 'blue'} ForAllOfAnyValues:StringEquals {'red', 'green'}false |
ForAnyOfAllValues
| Propriedade | Valor |
|---|---|
| Operadores | ForAnyOfAllValues:StringEqualsForAnyOfAllValues:StringEqualsIgnoreCaseForAnyOfAllValues:StringNotEqualsForAnyOfAllValues:StringNotEqualsIgnoreCaseForAnyOfAllValues:StringLikeForAnyOfAllValues:StringLikeIgnoreCaseForAnyOfAllValues:StringNotLikeForAnyOfAllValues:StringNotLikeIgnoreCaseForAnyOfAllValues:NumericEqualsForAnyOfAllValues:NumericNotEqualsForAnyOfAllValues:NumericGreaterThanForAnyOfAllValues:NumericGreaterThanEqualsForAnyOfAllValues:NumericLessThanForAnyOfAllValues:NumericLessThanEqualsForAnyOfAllValues:GuidEqualsForAnyOfAllValues:GuidNotEquals |
| Descrição | Se cada valor no lado esquerdo satisfizer a comparação com todos os valores no lado direito, a expressão será avaliada como verdadeira. Tem o formato: ForAnyOfAllValues:<BooleanFunction>. Dá suporte a várias cadeias de caracteres e números. |
| Exemplos | {10, 20} ForAnyOfAllValues:NumericLessThan {15, 18}true |
ForAllOfAllValues
| Propriedade | Valor |
|---|---|
| Operadores | ForAllOfAllValues:StringEqualsForAllOfAllValues:StringEqualsIgnoreCaseForAllOfAllValues:StringNotEqualsForAllOfAllValues:StringNotEqualsIgnoreCaseForAllOfAllValues:StringLikeForAllOfAllValues:StringLikeIgnoreCaseForAllOfAllValues:StringNotLikeForAllOfAllValues:StringNotLikeIgnoreCaseForAllOfAllValues:NumericEqualsForAllOfAllValues:NumericNotEqualsForAllOfAllValues:NumericGreaterThanForAllOfAllValues:NumericGreaterThanEqualsForAllOfAllValues:NumericLessThanForAllOfAllValues:NumericLessThanEqualsForAllOfAllValues:GuidEqualsForAllOfAllValues:GuidNotEquals |
| Descrição | Se todos os valores no lado esquerdo satisfizerem a comparação com todos os valores no lado direito, a expressão será avaliada como verdadeira. Tem o formato: ForAllOfAllValues:<BooleanFunction>. Dá suporte a várias cadeias de caracteres e números. |
| Exemplos | {10, 20} ForAllOfAllValues:NumericLessThan {5, 15, 18}false {10, 20} ForAllOfAllValues:NumericLessThan {25, 30}true {10, 20} ForAllOfAllValues:NumericLessThan {15, 25, 30}false |
Caracteres especiais
| Caractere | Descrição |
|---|---|
* |
Um asterisco (*) representa uma combinação curinga de vários caracteres que pode ser usada com operadores Like. Se necessário, você pode escapar de um asterisco adicionando uma barra invertida \*. |
? |
Um ponto de interrogação (?) representa uma combinação curinga de vários caracteres que pode ser usada com operadores Like. 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 marca. No Azure PowerShell, se uma cadeia de caracteres entre aspas duplas (") incluir um sinal de cifrão, você deverá prefixá-la com um acento grave (`). Por exemplo: tags:Project<`$key_case_sensitive`$>. |
Agrupamento e precedência
Se você tiver três ou mais expressões para uma ação de destino 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. Expressões incluídas em parênteses têm a precedência de avaliação mais alta. Por exemplo, se você tiver a seguinte expressão:
a AND b OR c
Você deve adicionar parênteses em uma das seguintes maneiras:
(a AND b) OR c
a AND (b OR c)