O que é AuthZ (Autorização)?
Explore a definição de AuthZ, AuthN vs AuthZ, como funciona o AuthZ e as melhores práticas de autorização.
O que é AuthZ e como é diferente de AuthN?
AuthZ é a abreviação de autorização. A autorização é um mecanismo separado da autenticação. Enquanto a autenticação identifica quem tu és, a autorização determina se podes aceder a recursos específicos e quais ações podes realizar neles.
Em exemplos do mundo real, os recursos podem incluir software, sistemas, documentos, pedidos e ativos. A autorização adiciona uma camada extra de controlo, especificando quem pode aceder a esses recursos e sob quais condições.
Como funciona o AuthZ?
A autorização é separada da autenticação, mas muitas vezes está ligada a ela. Por exemplo, protocolos padrão como OAuth 2.0, OIDC e SAML incorporam mecanismos de autorização baseados em tokens.
Num sistema de autorização baseado em tokens, um servidor de autorização concede um token de acesso aos utilizadores. Este token, que inclui permissões, determina se o utilizador pode aceder a certos recursos.
Atribuir permissões diretamente aos utilizadores pode ser ineficiente, especialmente quando são necessárias condições mais detalhadas. Por exemplo, o acesso pode depender de circunstâncias específicas, como a localização do utilizador, tornando necessárias políticas de controlo de acesso para uma melhor gestão de permissões.
Aqui está um fluxo de alto nível passo a passo de como a autorização funciona:
- Iniciar autenticação: O utilizador inicia sessão selecionando um identificador e método, como usar um email e senha.
- Pedido de autorização: Após iniciar sessão, o utilizador solicita acesso a um recurso, incluindo detalhes como o seu ID de utilizador e funções.
- Validação de controlo de acesso: O sistema verifica o pedido em relação às políticas de autorização predefinidas, como regras baseadas em funções ou atributos.
- Decisão de autorização: O sistema determina se concede ou nega acesso com base nas políticas e permissões.
Para compreender em detalhe o fluxo de pedidos de autorização OAuth 2.0, veja o pedido de autorização
Quais são os tipos de autorização?
Controlo de acesso baseado em funções e como funciona
Controlo de Acesso Baseado em Funções (RBAC) usa funções para gerir o acesso. Cada utilizador recebe uma ou mais funções predefinidas, e cada função inclui um conjunto de permissões. A chave para o RBAC é compreender a relação entre sujeitos (ou utilizadores), funções e permissões.
Para entender como funciona o Controlo de Acesso Baseado em Funções (RBAC), precisas saber sobre:
- Sujeitos: Podem ser utilizadores ou entidades não-humanas, como
utilizador
ouaplicação máquina-a-máquina
. - Funções: Representam funções de trabalho ou responsabilidades. ex.,
admin
membro
- Permissões: Especificam quais ações são permitidas em recursos específicos, ex.,
ler: pedido
.
Controlo de acesso baseado em atributos e como funciona
Controlo de Acesso Baseado em Atributos (ABAC) é amplamente usado em autorização e suporta cenários mais complexos usando atributos específicos de uma entidade, além de apenas funções.
Por exemplo, uma empresa gere uma plataforma global de partilha de documentos onde os funcionários precisam de acesso controlado a ficheiros confidenciais com base no seu papel, localização e nível de classificação do documento.
Os atributos podem ser desenhados das seguintes formas:
- Atributos do utilizador: Papel (ex., “Gerente,” “Engenheiro”), localização (ex., “EUA,” “Europa”).
- Atributos do recurso: Tipo de documento (ex., “Relatório Financeiro,” “Ficheiro de Design”), nível de classificação (ex., “Confidencial”).
- Atributos do ambiente: Tempo de acesso (ex., “Durante o horário de trabalho”), tipo de dispositivo (ex., “Portátil da Empresa”).
Também existem outros modelos de controlo de acesso, tais como controlo de acesso baseado em políticas (PBAC). Cada modelo tem os seus pontos fortes e fracos, e a escolha do modelo depende do teu caso de uso e requisitos.
AuthZ casos de uso e exemplos
Software B2C
Software B2C muitas vezes requer funções específicas com base nas necessidades do negócio. Por exemplo, uma aplicação de gestão de livraria pode incluir funções com diferentes responsabilidades, como gerir recursos e serviços.
Aplicação B2B multi-inquilino
Aplicações B2B frequentemente usam uma arquitetura multi-inquilino, onde cada inquilino representa uma organização. Dentro da organização, funções como administrador e membro são necessárias. Aqui é onde a Autorização (AuthZ) desempenha um papel crucial na gestão de utilizadores ao nível organizacional, muitas vezes usando Controlo de Acesso Baseado em Funções (RBAC).
Autorização máquina-a-máquina
A comunicação máquina-a-máquina acontece diretamente entre serviços sem interação humana. Por exemplo, chamando serviços de API. Envolve frequentemente tokens (ex., tokens de acesso OAuth 2.0) para garantir acesso seguro, dinâmico e granulado.
Quais são as melhores práticas para AuthZ?
Aqui estão algumas melhores práticas para autorização (AuthZ) para garantir controlo de acesso seguro e eficaz:
-
Princípio do menor privilégio
Isso garante que o risco de acesso não autorizado ou danos de contas comprometidas seja minimizado. Utilizadores e sistemas devem apenas aceder aos recursos e ações necessárias para o seu papel.
-
Empregar autorização baseada em tokens
O controlo de acesso baseado em tokens oferece mais flexibilidade e controlo detalhado, enquanto adere a padrões abertos. Usa tokens seguros (ex., OAuth 2.0, JWTs) para conceder acesso a tempo e com alcance limitado.
-
Auditar e monitorizar regularmente
Rever regularmente registos de acesso e políticas de autorização é necessário para detetar anomalias ou permissões desatualizadas.
-
Aplicar separação de deveres
Começar por implementar permissões detalhadas, como definir ações e recursos específicos (ex., ler, escrever, apagar). Ao criar funções, usar nomes claros de função e aplicar a separação de deveres para minimizar o risco de fraudes ou erros por um único utilizador.
-
Suportar multi-alocação (se aplicável)
Para sistemas multi-inquilino, a isolamento do inquilino é importante. Ao combiná-lo com controlo de acesso baseado em funções, podes alcançar a separação de recursos de dados, garantindo que as funções apropriadas possam aceder a recursos apenas dentro do seu inquilino. Isso previne o acesso acidental ou mal-intencionado a recursos de outros inquilinos.
-
Revogar acesso dinamicamente
Ao projetar o teu sistema AuthZ, garante que as permissões possam ser atualizadas ou revogadas imediatamente se as condições mudarem (ex., atualizações de função, ou término de emprego). Isso pode ser alcançado através de verificações dinâmicas de API, webhooks, ou outros métodos. O objetivo é prevenir o acesso não autorizado em tempo real.
Quais são as diferenças entre AuthZ (Autorização) e Auth (Autenticação)?
A diferença entre autenticação e autorização reside no seu propósito e processo dentro da gestão de identidade e acesso.
AuthN (Autenticação) responde à pergunta, “Quem és tu e qual identidade possuis?” É o processo de verificar a identidade de um utilizador, serviço, ou dispositivo. Autenticação garante que a entidade que tenta aceder a um sistema ou recurso é genuína. Métodos comuns incluem senhas, biometria e autenticação de dois fatores (2FA). Por exemplo, quando inicias sessão numa conta usando email e senha, o sistema confirma a tua identidade através da autenticação.
AuthZ (Autorização) responde à pergunta, “O que és autorizado a fazer?” É o processo de conceder ou negar acesso aos recursos com base nas permissões ou funções do utilizador. A autorização ocorre após a autenticação e determina quais ações o utilizador autenticado pode realizar. Por exemplo, após iniciar sessão, um utilizador admin pode ter acesso para modificar configurações, enquanto um utilizador regular pode apenas visualizá-las.
Em resumo, AuthN (autenticação) confirma a identidade, enquanto AuthZ (autorização) define o acesso. A autenticação acontece primeiro, seguida pela autorização para garantir o uso seguro e apropriado dos recursos.
Construir AuthZ (Autorização) com Logto
O Logto Cloud oferece serviços de autorização chave com base em protocolos de padrão aberto como OIDC, OAuth 2.0, e SAML. As características incluem Controlo de Acesso Baseado em Funções, Organizações (Multi-Alocação), e Declarações de Tokens Personalizados para atender às tuas necessidades de autorização de várias perspetivas.