O que é uma boa maneira de criptografar um banco de dados mysql, e vale a pena?

17

Eu sei que posso criptografar determinados campos de um banco de dados, mas estou interessado em criptografar todos os campos do banco de dados. Eu quero ter certeza de que ninguém que obtenha acesso a um shell mysql, mas que não tenha acesso a uma chave de decodificação, não possa ler nada do banco de dados.

Também quero ter certeza de que, se alguém tiver acesso root à máquina, mas não tiver uma chave de descriptografia, ela não conseguirá ler os dados.

Como devo fazer isso? Faz sentido fazer? Estou preocupado se alguém tem acesso ao banco de dados mysql que inevitavelmente terá acesso à chave, então isso não faz sentido. Estou esquecendo de algo?

    
por Snitse 13.09.2013 / 16:43

3 respostas

10

A criptografia mínima de AES e DES no nível de campo está disponível: link

Ninguém pode ler dados sem especificar a chave para cada consulta (ou sem adicioná-la aos acionadores / procedimentos).

exemplo:

INSERIR:

INSERT INTO users (username, password) VALUES ('root', AES_ENCRYPT('somepassword', 'key12346123'));

e SELECIONAR:

SELECT AES_DECRYPT(password, 'key12346123') FROM users WHERE username = 'root';

Além disso, essa exige conexão SSL ao banco de dados.

E no nível inferior - você também pode criptografar o sistema de arquivos.

    
por 13.09.2013 / 17:29
7

MariaDB recentemente adicionou criptografia em nível de tabela para tabelas InnoDB e XtraDB. link

O MySQL também suporta criptografia em nível de tabela para o InnoDB. link

    
por 07.10.2015 / 04:27
2

Primeiro: você armazena sua chave com o aplicativo e manipula toda a criptografia na camada de aplicativo.

Em seguida: você garante que a instância do MySQL e o aplicativo [servidor] estejam em máquinas separadas, de modo que um comprometimento de raiz no servidor MySQL não permita que o invasor leia a chave da fonte do aplicativo.

Essa abordagem parece excessiva. Lidar com dados sensíveis corretamente (senhas, cartões de crédito, etc), mas criptografar tudo é um exagero. (E provavelmente contraproducente no mundo das chaves primárias)

    
por 13.09.2013 / 17:29