Skip to main content

Supabase Vault para Segredos de Tenants

Todos os segredos de tenants são armazenados no Supabase Vault, uma extensão do Postgres que criptografa segredos no nível do banco de dados. Os segredos são escopados por workspace e nunca armazenados em tabelas do schema público.

Tipos de Segredo

Cada workspace pode armazenar os seguintes tipos de segredo no Vault:

Padrão de Acesso ao Vault

Os segredos são lidos do Vault apenas no momento do uso, escopados ao workspace requisitante:
Os segredos do workspace A são estruturalmente inacessíveis ao workspace B — a função de leitura do vault é parametrizada pelo ID do workspace, que é sempre derivado da sessão autenticada.

Sem Fallback de Variável de Ambiente em Produção

Os fallbacks de variáveis de ambiente para segredos ficam restritos exclusivamente a ambientes não produtivos:
Isso garante que uma implantação de produção mal configurada falhará de forma explícita, em vez de recorrer silenciosamente a uma credencial compartilhada.
Em produção, se o Vault não retornar nenhum segredo para um workspace, a operação falha com um erro. Não existe credencial de fallback global que possa ser inadvertidamente usada por múltiplos tenants.

Armazenamento de Chaves de API

As chaves de API nunca são armazenadas em texto puro. O esquema de armazenamento:
  1. Geração: É gerado um token criptograficamente aleatório
  2. Hashing: O token é hasheado com SHA-256 antes do armazenamento no banco de dados
  3. Prefixo: Os primeiros 8 caracteres do token bruto são armazenados separadamente para identificação de exibição
  4. Exibição: O token bruto completo é exibido ao usuário exatamente uma vez, no momento da criação

Validação com Timing Seguro

A validação de chaves usa crypto.timingSafeEqual para evitar ataques de oráculo de temporização (timing oracle):

Cabeçalhos de Segurança

Todas as respostas HTTP da aplicação Switchbord incluem os seguintes cabeçalhos de segurança:

Política de Segurança de Conteúdo (Content Security Policy)

HTTP Strict Transport Security

A diretiva preload submete o domínio às listas de pré-carregamento HSTS dos navegadores, garantindo conexões somente HTTPS mesmo na primeira visita.

Cabeçalhos Adicionais

Política de CORS

O CORS é restrito a uma allowlist explícita de origens conhecidas:
As restrições de CORS impedem requisições cross-origin baseadas em navegador de domínios não autorizados. Elas não impedem chamadas diretas de API (por exemplo, via curl ou servidor a servidor). A autenticação de API é o principal controle de acesso.

Criptografia em Repouso

O Supabase fornece criptografia de disco transparente para todos os dados armazenados em suas instâncias PostgreSQL gerenciadas. Isso abrange as tabelas contacts, messages, workspace_members, audit_logs e todas as demais tabelas. Melhoria planejada (BORD-171): Criptografia em nível de coluna para campos de PII (números de telefone, nomes, corpos de mensagens) usando a extensão pgsodium do Supabase. Isso forneceria criptografia em nível de aplicação além da criptografia em nível de disco, protegendo contra cenários em que as credenciais do banco de dados sejam comprometidas.

TLS em Trânsito

Todas as conexões de e para os componentes da Switchbord são criptografadas usando TLS:
  • Vercel (web/API): TLS 1.2+ aplicado pela rede de edge da Vercel
  • Supabase: TLS obrigatório para todas as conexões de banco de dados e API
  • Railway (worker): TLS aplicado para todas as chamadas HTTP de saída
  • Meta Cloud API: Todas as chamadas da API do WhatsApp feitas via HTTPS
  • Providers de IA: Todas as chamadas de API para OpenAI, Anthropic, OpenRouter feitas via HTTPS

Proteção contra Redirecionamento Aberto

O endpoint de callback de autenticação valida o parâmetro de redirecionamento next para prevenir ataques de redirecionamento aberto (open redirect):

Validação de Entrada

Todos os corpos das principais requisições de API são validados com schemas Zod antes do processamento:
As respostas de erro são higienizadas — erros brutos do Supabase ou do banco de dados nunca são retornados aos clientes.

Mapeamento de Conformidade

Para o mapeamento completo de controles de conformidade, veja a Matriz de Conformidade.