Noções básicas de autorização

A autorização (às vezes abreviada como AuthZ) é usada para definir permissões que permitem a avaliação do acesso a recursos ou funcionalidades. Em contraste, a autenticação (às vezes abreviada como AuthN) é focada em provar que uma entidade como um usuário ou serviço é realmente quem eles afirmam ser.

A autorização pode incluir a especificação da funcionalidade, recursos ou dados que uma entidade tem permissão para acessar. A autorização também especifica o que pode ser feito com os dados. Essa ação de autorização é frequentemente chamada de controle de acesso.

Autenticação e autorização são conceitos que não se limitam apenas aos usuários. Serviços ou aplicativos daemon geralmente são criados para fazer solicitações de recursos como eles mesmos, em vez de em nome de um usuário específico. Neste artigo, o termo "entidade" é usado para se referir a um usuário ou um aplicativo.

Abordagens de autorização

Existem várias abordagens comuns para lidar com a autorização. O controle de acesso baseado em função é atualmente a abordagem mais comum usando a plataforma de identidade da Microsoft.

Autenticação como autorização

Possivelmente, a forma mais simples de autorização é conceder ou negar acesso com base na autenticação da entidade que faz um pedido. Se o solicitante puder provar que é quem afirma ser, ele pode acessar os recursos ou funcionalidades protegidos.

Listas de controlo de acesso

A autorização usando listas de controle de acesso (ACLs) envolve a manutenção de listas explícitas de entidades específicas que têm ou não acesso a um recurso ou funcionalidade. As ACLs oferecem um controle mais fino sobre a autenticação como autorização, mas tornam-se difíceis de gerenciar à medida que o número de entidades aumenta.

Controlo de acesso baseado em funções

O controle de acesso baseado em função (RBAC) é possivelmente a abordagem mais comum para impor a autorização em aplicativos. Ao usar o RBAC, as funções são definidas para descrever os tipos de atividades que uma entidade pode realizar. Um desenvolvedor de aplicativos concede acesso a funções em vez de entidades individuais. Um administrador pode então atribuir funções a entidades diferentes para controlar quais têm acesso a quais recursos e funcionalidades.

Em implementações RBAC avançadas, as funções podem ser mapeadas para coleções de permissões, onde uma permissão descreve uma ação granular ou atividade que pode ser executada. As funções são então configuradas como combinações de permissões. Calcule o conjunto geral de permissões para uma entidade combinando as permissões concedidas às várias funções atribuídas à entidade. Um bom exemplo dessa abordagem é a implementação RBAC que controla o acesso a recursos em assinaturas do Azure.

Nota

O RBAC de aplicativo difere do RBAC do Azure e do Microsoft Entra RBAC. As funções personalizadas do Azure e as funções internas fazem parte do RBAC do Azure, que ajuda a gerenciar os recursos do Azure. Microsoft Entra RBAC permite o gerenciamento de recursos do Microsoft Entra.

Controle de acesso baseado em atributos

O controle de acesso baseado em atributos (ABAC) é um mecanismo de controle de acesso mais refinado. Nessa abordagem, as regras são aplicadas à entidade, aos recursos que estão sendo acessados e ao ambiente atual. As regras determinam o nível de acesso aos recursos e funcionalidades. Um exemplo pode ser permitir que apenas usuários que são gerentes acessem arquivos identificados com uma tag de metadados de "gerentes apenas durante o horário de trabalho" durante o horário das 9h às 17h em dias úteis. Nesse caso, o acesso é determinado examinando o atributo (status como gerente) do usuário, o atributo (tag de metadados em um arquivo) do recurso e também um atributo de ambiente (a hora atual).

Uma vantagem do ABAC é que um controle de acesso mais granular e dinâmico pode ser alcançado por meio de avaliações de regras e condições sem a necessidade de criar um grande número de funções específicas e atribuições RBAC.

Um método para alcançar o ABAC com o Microsoft Entra ID é usar grupos dinâmicos. Os grupos dinâmicos permitem que os administradores atribuam dinamicamente usuários a grupos com base em atributos de usuário específicos com os valores desejados. Por exemplo, um grupo Autores pode ser criado onde todos os usuários com o título de trabalho Autor são atribuídos dinamicamente ao grupo Autores. Os grupos dinâmicos podem ser usados em combinação com o RBAC para autorização, onde você mapeia funções para grupos e atribui dinamicamente usuários a grupos.

O Azure ABAC é um exemplo de uma solução ABAC que está disponível hoje. O Azure ABAC baseia-se no Azure RBAC adicionando condições de atribuição de função com base em atributos no contexto de ações específicas.

Autorização de execução

A lógica de autorização é frequentemente implementada dentro dos aplicativos ou soluções onde o controle de acesso é necessário. Em muitos casos, as plataformas de desenvolvimento de aplicativos oferecem middleware ou outras soluções de API que simplificam a implementação da autorização. Exemplos incluem o uso do AuthorizeAttribute em ASP.NET ou Route Guards em Angular.

Para abordagens de autorização que dependem de informações sobre a entidade autenticada, um aplicativo avalia as informações trocadas durante a autenticação. Por exemplo, usando as informações que foram fornecidas dentro de um token de segurança. Se você estiver planejando usar informações de tokens para autorização, recomendamos seguir estas orientações sobre como proteger corretamente os aplicativos por meio da validação de declarações. em Para informações não contidas em um token de segurança, um aplicativo pode fazer chamadas extras para recursos externos.

Não é estritamente necessário que os desenvolvedores incorporem a lógica de autorização inteiramente em seus aplicativos. Em vez disso, serviços de autorização dedicados podem ser usados para centralizar a implementação e o gerenciamento de autorizações.

Próximos passos