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.