Criptografia em repouso em mariadb

Criptografia em repouso em mariadb
A criptografia de restaurante impede um invasor de acessar dados criptografados armazenados no disco, mesmo que ele tenha acesso ao sistema. Os bancos de dados de código aberto MYSQL e MARIADB agora oferecem suporte ao recurso de criptografia de restaurante que atende às demandas da nova legislação de proteção de dados da UE. A criptografia MySQL em repouso é ligeiramente diferente de MariaDB, pois o MySQL fornece apenas criptografia para tabelas Innodb. Enquanto MariaDB também oferece uma opção para criptografar arquivos como registros refazer, logs lentos, logs de auditoria, logs de erros, etc. No entanto, ambos não podem criptografar dados em uma RAM e protegê -los de uma raiz maliciosa.

Neste artigo, aprenderemos a configurar a criptografia no nível do banco de dados para o MARIADB.

Começando

Os dados na criptografia REST requer um plug -in de criptografia junto com o gerenciamento de chaves. O plug -in de criptografia é responsável por gerenciar a chave de criptografia, bem como criptografar/descriptografar os dados.

O MARIADB fornece três soluções de gerenciamento de chave de criptografia; portanto, como você gerencia os bancos de dados Gerenciar a chave de criptografia depende da solução que você está usando. Este tutorial demonstrará criptografia no nível do banco de dados usando a solução de gerenciamento de chaves de arquivo mariadb. No entanto, este plugin não fornece um recurso de rotação -chave.

Se você estiver usando um servidor de lâmpadas, os arquivos para adicionar este plug -in estão localizados no “/Opt/lâmpada” diretório. Caso contrário, as alterações são feitas no “/Etc/mysql/conf.D ” pasta.

Criando chaves de criptografia

Antes de criptografar o banco de dados usando o plugin de gerenciamento de chaves de arquivo, precisamos criar os arquivos que contêm chaves de criptografia. Vamos criar um arquivo com duas informações. Essa é uma chave de criptografia em um formato codificado por hexadecimal junto com um identificador de 32 bits.

Vamos criar uma nova pasta "chaves" no “/Etc/mysql/” diretório e use o utilitário OpenSSL para gerar aleatoriamente 3 cordas hexadecimais e redirecionar a saída para um novo arquivo no chaves pasta. Digite os seguintes comandos:

ubuntu@ubuntu: ~ sudo mkdir/etc/mysql/keys
ubuntu@ubuntu: ~ $ echo -n "1;" $ openssl rand hex 32>/etc/mysql/keys/enc_keys "
ubuntu@ubuntu: ~ $ echo -n "2;" $ openssl rand hex 32>/etc/mysql/keys/enc_keys "
ubuntu@ubuntu: ~ $ echo -n "3;" $ openssl rand hex 32>/etc/mysql/keys/enc_keys "

Onde 1,2,3 são os principais identificadores; Nós os incluímos para criar uma referência às chaves de criptografia usando variável innodb_default_encryption_key_id em mariadb. O arquivo de saída será assim:

1; 01495BA35E1C9602E14E40BD6DE41BB8
2; 3CFFA4A5D288E90108394DBF639664F8
3; 9953297ed1a58e837486318840f5f1d

Criptografia de arquivo -chave

Podemos facilmente definir a variável do sistema File_Key_Management_Filename com o caminho apropriado dentro do plugin de gerenciamento de chaves do arquivo. Mas não é seguro deixar as chaves em texto simples. Podemos reduzir o risco em certa medida atribuindo permissões de arquivo, mas isso não é suficiente.

Agora, criptografaremos as teclas criadas anteriormente usando uma senha gerada aleatoriamente. Por outro lado, o tamanho da chave pode variar de 128/192/256 bits.

ubuntu@ubuntu: ~ $ openssl rand -hex 192>/etc/mysql/keys/enc_paswd.chave

Portanto, usaremos o OpenSSL ENC comando no terminal para criptografar o Enc_Key.TXT arquivo para Enc_Key.ENC, Usando a chave de criptografia criada acima. Além disso, o mariadb suporta apenas o modo CBC do AES para criptografar suas chaves de criptografia.

ubuntu@ubuntu: ~ $ openSSL ENC -AES -256 -CBC -MD SHA1 -Pass File:/etc/mysql/keys/Enc_paswd.chave -in/etc/mysql/keys/Enc_key.txt -out/etc/mysql/keys/Enc_key.ENC && sudo rm/etc/mysql/keys/Enc_key.TXT

Nós também excluímos nosso Enc_Keys.TXT arquivo como não é mais necessário. Além disso, sempre podemos descriptografar nossos dados em mariadb, desde que nosso arquivo de senha esteja seguro.

Configurando o plugin de gerenciamento de chave de arquivo

Agora configuraremos o MARIADB com o plugin de gerenciamento de chaves de arquivo, adicionando as seguintes variáveis ​​no arquivo de configuração. Os arquivos de configuração geralmente estão localizados em '/etc/mysql' e leia todos os .arquivos CNF por padrão. Ou você pode criar um novo arquivo de configuração “Mariadb_Enc.CNF ” sob '/etc/mysql/conf.d/ diretório.

Agora seu arquivo de configuração pode parecer totalmente diferente disso. No entanto, adicione essas variáveis ​​de criptografia em [SQLD]. Se a chave for criptografada, o plug -in requer duas variáveis ​​do sistema para configurar, eu.e., File_Key_Management_Filename e File_Key_Management_FileKey.

[SQLD]
#File plugin de gerenciamento de chaves
plugin_load_add = file_key_management
file_key_management = em file_key_management_encryption_algorithm = aes_cbc file_key_management_filename =/etc/mysql/keys/Enc_keys.ENC
file_key_management_filekey =/etc/mysql/keys/Enc_paswd.chave
# Configuração de criptografia innodb/xtradb
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = on
innodb_encrypt_log = on
innodb_encryption_threads = 4
# Configuração de criptografia ARIA
ARIA_ENCRYPT_TABLES = ON
# Criptografia de temperatura e log
Encrypt-tmp-disk-tables = 1
Encrypt-tmp-Files = 1
ENCRYPT_BINLOG = ON

Você pode encontrar detalhes para cada variável do sistema do site oficial do Mariadb.

Protegendo o arquivo de senha

Mudaremos nossas permissões de diretório MySQL para proteger a senha e outros arquivos sensíveis. A propriedade do mariadb será alterada para o usuário atual, que no Ubuntu é mysql.

sudo chown -r mysql: root/etc/mysql/keys
sudo chmod 500/etc/mysql/keys/

Agora vamos alterar a senha e as permissões de arquivo criptografadas para

sudo chown mysql: root/etc/mysql/keys/enc_paswd.chave/etc/mysql/keys/Enc_key.ENC
sudo chmod 600/etc/mysql/keys/enc_paswd.chave/etc/mysql/keys/Enc_key.ENC

Agora reinicie o serviço de banco de dados.

SUDO Service MySQL Reiniciar

Conclusão

Este artigo aprendeu como a criptografia no nível do banco de dados é a necessidade da hora e como podemos configurar a criptografia no restaurante em mariadb. A única desvantagem do plugin de gerenciamento de chaves de arquivo é que ele não suporta a rotação das chaves. No entanto, além deste plugin, muitas outras soluções de criptografia de gerenciamento -chave, eu.e., Plug -in de gerenciamento de chaves da AWS e plug -in de gerenciamento de chaves EPERI. Você pode encontrar mais detalhes sobre esses plugins do site oficial de MariaDB.