Demos para clientes
Provisione em minutos um tenant de demo já populado. Destruição automática em 24 horas. Nenhum lixo fica para trás.
As demos da WASViking® não são apresentações de slides. O Partner Console provisiona um tenant totalmente populado com dados sintéticos ancorados na data de hoje, carregados em todas as superfícies do produto sobre as quais um prospect vai perguntar. As demos são destruídas definitivamente 24 horas depois da apresentação agendada.
O que uma demo contém
| Superfície | População |
|---|---|
| Alvos | 5 |
| Ativos | 17 |
| Achados | ~118, distribuídos nas 15 categorias, com mistura de severidades e de SLA |
| Exploit paths | 74, gerados pelo mecanismo real de materialização |
| Scans | 30, com dados ricos de CVE por porta |
| Certificados SSL | 5 ativos, 4 expirando, 3 válidos, 1 expirado |
| Resumos de inteligência de ameaças de borda | 16 a 18 |
| Submissões de SBOM | 3 |
| Registros de inteligência de exposição | 4 |
| Achado de destaque | MySQL 3306 exposto, CVEs públicas |
Os dados são sintéticos, mas realistas. Nomes, IPs, caminhos e referências de CVE parecem os de um ambiente real. As datas partem de hoje e recuam, de modo que o dashboard nunca pareça defasado.
Ciclo de vida
scheduled ──▶ active ──▶ destroyed
│ ▲
└─ at presentation_at │
└─ at presentation_at + 24h
| Estado | Significado |
|---|---|
scheduled |
Provisionada, aguardando o horário da apresentação. |
active |
No ar agora. O parceiro pode entregar as credenciais de login ao prospect. |
destroyed |
Excluída definitivamente (hard delete). O snapshot de auditoria permanece na trilha de auditoria do parceiro. |
A task horária do Celery partners.expire_demos executa as transições de
estado.
Cotas
| Cota | Padrão |
|---|---|
| Demos ativas por parceiro | 3 |
| Tempo de vida da demo | 24 horas a partir de presentation_at |
| Demos por parceiro por mês | Depende do plano |
Quando a cota é atingida, a ação New demo exibe uma mensagem "destroy one first" (destrua uma antes).
Roteamento de login
Os logins de demo usam um e-mail sintético em @demo.wasviking.com (MX
nulo, nunca entregue). Os códigos de MFA e os alertas de novo dispositivo
são roteados para o e-mail real do operador do parceiro, não para a caixa
sintética, por meio da salvaguarda demo_email.resolve_auth_recipient.
Se o roteamento não conseguir resolver (dados do parceiro corrompidos), o e-mail de MFA é suprimido e registrado como um alerta ao operador. A plataforma se recusa a deixar o MFA de uma demo vazar por acidente para um endereço com aparência real.
Como criar uma demo
- Demos → New demo.
- Preencha o formulário: nome do prospect, horário da apresentação
(
datetime-local, sem fuso horário, tz-naive; o formulário grava um campo oculto ISO-8601 com fuso horário, tz-aware). - Marque a declaração de uso da demo (demonstração sintética de 24 horas, sem dados reais do prospect, sem scans reais contra alvos do prospect).
- Envie o formulário.
As etapas de provisionamento rodam dentro de uma única transação do Django:
- Flag de organização interna definida (
is_internal=True, ignora a licença). - Usuário de login criado com uma senha temporária.
- Seed do MySQL do portal: 17 ativos, 118 achados, 30 scans etc.
- O materializador do Exploit Path Graph roda na organização da demo.
- Depois do commit, o seed do Mongo no lado da API roda pelo endpoint
protegido
POST /api/v1/sensor/demo/seed/, populando SSL, Edge e scan-detail.
As credenciais chegam ao e-mail real do operador do parceiro.
Como destruir uma demo
destroy_demo executa:
- Primeiro, a limpeza no lado da API (exclui do Mongo os documentos
{organization_id, demo: true}). - Snapshot dos Targets e ScanResults adicionados pelo parceiro em
PartnerAuditLog, para que a rastreabilidade sobreviva ao hard delete. - Exclusão em cascata da Organization da demo (remove o MySQL do portal).
- O evento de auditoria
demo.destroyedcarrega o snapshot.
Nenhum lixo fica para trás, nem no MySQL nem no Mongo.
Runbook do operador
reseed_demo <slug>executa de novo o seed de uma demo existente (portal + API). Recusa organizações que não sejamis_internal.- A página Demos mostra o estado atual, o horário da apresentação e a trilha de auditoria.
- Um provisionamento com falha deixa um estado limpo (a transação faz rollback).
Atividade ao vivo em uma demo
As organizações de demo permitem que o prospect adicione alvos reais e dispare scans reais durante a apresentação ao vivo. O consentimento é exigido na criação do Target (a política normal da plataforma), não por uma declaração separada do parceiro; duplicá-lo foi tentado e removido.
A atividade da sessão ao vivo é registrada em snapshot no evento de destruição, para que o parceiro possa revisar o que foi feito depois que a demo termina.
Miniatura de captura de tela da demo
Os Targets de demo recebem como thumbnail_url um data URI com uma
captura de tela simulada em SVG inline, não uma URL pré-assinada do S3
quebrada. Isso é restrito a organizações com is_internal=True. Contas de
clientes reais não são afetadas.
Os Targets de demo ficam agrupados em um único grupo Demo, de modo que a lista de Targets mostra "Demo" na coluna Group.
