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.