Cifrado en reposo en Mariadb

Cifrado en reposo en Mariadb
El cifrado en el momento evita que un atacante acceda a los datos encriptados almacenados en el disco incluso si tiene acceso al sistema. Las bases de datos de código abierto MySQL y MariadB ahora admiten la característica de cifrado en el momento que satisface las demandas de la nueva legislación de protección de datos de la UE. El cifrado de MySQL en reposo es ligeramente diferente de MariadB, ya que MySQL solo proporciona cifrado para las tablas innoDB. Mientras que MariadB también proporciona una opción para cifrar archivos como registros de rehacer, registros lentos, registros de auditoría, registros de errores, etc. Sin embargo, ambos no pueden cifrar datos en una RAM y protegerlo de una raíz maliciosa.

En este artículo, aprenderemos a configurar el cifrado a nivel de base de datos para mariadb.

Empezando

Los datos en el cifrado REST requieren un complemento de cifrado junto con la administración de claves. El complemento de cifrado es responsable de administrar la clave de cifrado, así como en cifrar/descifrar los datos.

MariadB proporciona tres soluciones de administración de clave de cifrado, por lo que la forma en que las bases de datos administran la clave de cifrado depende de la solución que esté utilizando. Este tutorial demostrará el cifrado a nivel de base de datos utilizando la solución de administración de claves de archivos mariadb. Sin embargo, este complemento no proporciona una función de rotación clave.

Si está utilizando un servidor de lámparas, los archivos para agregar este complemento se encuentran en el "/Opt/lamp" directorio. Si no, entonces los cambios se realizan en el "/Etc/mysql/conf.d" carpeta.

Creación de claves de cifrado

Antes de cifrar la base de datos utilizando el complemento de administración de teclas de archivo, necesitamos crear los archivos que contienen claves de cifrado. Crearemos un archivo con dos piezas de información. Esa es una clave de cifrado en un formato codificado hexagonal junto con un identificador clave de 32 bits.

Crearemos una nueva carpeta "llaves" en el "/Etc/mysql/" directorio y use la utilidad OpenSSL para generar aleatoriamente 3 cadenas hexadecimales y redirigir la salida a un nuevo archivo en el llaves carpeta. Escriba los siguientes 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 "

Donde 1,2,3 son los identificadores clave; Los incluimos para crear una referencia a las claves de cifrado utilizando variable innoDB_DEFAULT_ENCRIPTION_KEY_ID en mariadb. El archivo de salida se verá así:

1; 01495BA35E1C9602E14E40BD6DE41BB8
2; 3cffa4a5d288e90108394dbf639664f8
3; 9953297ed1a58ae837486318840f5f1d

Cifrado de archivo de clave

Podemos establecer fácilmente la variable del sistema file_key_management_filename con la ruta apropiada dentro del complemento de administración de teclas de archivo. Pero no es seguro dejar las llaves en texto plano. Podemos reducir el riesgo hasta cierto punto asignando permisos de archivo, pero eso no es suficiente.

Ahora cifraremos claves previamente creadas utilizando una contraseña generada al azar. En contraste, el tamaño clave puede variar de 128/192/256 bits.

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

Por lo tanto, usaremos el OpenSSL ENC comandar en el terminal para cifrar el enc_key.TXT archivo enc_key.enchufe, Uso de la clave de cifrado creada anteriormente. Además, MariaDB solo admite el modo CBC de AES para cifrar sus claves de cifrado.

ubuntu@ubuntu: ~ $ openssl enc -aes -256 -cbc -md sha1 -pass archivo:/etc/mysql/keys/enc_paswd.clave -in/etc/mysql/keys/enc_key.txt -out/etc/mysql/keys/enc_key.enc && sudo rm/etc/mysql/keys/enc_key.TXT

También eliminamos nuestro Enc_keys.TXT archivo como ya no es necesario. Además, siempre podemos descifrar nuestros datos en Mariadb siempre que nuestro archivo de contraseña sea seguro.

Configuración del complemento de administración de teclas de archivo

Ahora configuraremos mariadb con el complemento de administración de teclas de archivo agregando las siguientes variables en el archivo de configuración. Los archivos de configuración generalmente se encuentran en '/etc/mysql' y lee todo el .archivos CNF por defecto. O puede crear un nuevo archivo de configuración "Mariadb_enc.CNF " bajo '/etc/mysql/conf.d/ directorio.

Ahora su archivo de configuración puede verse completamente diferente de esto. Sin embargo, agregue estas variables de cifrado en [SQLD]. Si la clave está encriptada, el complemento requiere dos variables del sistema para configurar, yo.mi., file_key_management_filename y file_key_management_filekey.

[SQLD]
#Complemento de administración de claves de archivos
plugin_load_add = file_key_management
file_key_management = en file_key_management_ENCRITCTION_ALGORITHM = AES_CBC File_Key_Management_FileName =/etc/mysql/keys/enc_keys.enchufe
file_key_management_filekey =/etc/mysql/keys/enc_paswd.llave
# Configuración de cifrado innoDB/XTRADB
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = on
innodb_encrypt_log = on
innodb_encryption_threads = 4
# Configuración de cifrado de ARIA
aria_encrypt_tables = en
# Cifrado de temperatura y registro
Cicrypt-tmp-disisk-mesas = 1
encrypt-tmp-files = 1
cifrypt_binlog = on

Puede encontrar detalles para cada variable del sistema del sitio web oficial de Mariadb.

Asegurar el archivo de contraseña

Cambiaremos nuestros permisos de directorio MySQL para asegurar la contraseña y otros archivos confidenciales. La propiedad de la mariadb se cambiará al usuario actual, que en Ubuntu es mysql.

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

Ahora cambiaremos la contraseña y los permisos de archivo cifrados a

sudo chown mysql: root/etc/mysql/keys/enc_paswd.Key/etc/mysql/keys/enc_key.enchufe
sudo chmod 600/etc/mysql/keys/enc_paswd.Key/etc/mysql/keys/enc_key.enchufe

Ahora reinicie el servicio de la base de datos.

SUDO SERVICIO MYSQL RESTART

Conclusión

Este artículo ha aprendido cómo el cifrado a nivel de base de datos es la necesidad de la hora y cómo podemos configurar el cifrado en Mariadb. El único inconveniente del complemento de administración de teclas de archivo es que no admite la rotación de la clave. Sin embargo, aparte de este complemento, muchas otras soluciones de cifrado de gestión de claves, yo.mi., Plugin de administración de claves de AWS y complemento de administración de claves Eperi. Puede encontrar más detalles sobre estos complementos del sitio web oficial de MariaDB.