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 4 días
- Copiado de Actividad #27: Habilitar Cifrado en la Base de Datos añadido
Actualizado por Anibal Pendas Amador hace 4 días
- Copiado a Actividad #29: Habilitar Cifrado en la Base de Datos añadido
Actualizado por Airam Cuesta Dueñas hace 1 día
- 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.
Actualizado por Anibal Pendas Amador hace aproximadamente 23 horas
- Estado cambiado de Resuelto a Cerrado