Pular para o conteúdo principal

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:

ComandoUso
cv-admin tenants list/info/statsListar/inspecionar tenants
cv-admin license verify/refreshDiagnosticar licença
cv-admin db migrate-statusVer status de migrations
cv-admin db backup-triggerTrigger backup manual
cv-admin reconcile dynamicForçar reconcile orphans Dynamic Secrets
cv-admin metrics dumpDump métricas em JSON
cv-admin cache clearInvalidar caches L1
cv-admin helpListar 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:

ComandoPermissão necessária
tenants list/info/statsver_tenants
license *alterar_configuracoes
db migrate-statusalterar_configuracoes
db backup-triggeralterar_configuracoes + dual-control
reconcile dynamicgerenciar_integracoes
metrics dumpver_auditoria
cache clearalterar_configuracoes
helpqualquer 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 dynamic pode 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-trigger fora 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