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 – O editor de condições aparece ao editar uma condição
Você criou uma condição usando um modelo descrito em o gerenciamento de atribuição de função do Azure para outras pessoas com condições. Ao tentar editar a condição, você verá o editor de condições avançadas.
Quando editou a condição anteriormente, você editou usando o modelo de condição.
Causa
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.
Modelo | 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 todas, exceto funções específicas | Exemplo: permitir a maioria das funções, mas não permitir que outros atribuam funções |
Solução 2
Exclua a condição e recrie-a usando as etapas em Delegar o gerenciamento de atribuição de função do Azure para outras pessoas com condições.
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.
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
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.
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.
- Leitor de Definição de Atributos
- Leitor de Designação de Atributos
- Administrador de Definição de Atributos
- Administrador de Designação de Atributos
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.
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.
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.
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
.