🧩 Implementação de LGPD (Proteção de Dados) no Vanguru
📌 Contexto
O aplicativo Vanguru lida com dados pessoais e dados sensíveis, incluindo:
- Dados de crianças (data de nascimento, fotos)
- Dados pessoais dos pais/responsáveis (CPF, endereço)
- Informações financeiras (integração com ASAAS)
- Imagens de passageiros e condutores
Por exigência da LGPD, esses dados devem:
- Ser coletados apenas quando necessários
- Ter consentimento explícito
- Ser armazenados de forma segura (criptografia)
- Ter possibilidade futura de exclusão e portabilidade
🎯 Objetivo
Garantir a conformidade com a LGPD, focando em:
- Criptografia de dados sensíveis com baixo custo
- Separação clara entre dados públicos e sensíveis
- Preparação para integrações (ASAAS, imagens, relatórios)
- Eficiência no uso do Firebase / GCP Free Tier
✅ Critérios de Aceite (Definition of Done)
- [ ] Dados sensíveis não ficam em texto puro no Firestore
- [ ] Existe separação entre dados comuns e dados sensíveis
- [ ] Criptografia aplicada antes de persistir no Firestore / Storage
- [ ] Chaves de criptografia não ficam no app (client-side)
- [ ] Estrutura preparada para dados financeiros e imagens
- [ ] Custos otimizados dentro do free tier
- [ ] Documentação da abordagem técnica
🔐 Classificação de Dados
🔴 Dados Sensíveis (Segregação via Cloud Functions)
- CPF (Dado segregado em subcoleção protegida e criptografado)
- Dados Bancários / Financeiros
🟡 Dados Pessoais (Protegidos por Security Rules)
- Nome completo
- Telefone
- Endereço completo
- Data de nascimento da criança
- Fotos (com proteção do Firebase Storage)
🟢 Dados Não Sensíveis
- IDs internos
- Flags de sistema
- Preferências de UI
🧠 Estratégia Técnica
🔑 1. Proteção Híbrida
- Dados Altamente Sensíveis (CPF): Criptografia no backend (Cloud Functions) + Secret Manager.
- Demais Dados Pessoais: Armazenamento direto no Firestore, garantindo a privacidade através de Security Rules estritas que impedem acesso não autorizado.
Por que esta abordagem? Para reduzir a complexidade e latência, mantendo a conformidade legal através do controle de acesso robusto do Firebase.
📄 Exemplo de Estrutura no Firestore
users/{userId} {
name: "João",
email: "joao@email.com",
sensitiveRef: "users_sensitive/{userId}"
}
users_sensitive/{userId} {
cpf_encrypted: "base64...",
address_encrypted: "base64...",
birthdate_child_encrypted: "base64...",
createdAt: timestamp
}
🧠 Cloud Function — Camada de Segurança
Responsabilidades: * Criptografar antes de salvar * Descriptografar apenas quando necessário * Validar permissões de acesso * Centralizar lógica LGPD
Fluxo de Dados Sensíveis:
Flutter → Cloud Function → Firestore (dados criptografados)
🖼️ Criptografia de Imagens (Firebase Storage)
- Upload direto no Firebase Storage
- Utiliza a criptografia automática do GCP (default)
- Regras de acesso estritas baseadas em UID / Role
- Evita complexidade extra de criptografia manual para imagens neste momento
🧾 Consentimento (Obrigatório LGPD)
O sistema registra: * Aceite de termos e política de privacidade * Data, hora e versão do termo aceito
consents/{userId} {
lgpdAccepted: true,
version: "v1.0",
acceptedAt: timestamp
}
🚧 Fora de Escopo (neste momento)
- Portal de exportação de dados do usuário
- Exclusão automática por solicitação (será manual via admin)
- DPO / Encarregado formal
- Auditoria externa