MYSQL · SEGURANÇA · LGPD

    Melhores Práticas de Segurança MySQL para LGPD.

    HTI Tecnologia · Equipe TécnicaAtualizado em junho de 202613 min de leitura

    LGPD não cita MySQL. Mas qualquer banco que armazene dado pessoal — e MySQL armazena, em praticamente todo SaaS, e-commerce e fintech do Brasil — está dentro do escopo da lei. Em incidente, a ANPD não pergunta qual SGBD você usa: pergunta quais controles técnicos e administrativos estavam ativos quando o dado vazou.

    Este artigo traduz os princípios da LGPD em controles concretos de MySQL — o que ligar, como configurar e o que registrar para que, em auditoria ou incidente, exista evidência defensável. Faz parte do mesmo cluster da nossa consultoria MySQL.

    AUDITORIA DE SEGURANÇA MYSQL

    Seu MySQL está conforme a LGPD?

    Auditoria de segurança MySQL com relatório de achados classificados por severidade.

    Solicitar Auditoria →

    01

    LGPD APLICADA AO MYSQL: O QUE IMPORTA

    Quatro artigos da LGPD têm reflexo técnico direto no MySQL:

    • Art. 6º (princípios): finalidade, necessidade, segurança, prevenção. Traduz em mínimo privilégio e auditoria.
    • Art. 18 (direitos do titular): acesso, retificação, anonimização, eliminação. Traduz em rotinas operacionais e logs de execução.
    • Art. 46 (segurança): medidas técnicas e administrativas. Traduz em criptografia, controle de acesso, audit.
    • Art. 48 (incidente): comunicação à ANPD e ao titular. Traduz em capacidade de saber o que vazou, quando e por quem.

    02

    ACESSO, PRIVILÉGIOS E O PRINCÍPIO DO MENOR PRIVILÉGIO

    O primeiro pecado de produção: aplicação conectando como root. Segundo: usuários com GRANT ALL ON *.*. Em auditoria LGPD, ambos são achados imediatos.

    Roles (MySQL 8.x)

    Use roles para encapsular conjuntos de privilégios — não conceda grant diretamente a usuários. Roles permitem revogar acesso em escala, documentar perfis e auditar mudanças.

    -- Padrão: role por perfil, usuário herda role
    CREATE ROLE 'app_read', 'app_write', 'app_admin';
    GRANT SELECT ON loja.* TO 'app_read';
    GRANT SELECT, INSERT, UPDATE ON loja.* TO 'app_write';
    GRANT 'app_write' TO 'app_pedidos'@'10.0.%';
    SET DEFAULT ROLE ALL TO 'app_pedidos'@'10.0.%';

    Restrinja host de conexão: usuário 'app'@'%' é convite a credencial vazada virar acesso de qualquer IP. Use sub-rede da VPC ou IP fixo do load balancer.

    03

    CRIPTOGRAFIA EM TRÂNSITO E EM REPOUSO

    TLS em todas as conexões

    require_secure_transport = ON obriga TLS em todo client. Combine com REQUIRE SSL ou REQUIRE X509 por usuário para validação adicional. Em RDS/Aurora, a CA é fornecida pela AWS — rotacione antes do vencimento ou conexões caem em massa.

    Encryption at rest (InnoDB tablespace encryption)

    MySQL 8 suporta encryption at rest via keyring. keyring_file serve para POC, mas para produção use keyring_okv (Oracle Key Vault), keyring_aws (KMS) ou solução compatível com KMIP. Tabela é criptografada com ENCRYPTION='Y', redo log via innodb_redo_log_encrypt=ON, undo via innodb_undo_log_encrypt=ON, binlog via binlog_encryption=ON.

    "Criptografia sem gestão de chaves é teatro. KMS centralizado, rotacionado, com audit log próprio."

    04

    AUDIT LOG: TRILHA DE EVIDÊNCIA

    SHOW BINARY LOGS não é audit log. Binlog é replicação e PITR — não retém o suficiente nem registra acessos de leitura. Para LGPD você precisa de audit plugin de verdade.

    Opções: MySQL Enterprise Audit (oficial, pago), Percona Audit Log Plugin (open source, robusto), McAfee MySQL Audit Plugin (open source, em desuso). Configure para capturar: connections, failed logins, statements em tabelas sensíveis, mudanças em privilégios.

    Audit log precisa ser imutável: append-only, com hash periódico, armazenado fora do host MySQL (idealmente SIEM ou S3 com Object Lock). Audit log no mesmo disco da base é a primeira coisa que atacante apaga.

    05

    MASCARAMENTO DE DADOS PESSOAIS

    Ambiente de homologação ou desenvolvimento com dump cru de produção é violação direta de LGPD — mesmo "só para corrigir bug". Mascaramento é obrigatório.

    MySQL Enterprise traz Data Masking nativo (mysql.data_masking functions). Em Community, combine views com funções de hash/embaralhamento + Percona pt-archiver para extração + scripts de masking. Mantenha integridade referencial: hash determinístico (SHA-256 com salt) preserva joins entre tabelas mascaradas.

    06

    BACKUP E RETENÇÃO: O LADO ESQUECIDO DA LGPD

    Direito à eliminação (Art. 18) inclui backup. Se o titular pede exclusão e o dado fica em backup mensal pelos próximos 7 anos, a empresa segue em desconformidade. A regra prática: retenção curta para PITR (binlog 7 dias), retenção média para operacional (30 dias), retenção legal documentada e expurgo automatizado.

    Backups devem ser criptografados (mysqlbackup --encrypt ou Percona XtraBackup com encryption), armazenados em storage com controle de acesso separado do banco, e ter restore testado periodicamente. Backup que ninguém testa é arquivo, não backup.

    07

    RESPOSTA A INCIDENTE: O QUE O MYSQL PRECISA ENTREGAR

    Em incidente, a ANPD pede resposta em até 2 dias úteis. O MySQL precisa entregar, em horas, não dias: quem acessou, quando, quais dados, como entrou. Sem audit log preparado, essas perguntas ficam sem resposta — e isso por si só agrava a sanção.

    Tenha um runbook documentado: como isolar o nó comprometido, como rotacionar credenciais, como extrair audit log e binlog para análise forense, como comunicar internamente. Ensaiar isso uma vez por ano é mínimo defensável.

    08

    CHECKLIST DE CONFORMIDADE

    • Nenhuma aplicação conecta como root.
    • Privilégios via roles, com host restrito.
    • require_secure_transport = ON.
    • Encryption at rest com keyring KMS/Vault (não keyring_file).
    • Audit log plugin ativo, externalizado, com integridade verificada.
    • Senhas em vault (HashiCorp Vault, AWS Secrets Manager), nunca em código.
    • Mascaramento obrigatório em homologação/dev.
    • Backup criptografado com retenção documentada e restore testado.
    • Rotina de exclusão LGPD documentada e logada.
    • Runbook de resposta a incidente ensaiado anualmente.
    • Cobertura por DBA Remoto 24/7 ou time interno responsável.

    AUDITORIA DE SEGURANÇA MYSQL

    Seu MySQL está conforme a LGPD?

    Auditoria de segurança MySQL com relatório de achados classificados por severidade.

    Solicitar Auditoria →

    09

    PERGUNTAS FREQUENTES SOBRE SEGURANÇA MYSQL E LGPD

    MySQL Community Edition atende LGPD?

    Atende, com ressalvas. Criptografia em trânsito (TLS), criptografia em repouso via keyring_file, controle de privilégios e roles vêm no Community. Audit log nativo, data masking e firewall MySQL, porém, são exclusivos do Enterprise — ou exigem soluções de terceiros (Percona Audit Plugin, ProxySQL com masking).

    Criptografia em repouso é obrigatória pela LGPD?

    A LGPD exige 'medidas técnicas aptas a proteger dados pessoais' — não nomeia tecnologias. Mas, em caso de incidente, ANPD e auditoria pedem evidência de controles. Encryption at rest (InnoDB tablespace encryption) é o padrão defensável; ausência dela em base com dados sensíveis é difícil de justificar.

    Por quanto tempo o audit log deve ser retido?

    Não há prazo legal único — depende da finalidade. Para investigação de incidente e atendimento a requisições do titular (acesso, retificação, exclusão), 12–24 meses é o padrão de mercado. Logs precisam ser íntegros: armazenamento append-only ou WORM, com hash, separado do banco auditado.

    Como anonimizar dados em ambientes de homologação?

    Combinar MySQL Data Masking (Enterprise) ou scripts de mascaramento + Percona Toolkit pt-archiver. Padrões: hash de CPF/email mantendo formato, embaralhamento de nomes via dicionário, substituição de datas por janelas, manutenção da integridade referencial. Nunca usar produção em homologação sem mascaramento — risco LGPD e ANPD direto.

    MySQL atende ao direito à exclusão (Art. 18 LGPD)?

    Tecnicamente sim, mas exige projeto. DELETE físico em InnoDB libera espaço no tablespace mas pode deixar resíduos em backup, binlog, replicas e arquivos temporários. Conformidade real exige: rotina documentada, propagação para replicas, retenção controlada de binlog, expurgo de backups além da retenção, e log de execução da exclusão.