Solucionar problemas de condições de atribuição de função do Azure

Problemas gerais

Sintoma – a condição não é imposta

Causa 1

As entidades de segurança têm uma ou mais atribuições de função no mesmo escopo ou superior.

Solução 1

Verifique se as entidades de segurança não têm várias atribuições de função (com ou sem condições) que concedem acesso à mesma ação de dados, que resulta na não imposição de condições. Para obter informações sobre a lógica de avaliação, confira Como o RBAC do Azure determina se um usuário tem acesso a um recurso.

Causa 2

A atribuição de função tem várias ações que concedem uma permissão e sua condição não visa todas as ações. Por exemplo, você pode criar um blob se tiver ações de dados /blobs/write ou /blobs/add/action. Se a atribuição de função tiver as duas ações de dados e você direcionar apenas uma delas em uma condição, a atribuição de função concederá a permissão para criar blobs e ignorar a condição.

Solução 2

Se a atribuição de função tiver várias ações que concedem uma permissão, verifique se você tem como destino todas as ações relevantes.

Causa 3

Quando você adiciona uma condição a uma atribuição de função, pode levar até 5 minutos para que a condição seja imposta. Quando você adiciona uma condição, os provedores de recursos (como Microsoft Storage) são notificados sobre a atualização. Os provedores de recursos fazem atualizações em seus caches locais imediatamente para garantir que eles tenham as atribuições de função mais recentes. Esse processo é concluído em 1 ou 2 minutos, mas pode levar até 5 minutos.

Solução 3

Aguarde 5 minutos e teste a condição novamente.

Sintoma – a condição não é um erro válido ao adicionar uma condição

Ao tentar adicionar uma atribuição de função com uma condição, você receberá um erro semelhante a:

The given role assignment condition is invalid.

Causa 1

A propriedade conditionVersion está definida como "1.0".

Solução 1

Defina a propriedade conditionVersion como "2.0".

Causa 2

Sua condição não está formatada corretamente.

Solução 2

Corrija problemas de formato ou sintaxe da condição. Como alternativa, adicione a condição usando o editor visual no portal do Azure.

Problemas no editor visual

Sintoma –A entidade de serviço não aparece na origem do atributo

Quando você tenta adicionar uma atribuição de função com uma condição, a Entidade de segurança não aparece na lista Origem do atributo.

Screenshot showing Principal in Attribute source list when adding a condition.

Em vez disso, você verá a mensagem:

To use principal (user) attributes, you must have Microsoft Entra permissions (such as the [Attribute Assignment Administrator](../active-directory/roles/permissions-reference.md#attribute-assignment-administrator) role) and custom security attributes defined in Microsoft Entra ID.

Causa

Você não atende aos pré-requisitos. Para usar os atributos de entidade de segurança, você precisa ter os seguintes itens:

  • Permissões do Microsoft para o usuário conectado ler pelo menos um conjunto de atributos
  • Atributos de segurança personalizados definidos no Microsoft Entra ID

Solução

  1. Abra Atributos de segurança personalizados>do Microsoft Entra ID.

    Se aparecer a página Introdução, você não tem permissões para ler pelo menos um conjunto de atributos ou os atributos de segurança personalizados ainda não foram definidos.

    Screenshot that shows Custom security attributes Get started page.

  2. Se os atributos de segurança personalizados tiverem sido definidos, atribua uma das seguintes funções no escopo do locatário ou no escopo do conjunto de atributos. Para saber mais, confira Gerenciar o acesso a atributos de segurança personalizados no Microsoft Entra ID.

    Importante

    Por padrão, o Administrador Global e outras funções de administrador não têm permissão para ler, definir ou designar atributos de segurança personalizados.

  3. Se os atributos de segurança personalizados ainda não tiverem sido definidos, atribua a função Administrador de Definição de Atributo no escopo do locatário e adicione atributos de segurança personalizados. Para saber mais, confira Adicionar ou desativar atributos de segurança personalizados no Microsoft Entra ID.

    Quando terminar, você poderá ler pelo menos um conjunto de atributos.

    Screenshot that shows the attribute sets the user can read.

    Entidade de segurança agora deverá aparecer na lista Origem do atributo quando você adicionar uma atribuição de função com uma condição.

Sintoma – A entidade de segurança não aparece na origem do atributo ao usar o PIM

Quando você tenta adicionar uma atribuição de função com uma condição usando o PIM (Privileged Identity Management) do Management, a Entidade de segurança não aparece na lista Origem do atributo.

Screenshot showing Principal in Attribute source list when adding a condition using Privileged Identity Management.

Causa

Atualmente, o PIM não dá suporte ao uso do atributo de entidade de segurança em uma condição de atribuição de função.

Mensagens de erro no editor visual

Sintoma – Condição não reconhecida

Depois de usar o editor de código, alterne para o editor visual e receberá uma mensagem semelhante à seguinte:

The current expression cannot be recognized. Switch to the code editor to edit the expression or delete the expression and add a new one.

Causa

Foram feitas atualizações na condição que o editor visual não é capaz de analisar.

Solução

Corrija problemas de formato ou sintaxe da condição. Como alternativa, você pode excluir a condição e tentar novamente.

Sintoma – O atributo não aplica o erro para a condição salva anteriormente

Ao abrir uma condição salva anteriormente no editor visual, você receberá a seguinte mensagem:

Attribute does not apply for the selected actions. Select a different set of actions.

Causa

Em maio de 2022, a ação Ler um blob foi alterada do seguinte formato:

!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})

Para excluir a suboperação Blob.List:

!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})

Se você tiver criado uma condição com a ação Ler um blob antes de maio de 2022, poderá ver esta mensagem de erro no editor visual.

Solução

Abra o painel Selecionar uma ação e selecione a ação Ler um blob novamente.

Sintoma – O atributo não aplica o erro

Ao selecionar uma ou mais ações no editor visual com uma expressão existente, você recebe a seguinte mensagem e o atributo selecionado anteriormente é removido:

Attribute does not apply for the selected actions. Select a different set of actions.

Causa

O atributo selecionado anteriormente não se aplica mais às ações selecionadas no momento.

Solução 1

Na seção Adicionar ação, selecione uma ação que se aplica ao atributo selecionado. Para obter uma lista de ações de armazenamento compatíveis com cada atributo de armazenamento, confira Ações e atributos para condições de atribuição de função do Azure para Armazenamento de Blobs do Azure e Ações e atributos para condições de atribuição de função do Azure para filas do Azure.

Solução 2

Na seção Compilar expressão, selecione um atributo que se aplica às ações selecionadas no momento. Para obter uma lista de atributos de armazenamento compatíveis com cada ação de armazenamento, confira Ações e atributos para condições de atribuição de função do Azure para Armazenamento de Blobs do Azure e Ações e atributos para condições de atribuição de função do Azure para filas do Azure.

Sintoma – O atributo não se aplica neste aviso de contexto

Quando você faz edições no editor de código e depois muda para o editor visual, obtém a seguinte mensagem e o atributo selecionado anteriormente é removido:

Attribute does not apply in this context. Use a different role assignment scope or remove the expression.

Causa

O atributo especificado não está disponível no escopo atual, como usar Version ID em uma conta de armazenamento com namespace hierárquico habilitado.

Solução

Se você quiser usar o atributo especificado no momento, crie a condição de atribuição de função em um escopo diferente, como o escopo do grupo de recursos. Ou remova e recrie a expressão usando as ações selecionadas no momento.

Sintoma – O atributo não é um erro reconhecido

Quando você faz edições no editor de código e depois muda para o editor visual, obtém a seguinte mensagem e o atributo selecionado anteriormente é removido:

Attribute is not recognized. Select a valid attribute or remove the expression.

Causa

O atributo especificado não é reconhecido, possivelmente devido a um erro de digitação.

Solução

No editor de código, corrija o erro de digitação. Ou remova a expressão existente e use o editor visual para selecionar um atributo.

Sintoma – O valor do atributo é um erro inválido

Quando você faz edições no editor de código e depois muda para o editor visual, obtém a seguinte mensagem e o atributo selecionado anteriormente é removido:

Attribute value is invalid. Select another attribute or value.

Causa

O lado direito da expressão contém um atributo ou valor que não é válido.

Solução

Use o editor visual para selecionar um atributo ou especificar um valor.

Sintoma – Erro de nenhuma ação selecionada

Ao remover todas as ações do editor visual, você receberá a seguinte mensagem:

No actions selected. Select one or more actions to edit expressions.

Causa

Há uma expressão existente, mas nenhuma ação foi selecionada como um destino.

Solução

Na seção Adicionar ação, adicione uma ou mais ações para a qual a expressão deve ser direcionada.

Sintoma – Não há opções de erro disponíveis

Ao tentar adicionar uma expressão, você recebe esta mensagem:

No options available

Causa

Você selecionou direcionar várias ações e não há nenhum atributo aplicável a todas as ações selecionadas no momento.

Solução

Na seção Adicionar ação, selecione menos ações a serem direcionadas. Para direcionar as ações que você removeu, adicione várias condições.

Sintoma – IDs de definição de função não encontradas

Ao tentar adicionar uma expressão, você recebe esta mensagem:

Cannot find built-in or custom role definitions with IDs: <role IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.

Causa

Uma ou mais IDs de definição de função que você tentou adicionar para o atributo da ID de definição de função não foram encontradas ou não têm o formato GUID correto: 00000000-0000-0000-0000-000000000000.

Solução

Use o editor de condições para selecionar a função. Se você adicionou a função personalizada recentemente, atualize a página ou saia e conecte-se novamente.

Sintoma – IDs da entidade de segurança não encontradas

Ao tentar adicionar uma expressão, você recebe esta mensagem:

Cannot find users, groups, or service principals in Azure Active Directory with principal IDs: <principal IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.

Causa

Uma ou mais IDs da entidade de segurança que você tentou adicionar para o atributo da ID da entidade de segurança não foram encontradas ou não têm o formato GUID correto: 00000000-0000-0000-0000-000000000000.

Solução

Use o editor de condições para selecionar a entidade de segurança. Se você adicionou a entidade de segurança recentemente, atualize a página ou saia e conecte-se novamente.

Mensagens de erro no Azure PowerShell

Sintoma – O atributo de recurso não é um erro válido

Ao tentar adicionar uma atribuição de função com uma condição usando o Azure PowerShell, você receberá um erro semelhante a:

New-AzRoleAssignment : Resource attribute
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.

Causa

Se a condição incluir um cifrão ($), você precisará prefixá-la com um acento grave (`).

Solução

Adicione um acento grave (`) antes de cada cifrão. Um exemplo é mostrado a seguir. Para obter mais informações sobre regras para aspas no PowerShell, confira Sobre as regras de aspas.

$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"

Sintoma – erro ao copiar e colar uma condição

Causa

Se você usar o PowerShell e copiar uma condição de um documento, ela poderá incluir caracteres especiais que causam o erro a seguir. Alguns editores (como o Microsoft Word) adicionam caracteres de controle ao formatar texto, que não são visíveis.

The given role assignment condition is invalid.

Solução

Se você copiou uma condição de um editor de rich text e tem certeza de que a condição está correta, exclua todos os espaços e retornos de linha e adicione novamente os espaços relevantes. Como alternativa, use um editor de texto sem formatação ou um editor de código, como o Visual Studio Code.

Mensagens de erro na CLI do Azure

Sintoma – O atributo de recurso não é um erro válido

Ao tentar adicionar uma atribuição de função com uma condição usando a CLI do Azure, você receberá um erro semelhante a:

Resource attribute Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.

Causa

Se a condição incluir um cifrão ($), você precisará prefixá-la com uma barra invertida (\).

Solução

Adicione uma barra invertida (\) antes de cada cifrão. Um exemplo é mostrado a seguir. Para obter mais informações sobre regras para aspas no Bash, confira Aspas duplas.

condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<\$key_case_sensitive\$>] StringEquals 'Cascade'))"

Sintoma – Erro de argumentos não reconhecidos

Ao tentar adicionar uma atribuição de função com uma condição usando a CLI do Azure, você receberá um erro semelhante a:

az: error: unrecognized arguments: --description {description} --condition {condition} --condition-version 2.0

Causa

Você provavelmente está usando uma versão anterior da CLI do Azure que não oferece suporte a parâmetros de condição de atribuição de função.

Solução

Atualize para a versão mais recente da CLI do Azure (2.18 ou posterior). Para obter mais informações, consulte Instalar a CLI do Azure.

Sintoma – erro ao atribuir uma cadeia de caracteres de condição a uma variável no Bash

Ao tentar atribuir uma cadeia de caracteres de condição a uma variável no Bash, você recebe a mensagem bash: !: event not found.

Causa

No Bash, se a expansão do histórico estiver habilitada, você poderá ver a mensagem bash: !: event not found devido ao ponto de exclamação (!).

Solução

Desabilite a expansão do histórico com o comando set +H. Para habilitar novamente a expansão do histórico, use set -H.

Próximas etapas