Controle de acesso baseado em papel (Role-based access control)
Controle de acesso baseado em papel (RBAC) é um método de atribuição de permissões aos usuários com base em seus papéis. Considere usar RBAC nos seguintes cenários:
- Você tem vários usuários com diferentes necessidades de acesso: O RBAC é ideal quando os usuários precisam de permissões variadas com base em papéis, como administrador, editor ou visualizador.
- Você precisa simplificar o gerenciamento de permissões: É eficiente para gerenciar grandes grupos de usuários atribuindo papéis em vez de definir permissões individualmente.
- Seu aplicativo atende diferentes departamentos ou equipes: É útil em cenários onde diferentes grupos exigem níveis distintos de acesso aos recursos.
Entenda como funciona o controle de acesso baseado em papel (Role-based access control)
Permissões (Escopos) (Permissions(Scopes))
Permissão refere-se à autorização para acessar um recurso de API (API resource). No mundo real, entidades como pedidos, produtos e documentos podem ser designadas como recursos, e várias ações podem ser atribuídas.
Exemplos de permissões, incluindo a capacidade de editar um pedido, ler um documento e excluir um produto, são os seguintes:
write:orders
read:documents
delete:products

A figura acima mostra que a permissão read:item
no recurso https://api-1.store.io
é diferente da permissão read:item
no recurso https://api-2.store.io
.
Se nenhum recurso de API for fornecido, a permissão será tratada como "para OIDC". Normalmente, isso não é o que você deseja em RBAC.
Saiba como configurar permissões de API no Logto.
Papéis (Roles)
Papéis são um agrupamento de permissões que podem ser atribuídos aos usuários. Eles também fornecem uma maneira de agregar permissões definidas para diferentes APIs, tornando a adição, remoção ou ajuste de permissões mais eficiente do que atribuí-las individualmente aos usuários.
Aqui está um exemplo de um papel order_admin
com várias permissões para dois recursos:

Não há problema em haver sobreposição de permissões entre papéis.
Saiba como configurar papéis no Logto.
Exemplo: Uma livraria online
Vamos supor que você tenha uma livraria online para gerenciar. Aqui, simplificamos bastante o modelo de controle de acesso para fins de demonstração.
O modelo é dividido em dois principais recursos de API: pedidos e produtos. Eles possuem diferentes indicadores de recurso conforme abaixo:
- Pedidos:
https://api.store.io/orders
- Produtos:
https://api.store.io/products
Para cada recurso, você gostaria de separar as permissões em leitura, escrita e exclusão. Assim, você define seis permissões no total:
https://api.store.io/orders
- Permissão
read:order
- Permissão
write:order
- Permissão
delete:order
- Permissão
https://api.store.io/products
- Permissão
read:product
- Permissão
write:product
- Permissão
delete:product
- Permissão
Aqui está a ilustração desse modelo:

Você deseja ter dois tipos de administrador, administrador de pedidos e administrador de produtos:
- Administrador de pedidos pode gerenciar pedidos e ver produtos (já que pedidos consistem em produtos), mas não pode gerenciar produtos.
- Administrador de produtos pode gerenciar produtos, e não deve ter conhecimento de nenhum pedido.
Então você cria dois papéis, order_admin
e product_admin
, com as permissões:
order_admin
https://api.store.io/orders
read:order
,write:order
,delete:order
https://api.store.io/products
read:product
product_admin
https://api.store.io/products
read:product
,write:product
,delete:product
Aqui está a ilustração desses dois papéis:

Não há problema em atribuir tanto order_admin
quanto product_admin
a um usuário, assim ele terá todas as seis permissões que você acabou de definir.
Observe que o administrador de pedidos compartilha a permissão read:product
com o administrador de produtos, e as permissões finais que um usuário possui são a união de todas as permissões dos papéis aos quais ele foi atribuído.
Recursos relacionados
RBAC na prática: Um guia passo a passo para implementar autorização segura em seu aplicativo
Dominando o RBAC no Logto: Um exemplo abrangente do mundo real
CIAM 102: Autorização & Controle de acesso baseado em papel (RBAC)