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.
O RBAC (controle de acesso baseado em função) permite que determinados usuários ou grupos tenham permissões específicas para acessar e gerenciar recursos. O controle de acesso baseado em função do aplicativo (RBAC) difere do controle de acesso baseado em função do Azure e do controle de acesso baseado em função do Microsoft Entra. As funções personalizadas do Azure e as funções internas fazem parte do RBAC do Azure, que é usado para ajudar a gerenciar recursos do Azure. O RBAC do Microsoft Entra é usado para gerenciar recursos do Microsoft Entra. Este artigo explica o RBAC específico do aplicativo. Para obter informações sobre como implementar o RBAC específico do aplicativo, consulte Como adicionar funções de aplicativo ao seu aplicativo e recebê-las no token.
Definições de funções
O RBAC é um mecanismo popular para impor a autorização em aplicativos. Quando uma organização usa o RBAC, um desenvolvedor de aplicativos define funções em vez de autorizar usuários ou grupos individuais. Um administrador pode atribuir funções a diferentes usuários e grupos para controlar quem tem acesso ao conteúdo e à funcionalidade.
O RBAC ajuda um desenvolvedor de aplicativos a gerenciar recursos e seu uso. O RBAC também permite que um desenvolvedor de aplicativos controle as áreas de um aplicativo que os usuários podem acessar. Os administradores podem controlar quais usuários têm acesso a um aplicativo usando a propriedade atribuição de usuário necessária. Os desenvolvedores precisam considerar usuários específicos dentro do aplicativo e o que os usuários podem fazer dentro do aplicativo.
Primeiro, um desenvolvedor de aplicativos cria uma definição de função na seção de registro do aplicativo no Centro de administração do Microsoft Entra. A definição de função inclui um valor retornado para usuários atribuídos a essa função. Um desenvolvedor pode usar esse valor para implementar a lógica do aplicativo para determinar o que esses usuários podem ou não fazer em um aplicativo.
Opções de RBAC
As diretrizes a seguir devem ser aplicadas ao considerar a inclusão da autorização de controle de acesso baseada em função em um aplicativo:
- Defina as funções necessárias para as necessidades de autorização do aplicativo.
- Aplique, armazene e recupere as funções pertinentes para usuários autenticados.
- Determine o comportamento do aplicativo com base nas funções atribuídas ao usuário atual.
Depois que as funções são definidas, a plataforma de identidade da Microsoft dá suporte a várias soluções diferentes que podem ser usadas para aplicar, armazenar e recuperar informações de função para usuários autenticados. Essas soluções incluem funções de aplicativo, grupos do Microsoft Entra e o uso de armazenamentos de dados personalizados para informações de função do usuário.
Os desenvolvedores têm a flexibilidade de fornecer sua própria implementação para como as atribuições de função devem ser interpretadas como permissões de aplicativo. Essa interpretação de permissões pode envolver o uso de middleware ou de outras opções fornecidas pela plataforma dos aplicativos ou por bibliotecas relacionadas. Os aplicativos normalmente recebem informações de função de usuário como declarações e decidem permissões de usuário com base nessas declarações.
Funções de aplicativo
A ID do Microsoft Entra permite que você defina funções de aplicativo para seu aplicativo e atribua essas funções a usuários e outros aplicativos. As funções que você atribui a um usuário ou aplicativo definem seu nível de acesso aos recursos e operações em seu aplicativo.
Quando o Microsoft Entra ID emite um token de acesso para um usuário ou aplicativo autenticado, ele inclui os nomes dos papéis que você atribuiu à entidade (o usuário ou aplicativo) na declaração roles do token de acesso. Um aplicativo como uma API Web que recebe esse token de acesso em uma solicitação pode tomar decisões de autorização com base nos valores na roles declaração.
Grupos
Os desenvolvedores também podem usar grupos do Microsoft Entra para implementar o RBAC em seus aplicativos, em que as associações do usuário em grupos específicos são interpretadas como suas associações de função. Quando uma organização usa grupos, o token inclui uma declaração de grupos. A declaração de grupo especifica os identificadores de todos os grupos atribuídos do usuário no locatário.
Importante
Ao trabalhar com grupos, os desenvolvedores precisam estar cientes do conceito de uma declaração excedente. Por padrão, se um usuário é membro de mais grupos que o limite excedente (150 para tokens SAML, 200 para tokens JWT e seis se o fluxo implícito é usado), o Microsoft Entra ID não emite a declaração de grupos no token. Em vez disso, ele inclui uma "declaração de excedente" no token que indica ao consumidor do token que ele precisa consultar a API do Microsoft Graph para recuperar as associações a um grupo do usuário. Para obter mais informações sobre como trabalhar com declarações de excedente, consulte Declarações em tokens de acesso. É possível emitir apenas grupos atribuídos a um aplicativo, embora a atribuição baseada em grupo exija a edição P1 ou P2 da ID do Microsoft Entra.
Armazenamento de dados personalizado
Funções de aplicativo e grupos armazenam informações sobre atribuições de usuário no diretório do Microsoft Entra. Outra opção para gerenciar informações de função de usuário disponíveis para desenvolvedores é manter as informações fora do diretório em um armazenamento de dados personalizado. Por exemplo, em um banco de dados SQL, no Armazenamento de Tabelas do Azure ou no Azure Cosmos DB para Tabela.
O uso do armazenamento personalizado permite aos desenvolvedores personalização extra e controle sobre como atribuir funções aos usuários e como representá-las. No entanto, a flexibilidade extra também introduz mais responsabilidade. Por exemplo, não há nenhum mecanismo disponível no momento para incluir essas informações em tokens retornados do Entra ID da Microsoft. Os aplicativos devem recuperar as funções se as informações de função forem mantidas em um repositório de dados personalizado. A recuperação das funções normalmente é feita usando pontos de extensibilidade definidos no middleware disponível para a plataforma que está sendo usada para desenvolver o aplicativo. Os desenvolvedores são responsáveis por proteger corretamente o armazenamento de dados personalizado.
Escolher uma abordagem
Em geral, as funções de aplicativo são a solução recomendada. As funções de aplicativo fornecem o modelo de programação mais simples e são feitas especialmente para implementações de RBAC. No entanto, requisitos de aplicativo específicos podem indicar que uma abordagem diferente seria uma solução melhor.
Os desenvolvedores podem usar funções de aplicativo para controlar se um usuário pode entrar em um aplicativo ou se um aplicativo pode obter um token de acesso para uma API Web. Os desenvolvedores preferem funções de aplicativo em vez de grupos do Microsoft Entra quando querem descrever e controlar os parâmetros de autorização em seus aplicativos. Por exemplo, um aplicativo que usa grupos para autorização será interrompido no próximo locatário, pois tanto o identificador de grupo quanto o nome podem ser diferentes. Um aplicativo que usa funções de aplicativo permanece seguro.
Embora funções de aplicativo ou grupos possam ser usados para autorização, as principais diferenças entre eles podem influenciar qual é a melhor solução para um determinado cenário.
| Funções de Aplicativo | Grupos do Microsoft Entra | Armazenamento de Dados Personalizado | |
|---|---|---|---|
| Modelo de programação | Mais simples. Eles são específicos para um aplicativo e são definidos no registro do aplicativo. Eles se movem com o aplicativo. | Mais complexo. Os identificadores de grupo variam entre locatários, e as declarações de excedente podem precisar ser consideradas. Os grupos não são específicos de um aplicativo, mas de um locatário do Microsoft Entra. | Mais complexo. Os desenvolvedores devem implementar meios pelos quais as informações de função são armazenadas e recuperadas. |
| Os valores de função são estáticos entre os inquilinos do Microsoft Entra | Yes | Não | Depende da implementação. |
| Valores de função podem ser usados em vários aplicativos | Não (a menos que a configuração de função seja duplicada em cada registro de aplicativo.) | Yes | Yes |
| Informações armazenadas no diretório | Yes | Yes | Não |
| As informações são entregues por meio de tokens | Sim (declaração de funções) | Sim (se houver um excedente, as reivindicações de grupos talvez precisem ser recuperadas em tempo de execução) | Não (Recuperado em runtime por meio de código personalizado.) |
| Tempo de vida. | Localizado no registro de aplicativo no diretório. Removido quando o registro do aplicativo é removido. | Reside no diretório. Permanecerá intacto mesmo se o registro da aplicação for removido. | Reside no armazenamento de dados personalizado. Não vinculado ao registro do aplicativo. |
Próximas etapas
- Práticas recomendadas de Gerenciamento de Identidade do Azure e segurança de controle de acesso
- Para saber mais sobre como usar a autorização adequada por meio de declarações de token, consulte Proteger aplicativos e APIs validando declarações