Referência Técnica

Sistema de Permissões

O Sentinel combina RBAC (controle por roles) com ABAC (controle por atributos contextuais). Uma requisição é permitida quando qualquer um dos dois modelos retorna allow.

RBAC + ABAC: dois modelos complementares

RBAC

Role-Based Access Control

Controle baseado em quem você é: roles atribuídos ao usuário ou grupo definem quais ações ele pode executar. Simples de gerenciar, ideal para permissões permanentes.

user:joao → role:editor → permission:resources:update

ABAC

Attribute-Based Access Control

Controle baseado em contexto: políticas com condições avaliadas em tempo de execução (hora, departamento, IP). Ideal para restrições temporais ou por localização.

time.hour >= 9 AND time.hour < 17 → allow

Decisão combinada

O PermissionsService avalia RBAC e ABAC independentemente. O acesso é concedido se qualquer um dos dois retornar allow. O resultado inclui a fonte (RBAC, ABAC, BOTH ou NONE).

RBAC — Roles e permissões

Admin Console → Identidades → Permissões → Roles.

Fluxo de configuração RBAC

1

Criar permissões

Defina as permissões granulares do sistema (ex: resources:create, documents:read). Representam ações específicas sobre recursos.

2

Criar role

Agrupe permissões relacionadas em um role (ex: "editor" agrupa resources:create, resources:read, resources:update).

3

Atribuir role

Atribua o role a um usuário diretamente ou a um grupo. Membros do grupo herdam o role automaticamente.

4

Verificação de acesso

Em cada request, o sentinel-core consulta o Keto com a tripla (user, action, resource). O Keto resolve a cadeia de tuplas e retorna allow ou deny.

Campos de um role

Nome (slug)obrigatório

Identificador único no tenant. Imutável após criação.

Nome de exibiçãoobrigatório

Rótulo legível na interface.

Descriçãoopcional

Explica o propósito do role.

Permissõesopcional

Lista de permissões granulares que este role concede. Pode ser editada após criação.

Exemplos de roles

viewer
resources:readdocuments:read
editor
resources:createresources:readresources:update
manager
resources:*users:readreports:read
admin
*:*tenant:manage

Hierarquia de atribuição

Roles podem ser atribuídos em três níveis diferentes.

Simples

Direto (usuário ↔ role)

Role atribuído diretamente ao usuário. Independente de grupos. Bom para casos excepcionais ou usuários únicos.

tenant:acme#admin@user:uuid-joao
Recomendado

Via grupo (usuário → grupo → role)

Usuário herda o role por pertencer a um grupo. Escala bem — um role no grupo serve todos os membros.

group:dev#admin@role:editor group:dev#member@user:uuid-maria
Enterprise

Global (admin-global)

Usuários com role admin-global têm acesso a múltiplos tenants para gerenciamento centralizado da plataforma.

platform:sentinel#super-admin@user:uuid-ops

ABAC — Políticas por atributo

Condições avaliadas em tempo de execução para controle contextual de acesso.

Estrutura de uma política ABAC

Uma política define um efeito (allow ou deny) e uma lista de condições. Todas as condições devem ser verdadeiras para o efeito ser aplicado (lógica AND).

horário-comercialallow

time.hour >= 9 AND time.hour < 17

acesso-por-dptoallow

user.department in ["engineering","devops"]

apenas-brasilallow

user.location equals "BR"

Atributos disponíveis

Tempo

time.hour (0–23)time.day_of_week (0=Dom, 6=Sáb)time.day_of_month (1–31)time.month (1–12)

Usuário

user.departmentuser.locationuser.tenant_slug

Request

request.ipdevice.type

Operadores suportados

equals / not_equalsIgualdade exata
in / not_inValor dentro de uma lista
greater_than / less_thanComparação numérica (ideal para hora, mês)
contains / not_containsString contém substring
starts_with / ends_withPrefixo ou sufixo de string
matches_regexExpressão regular

API de verificação de acesso

Use o endpoint do sentinel-core para verificar permissões em suas aplicações.

Verificar acesso efetivo

POST /api/policies/access/check

{

"userId": "user@empresa.com",

"permission": "documents:read",

"resource": "document:12345",

"tenantSlug": "acme-corp",

"context": {

"user.department": "engineering"

}

}

Resposta

{

"allowed": true,

"source": "RBAC",

"reason": "role:editor grants documents:read"

}

RBACAcesso via role
ABACAcesso via política de atributo
BOTHAmbos permitiram
NONEAcesso negado

Playground de permissões

Teste em tempo real

O Admin Console inclui um Permissions Playground (em Identidades → Permissões) onde você pode testar verificações de acesso em tempo real: informe um usuário, uma permissão e um recurso para ver se o acesso seria concedido — e qual a fonte da decisão (RBAC, ABAC ou BOTH).

O playground consulta o Keto e o PermissionsService em tempo real, mas não modifica nenhum dado — é seguro para testes em produção.

Próximas leituras