Web Console — admin terminal
A partir da v4.5, o CipherVault tem um console admin via WebSocket
acessível na UI. Equivalente ao cv CLI mas executado no servidor com
auditoria + RBAC.
Acesso
Settings → Console (visível apenas para users com permissão
alterar_configuracoes).
Backend endpoints:
WS /console/ws WebSocket bidirecional
POST /console/exec REST one-shot (útil para automação)
Comandos whitelisted
Apenas 8 comandos permitidos, sem shell spawn:
| Comando | Uso |
|---|---|
cv-admin tenants list/info/stats | Listar/inspecionar tenants |
cv-admin license verify/refresh | Diagnosticar licença |
cv-admin db migrate-status | Ver status de migrations |
cv-admin db backup-trigger | Trigger backup manual |
cv-admin reconcile dynamic | Forçar reconcile orphans Dynamic Secrets |
cv-admin metrics dump | Dump métricas em JSON |
cv-admin cache clear | Invalidar caches L1 |
cv-admin help | Listar comandos disponíveis |
Não há sh, bash, exec arbitrário. Tentativa de injeção
retorna 403 + audit log console_command_blocked severity=critical.
REST one-shot
curl -X POST https://cv.acme.com.br/console/exec \
-H "Authorization: Bearer $CV_TOKEN" \
-d '{ "command": "cv-admin tenants stats" }'
# Resposta:
# {
# "stdout": "...",
# "stderr": "",
# "exit_code": 0,
# "duration_ms": 142
# }
WebSocket interativo (UI)
UI usa terminal emulator (xterm.js) com:
- Histórico de comandos por sessão
- Tab-completion básico
- Output streaming (não waitfull)
- Ctrl+C cancela comando em andamento
- Timeout 30s por comando
RBAC
Permissões por comando:
| Comando | Permissão necessária |
|---|---|
tenants list/info/stats | ver_tenants |
license * | alterar_configuracoes |
db migrate-status | alterar_configuracoes |
db backup-trigger | alterar_configuracoes + dual-control |
reconcile dynamic | gerenciar_integracoes |
metrics dump | ver_auditoria |
cache clear | alterar_configuracoes |
help | qualquer user logado |
Auditoria
Cada comando gera evento console_command_executed:
{
"action": "console_command_executed",
"user_email": "admin@acme.com.br",
"details": "command: cv-admin tenants stats | duration: 142ms | exit: 0",
"severity": "medium",
"source_ip": "203.0.113.42",
"session_id": "ws_..."
}
Comandos db backup-trigger → severity=high.
Limitações
- 8 comandos apenas — não pretende substituir SSH ao host
- Sem editor (vim/nano) — não há shell para editar arquivos
- Timeout 30s — comandos longos são killed (
cv-admin reconcile dynamicpode usar--background) - Sem
sudo— privilege escalation impossível - Sem upload/download de arquivo — apenas comandos textuais
- WebSocket TTL 1h — após 1h sem atividade, reconectar
Boas práticas
- Não use como terminal regular — é para diagnóstico/manutenção pontual
- Combine com MFA — re-MFA antes do console abrir (configurável em Settings)
- Alerta em
db backup-triggerfora de janela de manutenção - Logs do WebSocket em SIEM — pareie com
web_console_*actions - Sessão por admin, não compartilhar —
session_idúnico por aba do browser