Controle de acesso baseado em função para desenvolvedores de aplicativos

O RBAC (controle de acesso baseado em função) permite que certos usuários ou grupos tenham permissões específicas para acessar e gerenciar recursos. O RBAC de aplicativos é diferente do controle de acesso baseado em funções do Azure e do controle de acesso baseado em funções do Microsoft Entra. As funções personalizadas e as funções internas do Azure fazem parte do RBAC do Azure, que é usado para ajudar a gerenciar os recursos do Azure. O Microsoft Entra RBAC é usado para gerenciar os recursos do Microsoft Entra. Este artigo explica o RBAC específico do aplicativo. Para saber como implementar o RBAC específico do aplicativo, confira Como adicionar funções de aplicativos em seu aplicativo e recebê-las no token.

Definições de funções

O RBAC é um mecanismo comum usado 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. Em seguida, 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 os recursos e o uso deles. 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 levar em conta usuários específicos no aplicativo e o que os usuários podem fazer nele.

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 que é retornado para os usuários atribuídos a essa função. Um desenvolvedor pode usar esse valor para implementar a lógica de aplicativo para determinar o que esses usuários podem ou não fazer em um aplicativo.

Opções de RBAC

As seguintes diretrizes 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.

Após a definição das funções, 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ções 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 de usuário.

Os desenvolvedores têm a flexibilidade de fornecer sua própria implementação de 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. Normalmente, os aplicativos recebem informações da função de usuário como declarações e tomam decisões sobre as permissões de usuário com base nessas declarações.

Funções de aplicativo

O Microsoft Entra permite definir funções de aplicativo para seu aplicativo e atribuir 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 roles do token de acesso. Um aplicativo como uma API Web que recebe esse token de acesso em uma solicitação pode, então, tomar decisões de autorização com base nos valores na declaração roles.

Grupos

Os desenvolvedores também podem usar os 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 associações de funções. 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 de 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 requer a edição P1 ou P2 do Microsoft Entra ID.

Armazenamento de dados personalizado

As funções de aplicativo e os 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ções 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, armazenamento de tabelas do Azure ou Azure Cosmos DB for Table.

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 atualmente para incluir essas informações em tokens retornados do Microsoft Entra. 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 de funções normalmente é feita por meio de 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.

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, os requisitos de aplicativo específicos podem indicar que uma abordagem diferente será 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 usar as funções de aplicativo em vez dos grupos do Microsoft Entra desejam descrever e controlar os parâmetros de autorização nos respectivos 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 aplicativos permanece seguro.

Embora 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 de Aplicativo Grupos do Microsoft Entra Armazenamento de Dados Personalizado
Modelo de programação Mais simples. Eles são específicos de 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 locatários do Microsoft Entra Sim 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 esteja duplicada em cada registro de aplicativo.) Sim Sim
Informações armazenadas no diretório Sim Sim Não
Informações são entregues por meio de tokens Sim (declaração de funções) Sim (no caso de excedente, as declarações de grupos talvez precisem ser recuperadas em runtime) Não (recuperadas em runtime por meio de um 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. Permanece intato, mesmo que o registro de aplicativo seja removido. Reside no armazenamento de dados personalizado. Não vinculado ao registro de aplicativo.

Próximas etapas