Proyecto

General

Perfil

Acciones

Actividad #28

cerrada

Habilitar Cifrado en la Base de Datos

Añadido por Anibal Pendas Amador hace 4 días. Actualizado hace aproximadamente 23 horas.

Estado:
Cerrado
Prioridad:
Alto
Fecha de inicio:
01/08/2025
Fecha de vencimiento:
03/08/2025
% Completado:

100%

Tiempo estimado:
5:00 h

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.


Peticiones relacionadas 2 (1 abierta1 cerrada)

Copiado de Actividad #27: Habilitar Cifrado en la Base de DatosNuevoAdalberto Barcelo01/08/202503/08/2025

Acciones
Copiado a Actividad #29: Habilitar Cifrado en la Base de DatosCerradoReynaldo León01/08/202503/08/2025

Acciones
Acciones #1

Actualizado por Anibal Pendas Amador hace 4 días

  • Copiado de Actividad #27: Habilitar Cifrado en la Base de Datos añadido
Acciones #2

Actualizado por Anibal Pendas Amador hace 4 días

  • Copiado a Actividad #29: Habilitar Cifrado en la Base de Datos añadido
Acciones #3

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\ y C:\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 en component_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.
  • 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, y claves_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 tuviera ENCRYPTION="Y" en CREATE_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 archivos mysqld.my y component_keyring_file.cnf en las rutas global y local, y aseguré la existencia de la carpeta keyring.
  • 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 comando ALTER TABLE ... ENCRYPTION='Y' o CREATE 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.
Acciones #4

Actualizado por Anibal Pendas Amador hace aproximadamente 23 horas

Buen trabajo

Acciones #5

Actualizado por Anibal Pendas Amador hace aproximadamente 23 horas

  • Estado cambiado de Resuelto a Cerrado
Acciones

También disponible en: Atom PDF