Actividad #28
cerradaHabilitar Cifrado en la Base de Datos
100%
Descripción
Habilitar Cifrado en la Base de Datos¶
-
Descripción: Configurar MySQL 8.x para cifrar todas las tablas del Sistema CRM con AES-256, protegiendo datos sensibles almacenados, como información de contactos, oportunidades, campañas, tareas, y claves API, contra accesos no autorizados en caso de compromiso del servidor de base de datos.
-
Verificación: Confirmar que todas las tablas de la base de datos están marcadas como cifradas y son ilegibles sin las claves adecuadas.
Actualizado por Anibal Pendas Amador hace 5 días
- Copiado de Actividad #27: Habilitar Cifrado en la Base de Datos añadido
Actualizado por Anibal Pendas Amador hace 5 días
- Copiado a Actividad #29: Habilitar Cifrado en la Base de Datos añadido
Actualizado por Airam Cuesta Dueñas hace 2 días
- Estado cambiado de Nuevo a Resuelto
- % Completado cambiado de 0 a 100
Guía para Habilitar Cifrado en la Base de Datos MySQL con AES-256¶
Este documento describe los pasos que realicé para llevar a cabo una configuración de MySQL 9.4 en un entorno Windows 11 Home, con el objetivo de cifrar todas las tablas del Sistema CRM utilizando AES-256. Esto protege datos sensibles, como información de contactos, oportunidades, campañas, tareas y claves API, contra accesos no autorizados en caso de compromiso del servidor de base de datos. También verifiqué que las tablas estuvieran marcadas como cifradas y fueran ilegibles sin las claves adecuadas.
Requisitos Previos¶
- MySQL Server 9.4 instalado.
- Acceso administrativo al servidor Windows 11 Home.
- Herramienta de administración de bases de datos como Navicat instalada.
- Directorios de instalación de MySQL:
C:\Program Files\MySQL\MySQL Server 9.4\
yC:\ProgramData\MySQL\MySQL Server 9.4\
. - Conocimiento básico de comandos SQL y configuración de MySQL.
Pasos para Configurar el Cifrado de Tablas con AES-256¶
Paso 1: Crear el archivo mysqld.my
en la ruta global¶
- Creé el archivo
mysqld.my
en el directorio donde se encuentra el ejecutable de MySQL:C:\Program Files\MySQL\MySQL Server 9.4\bin\mysqld.my
. - Agregué el siguiente contenido al archivo:
{ "read_local_manifest": true }
Paso 2: Crear el archivo component_keyring_file.cnf
en la ruta global de plugins¶
- Creé el archivo
component_keyring_file.cnf
en el directorio de plugins de MySQL:C:\Program Files\MySQL\MySQL Server 9.4\lib\plugin\component_keyring_file.cnf
. - Agregué el siguiente contenido al archivo:
{ "path": "C:/ProgramData/MySQL/MySQL Server 9.4/keyring/keyring_file", "read_only": false }
Paso 3: Crear el archivo mysqld.my
en la ruta local de datos¶
- Creé el archivo
mysqld.my
en el directorio de datos de MySQL:C:\ProgramData\MySQL\MySQL Server 9.4\Data\mysqld.my
. - Agregué el siguiente contenido al archivo:
{ "components": "file://component_keyring_file" }
Paso 4: Crear el archivo component_keyring_file.cnf
en la ruta local de datos¶
- Creé el archivo
component_keyring_file.cnf
en el directorio de datos de MySQL:C:\ProgramData\MySQL\MySQL Server 9.4\Data\component_keyring_file.cnf
. - Agregué el siguiente contenido al archivo:
{ "path": "C:/ProgramData/MySQL/MySQL Server 9.4/keyring/keyring_file", "read_only": false }
Paso 5: Crear la carpeta keyring
- Creé la carpeta
keyring
en la ruta especificada encomponent_keyring_file.cnf
:C:\ProgramData\MySQL\MySQL Server 9.4\keyring
. - Aseguré que la carpeta estuviera accesible para el servicio de MySQL (permisos de escritura para el usuario del servicio).
Paso 6: Reiniciar el servicio de MySQL¶
- Abrí la aplicación
Services
en Windows:- Presioné
Win + R
, escribíservices.msc
y presioné Enter.
- Presioné
- Busqué el servicio
MySQL94
en la lista. - Hice clic derecho sobre
MySQL94
y seleccionéReiniciar
para aplicar los cambios de configuración.
Paso 7: Encriptar una tabla¶
- Accedí a la base de datos del Sistema CRM usando Navicat.
- Abrí una nueva consulta (query) en Navicat.
- Para encriptar una tabla existente (por ejemplo,
contactos
), ejecuté el siguiente comando SQL:ALTER TABLE contactos ENCRYPTION='Y';
- Para crear una nueva tabla encriptada (por ejemplo,
tareas
), ejecuté:CREATE TABLE tareas ( id INT AUTO_INCREMENT PRIMARY KEY, descripcion VARCHAR(255), estado VARCHAR(50) ) ENCRYPTION='Y';
- Repetí este proceso para todas las tablas del Sistema CRM, incluyendo
contactos
,oportunidades
,campanas
,tareas
, yclaves_api
.
Paso 8: Verificar el cifrado de las tablas¶
- Ejecuté el siguiente comando SQL para confirmar que las tablas estaban cifradas:
SELECT TABLE_NAME, CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'contactos';
-
Salida esperada:
TABLE_NAME | CREATE_OPTIONS contactos | ENCRYPTION="Y"
- Repetí la verificación para todas las tablas (
oportunidades
,campanas
,tareas
,claves_api
), confirmando que cada una tuvieraENCRYPTION="Y"
enCREATE_OPTIONS
. - Para verificar que los datos eran ilegibles sin las claves, intenté acceder al archivo físico de la tabla (por ejemplo,
C:\ProgramData\MySQL\MySQL Server 9.4\Data\crm\contactos.ibd
) usando un editor hexadecimal. Confirmé que los datos estaban cifrados y no eran legibles directamente.
Resumen¶
- Llevé a cabo una configuración del componente de cifrado
component_keyring_file
en MySQL 9.4 creando los archivosmysqld.my
ycomponent_keyring_file.cnf
en las rutas global y local, y aseguré la existencia de la carpetakeyring
. - Reinicié el servicio
MySQL94
para aplicar los cambios. - Encripté todas las tablas del Sistema CRM (
contactos
,oportunidades
,campanas
,tareas
,claves_api
) con AES-256 usando el comandoALTER TABLE ... ENCRYPTION='Y'
oCREATE TABLE ... ENCRYPTION='Y'
. - Verifiqué que todas las tablas estaban marcadas como cifradas mediante
INFORMATION_SCHEMA.TABLES
y confirmé que los datos eran ilegibles sin las claves adecuadas. - Nota: Para un entorno de producción, consideraré implementar una solución de gestión de claves más robusta, como un servidor de claves externo, para mayor seguridad.