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. Por sua vez, a autenticação (às vezes, abreviada como AuthN) se concentra em provar que uma entidade, como um usuário ou serviço, é realmente quem afirma ser.

A autorização pode incluir a especificação da funcionalidade, dos recursos ou dos dados que uma entidade pode 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 são frequentemente criados para fazer solicitações de recursos por conta própria, 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 a um aplicativo.

Abordagens de autorização

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

Autenticação e autorização

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

Listas de controle de acesso

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

Controle de acesso baseado em função

O RBAC (controle de acesso baseado em função) é 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 executar. Um desenvolvedor de aplicativos concede acesso a funções em vez de a entidades individuais. Em seguida, um administrador pode atribuir funções a diferentes entidades para controlar quais delas têm acesso a quais recursos e funcionalidades.

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

Observação

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

Controle de acesso baseado em atributo

O ABAC (controle de acesso baseado em atributo) é um mecanismo de controle de acesso com granularidade mais alta. Nesta 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 à funcionalidade. Um exemplo disso pode ser permitir que somente usuários que sejam gerentes acessem os arquivos identificados com a marca de metadados "somente para gerentes durante o horário comercial", com o horário das 9h às 17h nos dias úteis. Nesse caso, o acesso é determinado pela análise do atributo (status de gerente) do usuário, do atributo (marca de metadados em um arquivo) do recurso e de um atributo de ambiente (a hora atual).

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

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

O ABAC do Azure é um exemplo de uma solução ABAC disponível atualmente. O ABAC do Azure baseia-se no RBAC do Azure pela adição de condições de atribuição de função com base em atributos no contexto de ações específicas.

Implantação da autorização

A lógica de autorização é frequentemente implantada nos aplicativos ou soluções em que 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 implantação da autorização. Os exemplos incluem o uso de AuthorizeAttribute no ASP.NET ou Route Guards no 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 fornecidas em um token de segurança. Se você estiver planejando usar informações de tokens para autorização, recomendamos seguir estas diretrizes sobre como proteger corretamente aplicativos por meio da validação de declarações. 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 nos aplicativos. Em vez disso, os serviços de autorização dedicados podem ser usados para centralizar a implementação e o gerenciamento de autorização.

Próximas etapas