As medidas citadas abaixo refletem o estado real em produção hoje — não uma promessa genérica de
compliance.
Criptografia
Em trânsito — TLS 1.3 (GA)
Em trânsito — TLS 1.3 (GA)
Toda comunicação entre app/cliente e a API — hoje servida diretamente pelo
Supabase (PostgREST, Auth, Edge Functions) — é criptografada com TLS,
terminado na borda da infraestrutura do provedor. É nativo do Supabase, não uma configuração
que a Googa precisa manter manualmente: não há endpoint HTTP sem TLS em nenhum produto.
Em repouso — AES-256 (GA)
Em repouso — AES-256 (GA)
O Postgres de cada projeto Supabase roda sobre disco criptografado por padrão pelo provedor de
nuvem subjacente (criptografia de volume, AES-256) — isso vale para todos os três projetos
(Novel, HistorinhAI, e o projeto Platform — já existente no código, com deploy em produção
pendente). A Googa não precisa (e hoje não configura)
nada adicional para que o dado em disco esteja cifrado.
Gestão de chaves — KMS do provedor subjacente (GA, com uma ressalva honesta)
Gestão de chaves — KMS do provedor subjacente (GA, com uma ressalva honesta)
As chaves de criptografia em repouso são geridas pelo KMS do provedor de nuvem que sustenta o
Supabase — não por um KMS operado diretamente pela Googa. Isso é adequado para o nível de risco
atual, mas vale registrar com transparência: a Googa hoje não possui uma chave própria
(CMK/BYOK) sobre esse material, então a rotação e as políticas de chave seguem o padrão do
provedor, não uma política definida pela Googa. Uma central de secrets própria por aplicação
(para credenciais de parceiro, chaves de LLM, etc. — separado do KMS de disco) ainda não existe
hoje — ver Modelo de autenticação para o desenho do
Partner Gateway.
Isolamento & controle de acesso
Row Level Security como controle primário (GA)
Row Level Security como controle primário (GA)
RLS do Postgres é a linha de defesa principal em produção hoje, em todos os projetos: cada
política filtra por
auth.uid() (leitor) ou por family_id/partner_id resolvido
server-side — nunca por um valor que o próprio cliente envia na requisição. Esse controle
passa por auditoria ativa, não só por um desenho único no início do projeto:- Em
historinhai, a policy de insert dereading_sessionsexige consistência entrefamily_idechild_id— um usuário autenticado só consegue gravar uma sessão apontando para umchild_idque pertence à mesma família informada, o que evita poluição de dado entre famílias. - Em
novelai/novelaudio, toda funçãosecurity definer(incluindoremove_reading_progress) roda comsearch_path = ''e qualifica tudo explicitamente porpublic.— o padrão adotado em todo o projeto como defesa em profundidade contra search_path hijacking em funções que rodam com privilégio elevado.
Isolamento entre produtos por projeto Supabase (GA)
Isolamento entre produtos por projeto Supabase (GA)
NovelAI e NovelAudio compartilham um projeto Supabase; HistorinhAI roda em um projeto
inteiramente separado — decisão deliberada dado o tratamento de dados de crianças (ver
Proteção de dados de menores). Não existe hoje nenhuma consulta
cross-projeto no nível de banco: qualquer travessia entre produtos passa por uma Edge Function
que valida a chamada de novo.
CORS por allowlist nas Edge Functions (GA)
CORS por allowlist nas Edge Functions (GA)
As Edge Functions de TTS, e-mail e geração de URL assinada de áudio respondem com uma
allowlist explícita de origem, não com
Access-Control-Allow-Origin: *. A autenticação real é
por header Authorization (JWT), não por cookie — então CORS aberto não permitiria forjar
sessão de outra origem — mas a allowlist é mantida como defesa em profundidade: evita que
qualquer site arbitrário chame esses endpoints pagos (TTS, e-mail, signed URL de áudio) em nome
de um usuário já autenticado em outra aba.Geração de código com CSPRNG (GA)
Geração de código com CSPRNG (GA)
A função
generate_short_code — usada para código de convite de família e de indicação/promo —
usa gen_random_bytes() (extensão pgcrypto), um CSPRNG de verdade, e não random() do
Postgres, que não é criptograficamente seguro. Relevante porque um código previsível de convite
de família permitiria a um atacante entrar em uma família de terceiros sem ser convidado.RBAC/ABAC granular por parceiro (implementado no código; deploy pendente)
RBAC/ABAC granular por parceiro (implementado no código; deploy pendente)
Escopos diferenciados por parceiro e por rota estão implementados no Partner Gateway: cada
endpoint exige um escopo específico (
entitlements:write, subscriber:read, billing:read),
verificado contra os escopos gravados na credencial do parceiro — um token sem o escopo da
rota recebe 403. Ver Modelo de
autenticação.
O que ainda não existe é isso rodando em produção — o deploy do Partner Gateway está
pendente; até lá, o único controle de acesso em produção é o do usuário final do produto.Defesa & resposta
Rate-limit e borda de hospedagem (GA parcial)
Rate-limit e borda de hospedagem (GA parcial)
O site institucional (
googa.com.br) já publica cabeçalhos de segurança na borda
(X-Content-Type-Options: nosniff, X-Frame-Options: DENY,
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload,
Content-Security-Policy restritiva, Referrer-Policy: strict-origin-when-cross-origin) via
public/_headers do provedor de hospedagem. Isso é real e está em produção — mas é a borda do
site estático, não da API. A API em si (PostgREST/Edge Functions do Supabase) hoje só tem o
rate-limit interno do próprio Supabase para proteção da plataforma, não um rate-limit
configurável por parceiro/rota.WAF, SIEM e pentest periódico
WAF, SIEM e pentest periódico
A Googa não opera hoje um WAF dedicado, um SIEM, ou um programa de pentest periódico
contratado — além do que a própria infraestrutura de hospedagem/Supabase já aplica para
proteção geral da plataforma. O desenho para fechar essa lacuna é um proxy de borda
(Cloudflare, à frente do Custom Domain do Supabase — ver Modelo de
autenticação) fazendo WAF gerenciado e rate-limit por token
de API antes de chegar ao backend, mais um ciclo de pentest externo contratado antes do go-live
com qualquer parceiro enterprise.
Detecção de anomalias & plano de resposta a incidentes
Detecção de anomalias & plano de resposta a incidentes
Hoje a operação é pequena o suficiente para não ter um SOC 24×7 nem alertas de anomalia
automatizados de segurança. O processo de resposta a incidentes descrito em Resposta a
incidentes é o desenho que operacionaliza o compromisso de SLA
(P1 em 15 minutos) — não uma prática já rodando com essa maturidade.
Alinhamento a padrões
A Googa segue os controles da ISO 27001 como referência de boas práticas de gestão de segurança da informação — isso significa alinhamento aos controles, não uma certificação ISO 27001 obtida por auditoria de terceira parte. Não há certificação a apresentar hoje — onde um processo de licitação exigir evidência de certificação formal, isso não é algo que a Googa possa reivindicar como já obtido.Resposta a incidentes
Severidade, tempos de resposta e o fluxo de comunicação — incluindo quando um incidente aciona
notificação à ANPD.
LGPD
Base legal, direitos do titular, retenção, DPO, RIPD e transferência internacional — artigo por
artigo.