Controle de acesso baseado em função para desenvolvedores de aplicativos
O controle de acesso baseado em função (RBAC) permite que determinados usuários ou grupos tenham permissões específicas para acessar e gerenciar recursos. O RBAC do aplicativo 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 Microsoft Entra RBAC é usado para gerenciar recursos do Microsoft Entra. Este artigo explica o RBAC específico do aplicativo. Para obter informações sobre como implementar 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 RBAC, um desenvolvedor de aplicativos define funções em vez de autorizar usuários individuais ou grupos. Um administrador pode, então, 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 User assignment required . Os desenvolvedores precisam levar em conta usuários específicos dentro do aplicativo e o que os usuários podem fazer dentro do aplicativo.
Um desenvolvedor de aplicativos primeiro cria uma definição de função dentro da seção de registro do aplicativo no centro de administração do Microsoft Entra. A definição de função inclui um valor que é retornado para os 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 RBAC
As seguintes orientações 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.
- Aplicar, armazenar e recuperar 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 oferece 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 datastores personalizados para informações de função de 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 das permissões pode envolver o uso de middleware ou outras opções fornecidas pela plataforma dos aplicativos ou bibliotecas relacionadas. Os aplicativos normalmente recebem informações de função de usuário como declarações e, em seguida, decidem as permissões do usuário com base nessas declarações.
Funções do aplicativo
O Microsoft Entra ID 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 atribuídas 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 das funções que você atribuiu à entidade (o usuário ou aplicativo) na declaração do roles
token de acesso. Um aplicativo como uma API da 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, onde 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 dentro do locatário.
Importante
Ao trabalhar com grupos, os desenvolvedores precisam estar cientes do conceito de uma reivindicação de excesso de idade. Por padrão, se um usuário for membro de mais do que o limite de idade (150 para tokens SAML, 200 para tokens JWT, 6 se usar o fluxo implícito), o Microsoft Entra ID não emitirá uma declaração de grupos no token. Em vez disso, ele inclui uma "declaração de excedente" no token que indica que o consumidor do token precisa consultar a API do Microsoft Graph para recuperar as associações de grupo do usuário. Para obter mais informações sobre como trabalhar com declarações de excesso de idade, 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 do Microsoft Entra ID.
Armazenamento de dados personalizado
As funções e grupos de aplicativos 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 que estão 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, armazenamento de tabela do Azure ou Azure Cosmos DB para tabela.
O uso do armazenamento personalizado permite aos desenvolvedores personalização e controle adicionais sobre como atribuir funções aos usuários e como representá-los. No entanto, a flexibilidade adicional também introduz mais responsabilidade. Por exemplo, não há nenhum mecanismo atualmente disponível para incluir essas informações em tokens retornados do Microsoft Entra ID. Os aplicativos devem recuperar as funções se as informações de função forem mantidas em um armazenamento de dados personalizado. A recuperação das funções geralmente é 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 adequadamente o armazenamento de dados personalizado.
Usando as políticas personalizadas do Azure AD B2C, é possível interagir com armazenamentos de dados personalizados e incluir declarações personalizadas em um token.
Escolha uma abordagem
Em geral, as funções do aplicativo são a solução recomendada. As funções do aplicativo fornecem o modelo de programação mais simples e são feitas especificamente para implementações RBAC. No entanto, requisitos específicos de aplicação podem indicar que uma abordagem diferente seria a melhor solução.
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 da Web. As funções de aplicativo são preferidas em relação aos grupos do Microsoft Entra pelos desenvolvedores quando desejam descrever e controlar os parâmetros de autorização em seus aplicativos. Por exemplo, um aplicativo que usa grupos para quebras de autorização no próximo locatário como identificador de grupo e nome pode ser diferente. Um aplicativo que usa funções de aplicativo permanece seguro.
Embora as funções ou grupos de aplicativos 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 da Aplicação | 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 inquilinos e as reclamações por excesso de idade podem ter de 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 locatários do Microsoft Entra | Sim | No | Depende da implementação. |
Os valores de função podem ser usados em vários aplicativos | Não (A menos que a configuração da função seja duplicada em cada registro de aplicativo.) | Sim | Sim |
Informações armazenadas no diretório | Sim | Sim | No |
As informações são entregues através de tokens | Sim (reivindicação de funções) | Sim (Se um excesso de idade, as declarações de grupos podem precisar ser recuperadas em tempo de execução) | Não (Recuperado em tempo de execução via código personalizado.) |
Tempo de vida | Vive no registro do aplicativo no diretório. Removido quando o registro do aplicativo é removido. | Vive em diretório. Permaneça intacto mesmo se o registro do aplicativo for removido. | Vive em armazenamento de dados personalizado. Não vinculado ao registro do aplicativo. |
Próximos passos
- Melhores práticas de segurança de controlo de acesso e Gestão de Identidades do Azure
- Para saber mais sobre a autorização adequada usando declarações de token, consulte Proteger aplicativos e APIs validando declarações