Pular para o conteúdo principal

Segurança e arquitetura

Feito para o revisor corporativo de InfoSec.

Este é o complemento técnico de /safety. Diagramas de arquitetura, detalhes de autenticação, retenção de auditoria, postura de conformidade e o download do questionário de segurança. Se sua revisão exige um ID de controle que não cobrimos, pergunte security@showops.ai — respondemos em um dia útil.

Arquitetura

Isolamento entre tenants aplicado no servidor, nunca na UI.

Todo limite de tenant é aplicado na camada mais baixa possível. Row-Level Security em todas as tabelas. Escopo por organização em todos os caminhos de query. Sem filtros na camada de UI que possam ser burlados com um truque de URL.

Tenancy e isolamento de dados

Row-Level Security (RLS) em todas as tabelas de todos os schemas de tenants. As policies de RLS comparam organization_id com a claim do JWT do chamador via current_user_org_id(); nas rotas que rodam sob o papel restrito de banco de dados, leituras e escritas cross-tenant são bloqueadas pelo próprio banco, e toda query no servidor é adicionalmente filtrada por organization_id — verificado por um CI lint de escopo por organização em todos os schemas de tenants. O cliente browser com chave anônima retorna zero linhas de qualquer schema multi-tenant. Novas tabelas exigem RLS na mesma migration (guardrail de CI).

PROVA →RLS com JWT via current_user_org_id() · SELECT anônimo revogado · CI lint de escopo por organização

Limite de aprendizado por tenant (Shape B)

Várias proteções independentes. Wrapper de cliente com escopo no nível da aplicação (orgId é invariante do construtor). Grep de CI (check-learning-scope.ts) faz o build falhar se qualquer arquivo fora de lib/learning/ tocar o schema. RLS estrito no nível do DB com FORCE ROW LEVEL SECURITY e política via session-var. O código de aplicação chega ao SDK da Anthropic por um único ponto de passagem (lib/intelligence/llm/anthropic.ts, com lib/anthropic.ts como shim de retrocompatibilidade), e check-anthropic-choke.ts faz o build falhar em qualquer import fora de uma allowlist curta e comentada; check-no-training.ts garante que não há headers de fine-tuning. Sem treinamento agrupado. Sem queries cross-tenant. Nunca.

PROVA →lib/learning/client.ts · scripts/ci/check-learning-scope.ts · learning schema FORCE RLS

Hospedagem e criptografia

Todos os dados em repouso são criptografados pelo Supabase (AES-256). Todo o transporte é TLS 1.2+, com HSTS preload. CSP com nonce por requisição (sem scripts unsafe-inline). Campos financeiros sensíveis (custo de BOM, sourcing, lead time) e refresh tokens OAuth de integrações externas recebem uma camada adicional de criptografia AES-256-GCM em nível de aplicação em repouso. As chaves são gerenciadas por criptografia de envelope no GCP KMS com rotação a cada 90 dias; toda escrita nova passa pelo KMS e as linhas anteriores ao corte estão sendo reembrulhadas por um job de backfill. Nenhum dado de cliente na edge da Vercel além de páginas públicas de marketing em cache na CDN.

PROVA →Vercel (US primário) · Supabase (US East) · TLS 1.2+ em todos os pontos

Residência de dados

Todos os dados de clientes são processados e armazenados em uma única região dos EUA — Supabase e Vercel, ambos em us-east-2. Não oferecemos atualmente residência de dados na UE nem em outras regiões.

PROVA →Apenas EUA hoje · Supabase + Vercel us-east-2

Autenticação e controle de acesso

8 papéis, escopo por local, RBAC de agentes.

Toda decisão de acesso passa por três camadas: papel → módulo → escopo de local. Agentes adicionam uma quarta: papel → acesso do agente → escopo de local → filtro de dados.

PapelNível de acessoEscopo de local
account_ownerTotal · mais faturamento, SSO e ciclo de vida da organizaçãoToda a organização
adminTotal · todos os módulos · todos os locaisToda a organização
executive_producerTotal · todos os módulosToda a organização
producerTotal · todos os módulosToda a organização
technical_directorNível técnico · LLD + despachoToda a organização
venue_managerLeitura com escopo + check-inFiltrado por local
stakeholderLeitura resumida · marcos + alertasToda a organização (filtrado)
viewerSuporte somente leitura · sem dados de infraToda a organização (mínimo)

Gerenciamento de sessão

Cookies assinados com HMAC-SHA256, expiração de 12 horas, renovação por janela deslizante a 50% do ciclo de vida (6h). A chave de service role nunca sai do servidor. Convites de admin por magic link (TTL de 72h, uso único, hash em repouso) substituem totalmente o onboarding de admin baseado em senha.

SSO — Okta / SAML 2.0

O SAML 2.0 está implementado de ponta a ponta no servidor. Cada domínio de cliente é registrado no seu próprio provedor de identidade e um usuário SAML é provisionado no primeiro acesso a partir de um convite existente: o papel no ShowOps.AI vem dos claims de grupo do IdP e é reconferido a cada reautenticação, então uma mudança de grupo no IdP move o papel aqui. O acesso com Google Workspace e Microsoft Entra ID está conectado na tela de aceite do convite. O redirecionamento SAML por domínio a partir do formulário de login está construído, mas ainda não habilitado, então os tenants SAML entram conosco e não em autoatendimento. O provisionamento SCIM continua no roadmap, ainda não publicado. Cronograma compartilhado sob solicitação.

Auditoria e monitoramento

Antes, depois, quando, quem.

Toda mutação grava um registro de auditoria com snapshots antes/depois. Retenção de 24 meses. Exportação CSV sob solicitação. Sem postura de compliance do tipo "confie em mim" — o log é a prova.

Retenção

24 meses

Cada registro de auditoria é mantido por 24 meses com snapshots antes/depois. Exportação CSV disponível sob solicitação para extração da retenção.

Cobertura

100% das mutações

Toda escrita pela API gera um registro de auditoria. Jobs em background (sync, reconcile) também são auditados. Acesso de leitura registrado em nível de rota.

Execuções de agentes

Totalmente rastreáveis

Cada invocação de agente de IA é registrada em intelligence.agent_runs com inputs, outputs, versão do prompt, modelo e contagem de tokens. As execuções referenciam os dados que citaram.

Monitoramento

Sentry + BetterStack

Sentry para erros + performance (sampling por endpoint). BetterStack para uptime externo + paging. Security advisor do Supabase em execução contínua.

Postura de compliance

Alinhado ao SOC 2. Atestação no roadmap.

Arquitetura alinhada ao SOC 2 com gap analysis interna concluída. A maioria dos controles do Common Criteria está atendida hoje, com evidência rodando em produção; lacunas remanescentes ficam explicitamente registradas em nosso documento de trabalho interno. Atestação Type 1 no roadmap. Compartilhamos a gap analysis sob NDA mediante solicitação.

Publicados hoje: DPA, AUP, Privacidade, Cookies, Termos, Segurança (esta página), Safety. A postura de GDPR segue o DPA. CCPA tratado pela política de Privacidade.

Solicite um mapeamento controle a controle em security@showops.ai.

Resposta a incidentes

Como respondemos quando algo quebra.

Cronograma de divulgação publicado, política de postmortem publicada, um único SLA para todo reporter — interno, pesquisador ou revisor enterprise.

SLA de divulgação

1 dia útil

Todo reporte para security@showops.ai recebe resposta humana em um dia útil. Divulgação coordenada é bem-vinda — crédito atribuído com sua autorização.

Classificação de incidentes

P1–P4

P1 (exposição de dados / indisponibilidade > 15min) — paging imediato. P2 (serviço degradado) — na mesma hora. P3/P4 — triagem agendada. Tenants afetados notificados conforme termos do DPA.

Postmortems

Publicados

Incidentes P1 / P2 recebem um postmortem blameless compartilhado com tenants afetados em até 7 dias. Causa raiz, timeline, remediação, mudanças estruturais.

Contato de Segurança

Para o revisor que está aprofundando — peça o que precisar.

Mapeamentos de controles (CAIQ-lite, SIG-lite, SOC 2), diagramas de rede, contratos de sub-processadores, resumos de pen-test (quando disponíveis), termos do DPA. Compartilhamos o que temos e sinalizamos o que não temos. Se sua revisão identificar uma lacuna que ainda não tratamos, é exatamente o que queremos ouvir.

Segurança · ShowOps.AI