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.
Quando você editou a condição anteriormente, editou usando o modelo de condição.
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.
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
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.
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.
- Leitor de definição de atributo
- Leitor de atribuição de atributos
- Administrador de Definição de Atributo
- Administrador de Atribuição de Atributos
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.
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.
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.
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
.