Partilhar via


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 em um escopo superior.

Solução 1

Certifique-se de que as entidades de segurança não tenham várias atribuições de função (com ou sem condições) que concedam acesso à mesma ação de dados, levando à não aplicação de condições. Para obter informações sobre a lógica de avaliação, consulte Como o RBAC do Azure determina se um usuário tem acesso a um recurso.

Causa 2

Sua atribuição de função tem várias ações que concedem uma permissão e sua condição não direciona todas as ações. Por exemplo, você pode criar um blob se tiver uma ou /blobs/write /blobs/add/action ações de dados. Se sua atribuição de função tiver ambas as 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 sua atribuição de função tiver várias ações que concedem uma permissão, certifique-se de direcionar 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 o Microsoft Storage) são notificados sobre a atualização. Os provedores de recursos fazem atualizações em seus caches locais imediatamente para garantir que tenham as atribuições de função mais recentes. Este processo é concluído em 1 ou 2 minutos, mas pode demorar 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

Quando você tenta adicionar uma atribuição de função com uma condição, você recebe um erro semelhante a:

The given role assignment condition is invalid.

Causa 1

A conditionVersion propriedade está definida como "1.0".

Solução 1

Defina conditionVersion a propriedade como "2.0".

Causa 2

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

Solução 2

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

Problemas no editor visual

Sintoma - O editor de condições aparece ao editar uma condição

Você criou uma condição usando um modelo descrito em Delegar gerenciamento de atribuição de função do Azure a outras pessoas com condições. Quando você tenta editar a condição, você vê o editor de condição avançada.

Captura de ecrã do editor de condições que mostra opções para editar uma condição.

Quando você editou a condição anteriormente, editou usando o modelo de condição.

Captura de ecrã de modelos de condição com o modelo correspondente ativado.

Motivo

A condição não corresponde ao padrão do modelo.

Solução 1

Edite a condição para corresponder a um dos seguintes padrões de modelo.

Template Condição
Restringir funções Exemplo: restringir funções
Restringir funções e tipos principais Exemplo: restringir funções e tipos principais
Restringir funções e princípios Exemplo: restringir funções e grupos específicos
Permitir todos, exceto funções específicas Exemplo: permitir a maioria das funções, mas não permitir que outras pessoas atribuam funções

Solução 2

Exclua a condição e recrie-a usando as etapas em Delegar gerenciamento de atribuição de função do Azure a outras pessoas com condições.

Sintoma - Principal não aparece na origem do atributo

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

Captura de tela mostrando Principal na lista de origem do atributo ao adicionar uma condição.

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.

Motivo

Você não atende aos pré-requisitos. Para usar atributos principais, você deve ter o seguinte:

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

Solução

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

    Se vir a página Introdução , 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.

    Captura de ecrã que mostra a página Introdução aos atributos de segurança personalizados.

  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 obter mais informações, consulte 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ões para ler, definir ou atribuir atributos de segurança personalizados.

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

    Quando terminar, você deverá ser capaz de ler pelo menos um conjunto de atributos.

    Captura de tela que mostra os conjuntos de atributos que o usuário pode ler.

    Principal agora deve aparecer na lista Origem do atributo quando você adiciona uma atribuição de função com uma condição.

Sintoma - Principal 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 Microsoft Entra Privileged Identity Management (PIM), Principal não aparece na lista Fonte de atributo.

Captura de tela mostrando Principal na lista de origem de atributos ao adicionar uma condição usando o Privileged Identity Management.

Motivo

Atualmente, o PIM não oferece suporte ao uso do atributo principal 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, você alterna para o editor visual e recebe 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.

Motivo

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

Solução

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

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

Quando você abre uma condição salva anteriormente no editor visual, você recebe a seguinte mensagem:

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

Motivo

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 Blob.List suboperação:

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

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

Solução

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

Sintoma - O atributo não aplica erro

Quando você seleciona 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.

Motivo

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 aplique ao atributo selecionado. Para obter uma lista de ações de armazenamento suportadas por cada atributo de armazenamento, consulte Ações e atributos para condições de atribuição de função do Azure para o Armazenamento de Blob 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 Expressão de compilação, selecione um atributo que se aplique às ações selecionadas no momento. Para obter uma lista de atributos de armazenamento suportados por cada ação de armazenamento, consulte Ações e atributos para condições de atribuição de função do Azure para o 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, em seguida, alterna para o editor visual, você recebe 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.

Motivo

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 escopo de grupo de recursos. Ou remova e recrie a expressão usando as ações selecionadas no momento.

Sintoma - O atributo não é reconhecido erro

Quando você faz edições no editor de código e, em seguida, alterna para o editor visual, você recebe a seguinte mensagem e o atributo selecionado anteriormente é removido:

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

Motivo

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 é erro inválido

Quando você faz edições no editor de código e, em seguida, alterna para o editor visual, você recebe a seguinte mensagem e o atributo selecionado anteriormente é removido:

Attribute value is invalid. Select another attribute or value.

Motivo

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 - Nenhum erro de ações selecionadas

Quando você remove todas as ações no editor visual, você recebe a seguinte mensagem:

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

Motivo

Existe uma expressão, mas nenhuma ação foi selecionada como alvo.

Solução

Na seção Adicionar ação, adicione uma ou mais ações que a expressão deve segmentar.

Sintoma - Nenhum erro de opções disponíveis

Quando você tenta adicionar uma expressão, você recebe a seguinte mensagem:

No options available

Motivo

Você selecionou para direcionar várias ações e não há atributos que se apliquem a todas as ações selecionadas no momento.

Solução

Na seção Adicionar ação, selecione menos ações para segmentar. Para direcionar as ações removidas, adicione várias condições.

Sintoma - IDs de definição de função não encontrados

Quando você tenta adicionar uma expressão, você recebe a seguinte 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.

Motivo

Uma ou mais IDs de definição de função que você tentou adicionar para o atributo 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 recentemente a função personalizada, atualize a página ou saia e entre novamente.

Sintoma - IDs principais não encontrados

Quando você tenta adicionar uma expressão, você recebe a seguinte 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.

Motivo

Um ou mais IDs principais que você tentou adicionar para o atributo ID Principal não foram encontrados 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 entre novamente.

Mensagens de erro no Azure PowerShell

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

Quando você tenta adicionar uma atribuição de função com uma condição usando o Azure PowerShell, você recebe um erro semelhante a:

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

Motivo

Se a sua condição incluir um cifrão ($), você deve prefixá-lo com um backtick (').

Solução

Adicione um tick (') antes de cada cifrão. Segue-se um exemplo. Para obter mais informações sobre regras para aspas no PowerShell, consulte Sobre 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

Motivo

Se você usar o PowerShell e copiar uma condição de um documento, ele poderá incluir caracteres especiais que causam o seguinte erro. Alguns editores (como o Microsoft Word) adicionam caracteres de controle ao formatar texto que não aparece.

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 retorne e, em seguida, adicione de volta 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ê recebe um erro semelhante a:

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

Motivo

Se sua condição incluir um cifrão ($), você deve prefixá-lo com uma barra invertida (\).

Solução

Adicione uma barra invertida (\) antes de cada cifrão. Segue-se um exemplo. Para obter mais informações sobre regras para aspas no Bash, consulte 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ê recebe um erro semelhante a:

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

Motivo

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

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

Motivo

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

Solução

Desative a expansão do histórico com o comando set +H. Para reativar a expansão do histórico, use set -H.

Próximos passos