Spec 027 — Matriz de Acesso por Função (Time Ligbox)
Criado: 2026-06-19
Solicitado por: Roger
Status: Draft → Fase 2 implementada (Desk RBAC)
Prioridade: P0 (governança operacional)
Sistemas: VM112 (Onboard/Mail) · VM122 (Ops Desk) · VM123 (Finance/Hosting)
Depende de: Spec 003 (RBAC base), 004 (cadastro), 015 (módulos), 023/024 (billing), 018 (serviços)
Estende: Spec 003 — não substitui login/MFA/webhooks; adiciona funções e ambientes
Resumo
Esta spec define a matriz de acesso ao nível de função para todo o time Ligbox — ops, suporte, financeiro, marketing, SEO, desenvolvimento e funções complementares — com permissões explícitas nos três ambientes operacionais:
| VM |
IP |
Papel |
| VM112 |
10.10.10.112 |
Wizard onboarding, Carbonio mail tenants, API portal |
| VM122 |
10.10.10.122 |
Ligbox Ops Desk (control plane humano) |
| VM123 |
10.10.10.123 |
FOSSBilling, Odoo 16, OpenPanel (financeiro + sites) |
Regra de ouro: humanos entram sempre pelo Desk (VM122) ou consolas web dedicadas com conta @ligbox.com.br. SSH direto às VMs é excepção para super_admin e devops — demais funções usam APIs, deep-links e SSO futuro.
Legenda global
| Símbolo |
Significado |
| ✅ |
Acesso total (CRUD / executar) |
| 🔒 |
Só leitura (dados podem ser mascarados) |
| 🔗 |
Deep-link / abrir consola externa (nova aba) — sem credencial partilhada |
| ⚙️ |
Só via API Desk (sem SSH) |
| 🤖 |
Conta de sistema / agente autónomo |
| ❌ |
Sem acesso |
1. Catálogo de funções
1.1 Funções ops — já existentes (Spec 003)
| ID função |
Label Desk |
Descrição |
super_admin |
Super Admin |
Roger / dono — users, tenants, purge, config global |
ops_lead |
Chefe Ops |
Gestão operacional, audit, tickets, domínios VM112 |
technician |
Suporte |
Tickets atribuídos, assist/takeover wizard, migração |
noc |
NOC |
Monitorização read-only, Wazuh, health — dados sensíveis mascarados |
1.2 Funções comercial e negócio (novas)
| ID função |
Label Desk |
Descrição |
sales_admin |
Sales Admin (Gerente Comercial) |
Gestão pipeline, preços, equipa comercial, pedidos FOSS, aprovações |
sales_support |
Sales Support (Analista Comercial) |
Atendimento comercial, pedidos, clientes, CRM — sem config admin |
finance |
Financeiro |
FOSSBilling, Odoo fiscal, validação billing, faturas, inadimplência |
marketing |
Marketing |
Campanhas, landing, produtos FOSS, leads CRM |
seo |
SEO |
DNS público, Search Console, performance web, sites OpenPanel |
developer |
Developer |
Código wizard/Desk, GitHub, deploy, integrações API |
Substitui o role genérico sales — usar sempre sales_admin ou sales_support.
1.3 Funções plataforma (recomendadas)
| ID função |
Label Desk |
Porquê |
devops |
DevOps / Infra |
Proxmox, Traefik CT114, pfSense, OpenPanel admin — não confundir com developer |
security_analyst |
Segurança / SOC |
Incidentes, Wazuh rules, resposta — além do noc (só leitura) |
content_editor |
Conteúdo / CMS |
Sites clientes no OpenPanel — cruza marketing mas foco operacional |
agentic_operator |
Operador Agentes IA |
Aprova runbooks e acções dos agentes A0–A7 antes de remediação |
1.4 Funções sistema (não humanas)
| ID função |
Tipo |
Descrição |
api_service |
M2M |
Webhooks VM112→122, workers, cron interno |
agent_system |
IA |
Super-utilizador dos 7 agentes (ver secção 6) |
1.5 Funções cliente (fora do time — referência)
| ID função |
Onde |
Nota |
client_domain_admin |
Wizard /admin VM112 |
Gerente do domínio — não é função Desk |
client_readonly |
Futuro portal cliente |
Spec futura |
2. Matriz — Ambiente VM112 (Onboard + Mail)
Componentes: onboard.ligbox.com.br · ligbox.com.br · Carbonio · ligbox-wizard API :8090 · SSH · Carbonio Admin
| Função |
Desk assist / wizard |
API VM112 |
Carbonio admin |
SSH VM112 |
Purge domínio |
super_admin |
✅ takeover |
✅ |
✅ |
✅ |
✅ |
ops_lead |
✅ takeover |
✅ |
🔗 |
🔗 |
✅ |
technician |
✅ takeover* |
⚙️ assist |
🔗 |
❌ |
❌ |
noc |
🔒 observar |
🔒 |
❌ |
❌ |
❌ |
finance |
🔒 ver sessão |
🔒 billing fields |
❌ |
❌ |
❌ |
marketing |
🔒 funil/leads |
🔒 |
❌ |
❌ |
❌ |
seo |
🔒 domínio/DNS |
🔒 dns verify |
❌ |
❌ |
❌ |
developer |
⚙️ dev/staging |
✅ API dev key |
❌ |
🔗 |
❌ |
sales_admin |
🔒 leads + billing |
🔒 |
❌ |
❌ |
❌ |
sales_support |
🔒 leads |
🔒 |
❌ |
❌ |
❌ |
devops |
🔒 infra status |
✅ infra endpoints |
🔗 |
✅ |
⚙️ com root |
security_analyst |
🔒 telemetria |
🔒 |
❌ |
🔗 |
❌ |
content_editor |
❌ |
❌ |
❌ |
❌ |
❌ |
agentic_operator |
🔒 + aprovar |
⚙️ |
❌ |
❌ |
❌ |
api_service |
🤖 webhooks |
🤖 |
❌ |
❌ |
❌ |
* technician: takeover apenas tickets/sessões atribuídas (Spec 010).
URLs VM112
| Recurso |
URL |
| Wizard |
https://onboard.ligbox.com.br |
| API |
http://10.10.10.112:8090 (LAN) / Traefik interno |
| Webmail admin tenant |
https://mail.{dominio}/ |
| Painel domínio |
https://onboard.ligbox.com.br/admin |
3. Matriz — Ambiente VM122 (Ops Desk)
Componentes: desk.ligbox.com.br · api.ops.ligbox.com.br · módulos Spec 015
3.1 Módulos Desk × função
| Módulo (ID) |
super_admin |
ops_lead |
technician |
noc |
finance |
sales_admin |
sales_support |
marketing |
seo |
developer |
devops |
security_analyst |
content_editor |
agentic_operator |
core (dashboard/tickets) |
✅ |
✅ |
✅ |
🔒 |
🔒 |
✅ |
✅ |
🔒 |
🔒 |
🔒 |
🔒 |
🔒 |
🔒 |
🔒 |
overview |
✅ |
✅ |
🔒 |
🔒 |
🔒 |
✅ |
🔒 |
🔒 |
🔒 |
🔒 |
🔒 |
🔒 |
❌ |
🔒 |
overview-home (Serviços) |
✅ |
✅ |
✅ |
🔒 |
🔒 |
✅ |
✅ |
🔒 |
🔒 |
🔒 |
✅ |
🔒 |
🔒 |
🔒 |
infra / infra2-soc |
✅ |
✅ |
🔒 |
🔒 |
❌ |
❌ |
❌ |
❌ |
🔒 |
🔒 |
✅ |
✅ |
❌ |
🔒 |
funnel-timing |
✅ |
✅ |
✅ |
🔒 |
🔒 |
✅ |
✅ |
✅ |
✅ |
🔒 |
❌ |
❌ |
❌ |
🔒 |
wazuh-soc |
✅ |
✅ |
🔒 |
🔒 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
🔒 |
✅ |
❌ |
🔒 |
leads (abandono CRM) |
✅ |
✅ |
✅ |
❌ |
🔒 |
✅ |
✅ |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
events (webhooks) |
✅ |
✅ |
🔒 |
🔒 wazuh |
🔒 billing |
🔒 |
🔒 |
🔒 |
🔒 |
⚙️ |
⚙️ |
🔒 |
❌ |
⚙️ |
tenants |
✅ |
✅ |
✅ |
🔒 |
🔒 |
✅ |
🔒 |
🔒 |
🔒 |
🔒 |
🔒 |
🔒 |
❌ |
🔒 |
messages (cadastro) |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
admin-users |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
billing-recurrence (023) |
✅ |
✅ |
🔒 |
❌ |
✅ |
✅ |
🔒 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
migration (013) |
✅ |
✅ |
✅ |
🔒 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
🔒 |
❌ |
❌ |
❌ |
assist (010) |
✅ |
✅ |
✅ |
🔒 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
modules (toggle) |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
3.2 Acções API críticas × função (extensão Spec 003)
| Acção |
super_admin |
ops_lead |
technician |
noc |
finance |
sales_admin |
sales_support |
marketing |
seo |
developer |
devops |
security_analyst |
agentic_operator |
| Fechar ticket |
✅ |
✅ |
✅* |
❌ |
❌ |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
| Assist takeover wizard |
✅ |
✅ |
✅* |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
| Disparar audit manual |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
| Purge domínio VM112 |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
⚙️ |
❌ |
❌ |
Validar billing (billing_state) |
✅ |
✅ |
❌ |
❌ |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
| Criar pedido FOSS (VM123) |
✅ |
✅ |
❌ |
❌ |
🔒 |
✅ |
✅ |
❌ |
❌ |
⚙️ |
❌ |
❌ |
❌ |
| Ver CNPJ / morada completa |
✅ |
✅ |
✅ |
❌ masc. |
✅ |
✅ |
🔒 |
🔒 |
❌ |
❌ |
❌ |
🔒 |
❌ |
| Gestão utilizadores Desk |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
| PATCH módulos Desk |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
| Deploy API/frontend |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
✅ |
❌ |
❌ |
❌ |
| Aprovar runbook agente |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
✅ |
4. Matriz — Ambiente VM123 (Finance + Hosting)
Componentes: FOSSBilling · Odoo 16 · OpenPanel · SSH :2523
| Função |
FOSSBilling Admin |
FOSSBilling Cliente |
Odoo 16 |
OpenPanel |
OpenAdmin |
SSH VM123 |
super_admin |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
ops_lead |
🔗 |
🔒 |
🔗 |
🔗 |
🔗 |
🔗 |
technician |
❌ |
❌ |
❌ |
🔗 site cliente |
❌ |
❌ |
noc |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
finance |
✅ |
✅ |
✅ |
🔒 |
🔒 |
🔗 |
sales_admin |
✅ pedidos+clientes+staff RO |
✅ |
✅ Sales Manager |
🔗 |
🔗 Admin |
❌ |
sales_support |
✅ pedidos+clientes |
✅ |
✅ Salesman |
🔗 autologin |
❌ |
❌ |
marketing |
🔒 produtos |
✅ campanhas |
❌ |
✅ sites |
🔗 |
❌ |
seo |
❌ |
❌ |
❌ |
✅ SEO/hosting |
🔗 |
❌ |
developer |
⚙️ API |
❌ |
⚙️ API |
⚙️ bridge |
❌ |
🔗 |
devops |
❌ |
❌ |
❌ |
✅ |
✅ |
✅ |
security_analyst |
🔒 logs |
❌ |
❌ |
🔒 |
🔒 |
🔗 |
content_editor |
❌ |
❌ |
❌ |
✅ |
❌ |
❌ |
agentic_operator |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
api_service |
🤖 webhook |
❌ |
🤖 |
🤖 provision |
❌ |
❌ |
4.1 Integração APIs VM123 — perfis de produto
Documento completo: contracts/vm123-product-roles.md
| Produto |
API |
Auth |
Mapeamento função Desk |
| FOSSBilling |
POST /api/admin/{module}/{action} |
Basic admin:API_KEY |
Staff groups: ligbox-sales-admin, ligbox-sales-support, ligbox-finance-admin |
| Odoo 16 |
XML-RPC /odoo/xmlrpc/2/object |
login + API key |
group_sale_manager → sales_admin; group_sale_salesman → sales_support |
| OpenPanel |
Bridge :18087 (Community) ou :2087/api (Enterprise) |
Bearer JWT / bridge token |
sales_support = autologin cliente; devops = OpenAdmin |
Diferença Sales Admin vs Sales Support
| Capacidade |
sales_admin (Gerente) |
sales_support (Analista) |
| Desk — validar billing |
✅ |
❌ |
| Desk — leads / funil |
✅ |
✅ |
| FOSS — criar/editar clientes |
✅ |
✅ |
| FOSS — criar pedidos / hosting |
✅ |
✅ |
| FOSS — faturas / preços / produtos |
✅ |
🔒 |
| FOSS — staff / settings |
❌ |
❌ |
| Odoo — CRM manager |
✅ |
❌ |
| Odoo — CRM user |
✅ |
✅ |
| OpenPanel — OpenAdmin |
🔗 |
❌ (só autologin) |
| Fechar tickets comerciais |
✅ |
✅ |
Provisionamento automático (Fase 3): ao aprovar cadastro Desk com função sales_*, API VM122 cria staff FOSS + user Odoo via api_service — ver fluxo no contrato.
URLs VM123
| Serviço |
URL pública |
| FOSSBilling Admin |
https://financeiro.ligbox.com.br/admin |
| FOSSBilling Cliente |
https://financeiro.ligbox.com.br/login |
| Odoo 16 |
https://financeiro.ligbox.com.br/odoo/web/login?db=ligbox |
| OpenPanel |
https://openpanel.ligbox.com.br |
| OpenAdmin |
https://openpanel.ligbox.com.br:2087 |
Integração Desk → VM123 (fase 2–3): ficha «Conta do cliente» (Spec 023) abre deep-link FOSS/Odoo; finance, sales_admin e sales_support com botões API no drawer.
5. Matriz — Consolas externas (deep-link a partir do Desk)
| Consola |
super_admin |
ops_lead |
technician |
noc |
finance |
sales_admin |
sales_support |
marketing |
seo |
developer |
devops |
security_analyst |
| Cloudflare DNS |
✅ |
✅ |
🔗 |
❌ |
❌ |
🔒 |
🔒 |
🔒 |
✅ |
❌ |
✅ |
❌ |
| Traefik CT114 |
✅ |
🔗 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
🔗 |
✅ |
❌ |
| Proxmox host |
✅ |
🔗 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
❌ |
| pfSense API |
✅ |
🔗 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
🔗 |
| Wazuh VM104 |
✅ |
✅ |
🔒 |
🔒 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
🔒 |
✅ |
GitHub itecnologys/* |
✅ |
🔒 |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
❌ |
❌ |
| Google Search Console |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
🔗 |
✅ |
❌ |
❌ |
❌ |
| FOSSBilling Admin |
✅ |
🔗 |
❌ |
❌ |
✅ |
✅ |
🔒 |
🔒 |
❌ |
❌ |
❌ |
❌ |
| Odoo ligbox |
✅ |
🔗 |
❌ |
❌ |
✅ |
✅ |
🔒 |
❌ |
❌ |
❌ |
❌ |
❌ |
6. Agentes IA (Agentics) — responsabilidades e governança
Os 7 agentes (VISÃO_PLATAFORMA A0–A7) não são utilizadores humanos. Operam com role agent_system e token dedicado.
| Agente |
ID |
Responsabilidade |
Dados que lê |
Acções que executa |
Aprovação humana |
| Orchestrator |
A0 |
Roteamento e síntese multi-agente |
Todos os feeds |
Delegar tarefas |
agentic_operator / ops_lead |
| Node Health |
A1 |
CPU, RAM, serviços Carbonio |
VM112 metrics |
Alertas, tickets |
Auto para info; ops_lead para restart |
| Infra Mail |
A2 |
DNS, LE, Traefik, nginx |
DNS, certs, SNI |
Sugerir/fix DNS |
devops ou ops_lead antes de aplicar |
| Deliverability |
A3 |
SPF/DKIM/DMARC |
DNS mail |
Relatórios |
seo / technician revisão |
| Security Mail |
A4 |
amavis, spam, clamav |
Filas, logs mail |
Quarentena sugerida |
security_analyst |
| Wazuh SOC |
A5 |
Correlação SIEM |
VM104 Wazuh |
Alertas Desk |
security_analyst / noc |
| Support Copilot |
A6 |
Assistência tickets |
Tickets, timeline |
Rascunho resposta |
technician envia |
| Remediation |
A7 |
Runbooks |
Playbooks aprovados |
Executar após OK |
agentic_operator obrigatório |
Quem gere agentes no Desk
| Função |
Ver sugestões agente |
Aprovar runbook A7 |
Configurar prompts/modelos |
super_admin |
✅ |
✅ |
✅ |
ops_lead |
✅ |
✅ |
🔒 |
agentic_operator |
✅ |
✅ |
❌ |
security_analyst |
✅ A4/A5 |
✅ scope segurança |
❌ |
developer |
⚙️ |
❌ |
✅ |
| Demais |
❌ ou 🔒 resumo |
❌ |
❌ |
7. Cadastro e atribuição de função (fluxo)
Estende Spec 004:
- Candidato regista-se em
desk.ligbox.com.br/register.html com @ligbox.com.br
super_admin aprova em Mensagens e escolhe função (lista secção 1 — incl. sales_admin / sales_support)
- Ativação 2-de-3 (e-mail, telefone, TOTP)
- Desk aplica módulos e permissões conforme matriz desta spec
- Contas FOSS/Odoo/OpenPanel (VM123) criadas via provisionamento Fase 3 (
api_service) ou manualmente — nunca partilhar password root VM
Mapeamento função → módulos default (activação)
| Função |
Módulos ON por defeito |
sales_admin |
core, leads, funnel-timing, overview-home, billing-recurrence, tenants |
sales_support |
core, leads, funnel-timing, overview-home, tenants |
finance |
core, overview-home, billing-recurrence, events (billing) |
marketing |
core, leads, funnel-timing, overview-home |
seo |
core, funnel-timing, overview-home, leads |
developer |
core, events, infra (read), overview |
devops |
core, infra, infra2-soc, overview-home, events |
security_analyst |
core, infra2-soc, wazuh-soc, events |
content_editor |
core + acesso OpenPanel (fora Desk) |
agentic_operator |
core, overview, events, infra2-soc |
Mapeamento função → VM123 (provisionamento)
| Função |
FOSS group |
Odoo |
OpenPanel |
sales_admin |
ligbox-sales-admin |
Sales Manager |
OpenAdmin Admin |
sales_support |
ligbox-sales-support |
Salesman |
autologin apenas |
finance |
ligbox-finance-admin |
Account Manager |
read-only |
Ver contracts/vm123-product-roles.md.
8. Implementação técnica (fases)
Fase 1 — Documentação + enum (esta spec) ✅
- Publicar matriz; alinhar Roger
- Actualizar
permissions.py com constantes ALL_FUNCTIONS
Fase 2 — RBAC Desk (VM122) ✅
- Expandir
ROLES em api/app/permissions.py
ROLE_MODULES map em registry.py (Spec 015)
- UI: labels pt-BR no cadastro (Spec 004)
- Testes:
verify-rbac-matrix.sh por função
Fase 3 — Deep-links + APIs VM123 ✅ (MVP)
- Drawer «Conta do cliente» → FOSS/Odoo via
/api/v1/vm123/links/client
- Endpoints
/api/v1/vm123/* (contrato vm123-product-roles.md)
- Provisionamento staff FOSS + user Odoo ao activar cadastro (
provision_desk_user)
- Pré-requisito Odoo: instalar apps
sale + account na VM123 para grupos standard existirem
Fase 4 — Agentes
- Service account
agent_system + fila aprovação agentic_operator
- Auditoria de cada acção A7
9. Requisitos funcionais
- FR-027-001: Sistema MUST suportar no mínimo 13 funções humanas (secção 1) incluindo
sales_admin e sales_support.
- FR-027-002: Cada função MUST ter módulos Desk activos por defeito conforme secção 7.
- FR-027-003: Nenhuma função excepto
super_admin e devops MUST ter SSH root às VMs por defeito.
- FR-027-004: Função
noc MUST continuar a mascarar CNPJ, morada e e-mails billing (Spec 003).
- FR-027-005: Função
finance MUST poder transicionar billing_state (Spec 023).
- FR-027-006: Agentes A0–A7 MUST NOT autenticar como humanos; usam
agent_system.
- FR-027-007: Acções A7 (remediação) MUST exigir aprovação
agentic_operator ou ops_lead.
- FR-027-008: Cadastro MUST restringir e-mail a
@ligbox.com.br para funções internas.
- FR-027-009:
sales_admin MUST poder validar billing_state e criar pedidos FOSS; sales_support MUST NOT validar billing nem aceder OpenAdmin.
- FR-027-010: Provisionamento VM123 MUST usar APIs em
contracts/vm123-product-roles.md — sem credenciais root partilhadas.
10. Fora de âmbito (esta spec)
- SSO Google/Azure
- Permissões por tenant isolado (multi-empresa Ligbox)
- Cliente final (
client_domain_admin) — permanece no wizard VM112
- Criação automática de contas Linux nas VMs (usar contas app)
11. Documentos relacionados
| Spec |
Relação |
| 003 |
RBAC base (4 roles) — pai |
| 004 |
Cadastro e atribuição de perfil |
| 015 |
Registry módulos Desk |
| 010 |
Assist / takeover |
| 013 |
Migração e-mail |
| 018 |
Serviços / clientes |
| 023 |
Billing Desk |
| 024 |
VM123 finance stack + APIs produto |
| 021 |
Telemetria / segurança wizard |
12. Critérios de aceite
Roger — validar secção 4.1 (APIs VM123) e limites Sales Admin vs Support antes da Fase 2.