sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo proteger sus bases de datos de código abierto con ClusterControl

La seguridad es uno de los aspectos más importantes del funcionamiento de una base de datos. Si usted es un desarrollador o un DBA, si está administrando la base de datos, es su responsabilidad salvaguardar sus datos y protegerlos de cualquier tipo de acceso no autorizado. El hecho desafortunado es que muchas organizaciones no protegen sus datos, como hemos visto en la nueva ola de ataques de ransomware de MongoDB en septiembre de 2017. Anteriormente habíamos publicado un blog sobre cómo proteger las bases de datos de MongoDB.

En esta publicación de blog, veremos cómo proteger sus bases de datos usando ClusterControl. Todas las funciones descritas aquí están disponibles en la versión 1.5.1 de ClusterControl (lanzada el 23 de diciembre de 2017). Tenga en cuenta que algunas funciones solo están disponibles para ciertos tipos de bases de datos.

Cifrado de copia de seguridad

ClusterControl 1.5.1 introdujo una nueva función llamada cifrado de copia de seguridad. Todas las copias de seguridad cifradas están marcadas con un icono de candado al lado:

Puede utilizar esta función en todos los métodos de copia de seguridad (mysqldump, xtrabackup, mongodump, pg_dump) admitidos por ClusterControl. Para habilitar el cifrado, simplemente active el interruptor "Habilitar cifrado" al programar o crear la copia de seguridad. ClusterControl genera automáticamente una clave para cifrar la copia de seguridad. Utiliza el algoritmo de cifrado AES-256 (CBC) y realiza el cifrado sobre la marcha en el servidor de destino. El siguiente comando muestra un ejemplo de cómo ClusterControl realiza una copia de seguridad de mysqldump:

$ mysqldump --defaults-file=/etc/my.cnf --flush-privileges --hex-blob --opt --no-create-info --no-data --triggers --routines --events --single-transaction --skip-comments --skip-lock-tables --skip-add-locks --databases db1 | gzip -6 -c | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-094508-e0bc6ad658e88d93.tmp | socat - TCP4:192.168.55.170:9999'

Vería el siguiente error si intentara descomprimir una copia de seguridad cifrada sin descifrarla primero con la clave adecuada:

$ gunzip mysqldump_2018-01-03_175727_data.sql.gz
gzip: mysqldump_2018-01-03_175727_data.sql.gz: not in gzip format

La clave se almacena dentro de la base de datos de ClusterControl y se puede recuperar del archivo cmon_backup.metadata para un conjunto de respaldo en particular. Será utilizado por ClusterControl al realizar la restauración. Se recomienda encarecidamente cifrar las copias de seguridad, especialmente cuando desea proteger sus copias de seguridad fuera del sitio, como archivarlas en la nube.

Cifrado cliente-servidor MySQL/PostgreSQL

Además de seguir los pasos de seguridad recomendados durante la implementación, puede aumentar la confiabilidad de su servicio de base de datos utilizando el cifrado SSL cliente-servidor. Usando ClusterControl, puede realizar esta operación con solo apuntar y hacer clic:

A continuación, puede recuperar las claves y los certificados generados directamente desde el host de ClusterControl en /var/lib/cmon/ca ruta para establecer conexiones seguras con los clientes de la base de datos. Todas las claves y certificados se pueden gestionar directamente en Gestión de claves, como se describe más adelante.

Cifrado de replicación de base de datos

El tráfico de replicación dentro de un Galera Cluster se puede habilitar con solo un clic. ClusterControl utiliza una clave predeterminada de 2048 bits y un certificado generado en el nodo ClusterControl, que se transfiere a todos los nodos de Galera:

Es necesario reiniciar el clúster. ClusterControl realizará una operación de reinicio continuo, tomando un nodo a la vez. Verá un icono de candado verde junto al servidor de la base de datos (Galera indica el cifrado de replicación Galera, mientras que SSL indica el cifrado cliente-servidor) en la cuadrícula Hosts de la página Descripción general una vez que el cifrado esté habilitado:

Todas las claves y certificados se pueden gestionar directamente en Gestión de claves, como se describe más adelante.

Administración de claves

Todas las claves y certificados generados se pueden administrar directamente desde la interfaz de usuario de ClusterControl. Key Management le permite administrar certificados SSL y claves que se pueden aprovisionar en sus clústeres:

Si el certificado ha caducado, simplemente puede utilizar la interfaz de usuario para generar un nuevo certificado con la clave y la autoridad de certificación (CA) adecuadas, o importar una clave y un certificado existentes en el host de ClusterControl.

Asesores de Seguridad

Los asesores son miniprogramas que se ejecutan en ClusterControl. Realizan tareas específicas y brindan asesoramiento sobre cómo abordar problemas en áreas como el rendimiento, la seguridad, la gestión de registros, la configuración, el espacio de almacenamiento y otros. Cada asesor puede programarse como un trabajo cron y ejecutarse como un ejecutable independiente dentro de la interfaz de usuario de ClusterControl. También se puede ejecutar a través del cliente de línea de comandos ClusterControl 's9s'.

ClusterControl habilita dos asesores de seguridad para sistemas basados ​​en MySQL:

  • Acceso desde cualquier host ('%'):identifica a todos los usuarios que usan un host comodín de la tabla del sistema mysql y le permite tener más control sobre qué hosts pueden conectarse a los servidores.
  • Verificar número de cuentas sin contraseña - Identifica a todos los usuarios que no tienen contraseña en la tabla del sistema mysql.

Para MongoDB, contamos con los siguientes asesores:

  • Autenticación de MongoDB habilitada:verifique si la instancia de MongoDB se está ejecutando con el modo de autenticación habilitado.
  • Comprobación de autorización:compruebe si los usuarios de MongoDB están autorizados con un rol demasiado permisivo para el control de acceso.

Para obtener más detalles sobre cómo realiza ClusterControl las comprobaciones de seguridad, puede consultar el código fuente similar a JavaScript del asesor en Administrar -> Developer Studio . Puede ver los resultados de la ejecución desde la página Asesores:

Múltiples interfaces de red

Tener varias NIC en los hosts de la base de datos le permite separar el tráfico de la base de datos del tráfico de administración. Los nodos de la base de datos utilizan una red para comunicarse entre sí, y esta red no está expuesta a ninguna red pública. La otra red es utilizada por ClusterControl, con fines de gestión. ClusterControl puede implementar una configuración multired de este tipo. Considere el siguiente diagrama de arquitectura:

Para importar el clúster de la base de datos anterior a ClusterControl, se debe especificar la dirección IP principal de los hosts de la base de datos. Entonces, es posible elegir la red de gestión así como la red de datos:

ClusterControl también puede funcionar en un entorno sin acceso a Internet, con las bases de datos totalmente aisladas de la red pública. La mayoría de las características funcionarán bien. Si el host de ClusterControl está configurado con Internet, también es capaz de clonar el repositorio del proveedor de la base de datos para los servidores de base de datos sin Internet. Simplemente vaya a Configuración (menú superior) -> Repositorios -> Crear nuevo repositorio y configure las opciones para adaptarse al entorno del servidor de la base de datos de destino:

La duplicación puede demorar entre 10 y 20 minutos, según la conexión a Internet; verá el nuevo elemento en la lista más adelante. Luego, puede elegir este repositorio en su lugar al escalar o implementar un nuevo clúster, sin necesidad de que los hosts de la base de datos tengan conexión a Internet (tenga en cuenta que el repositorio fuera de línea del sistema operativo también debe estar en su lugar).

Administración de usuarios de MySQL

El sistema de privilegios de MySQL garantiza que todos los usuarios puedan realizar solo las operaciones para las que están autorizados. La concesión es fundamental, ya que no desea otorgar a todos los usuarios acceso completo a su base de datos, pero necesita que los usuarios tengan los permisos necesarios para ejecutar consultas y realizar tareas diarias.

ClusterControl proporciona una interfaz de usuario interactiva para administrar los esquemas y privilegios de la base de datos. Unifica las cuentas en todos los servidores MySQL del clúster y simplifica el proceso de concesión. Puedes visualizar fácilmente los usuarios de la base de datos, para evitar cometer errores.

Como puede ver en la captura de pantalla anterior, ClusterControl desactivó los privilegios innecesarios si solo desea otorgar a un usuario una base de datos (shopdb). "¿Requerir SSL?" solo está habilitado si el cifrado SSL de cliente/servidor está habilitado, mientras que las casillas de verificación de privilegios de administración están totalmente deshabilitadas si se define una base de datos específica. También puede inspeccionar la declaración GRANT generada en la parte inferior del asistente, para ver la declaración que ejecutará ClusterControl para crear este usuario. Este asistente parece bastante simple, pero crear usuarios y otorgar privilegios puede ser propenso a errores.

ClusterControl también proporciona una lista de usuarios inactivos para todos los nodos de la base de datos en el clúster, mostrando las cuentas que no se han utilizado desde el último reinicio del servidor:

Esto alerta al administrador sobre cuentas innecesarias que existen y que podrían dañar el servidor. El siguiente paso es verificar si las cuentas ya no están activas, y simplemente puede usar la opción "Eliminar usuario seleccionado" para eliminarlas. Asegúrese de tener suficiente actividad en la base de datos para garantizar que la lista generada por ClusterControl sea precisa. Cuanto mayor sea el tiempo de actividad del servidor, mejor.

Manténgase siempre actualizado

Para uso en producción, se recomienda enfáticamente que instale los paquetes relacionados con la base de datos desde el repositorio del proveedor. No confíe en el repositorio del sistema operativo predeterminado, donde los paquetes suelen estar desactualizados. Si está ejecutando en un entorno de clúster como Galera Cluster, o incluso MySQL Replication, siempre tiene la opción de parchear el sistema con un tiempo de inactividad mínimo.

ClusterControl admite la actualización gradual automática de versiones secundarias para MySQL/MariaDB con un solo clic. Simplemente vaya a Administrar -> Actualizaciones -> Actualizar y elija la versión principal adecuada para su clúster en ejecución. ClusterControl luego realizará la actualización, en un nodo a la vez. El nodo se detendrá, luego se actualizará el software y luego el nodo se iniciará nuevamente. Si un nodo no se actualiza, el proceso de actualización se cancela y se notifica al administrador. Las actualizaciones solo se deben realizar cuando hay el menor tráfico posible en el clúster.

Las actualizaciones de versiones principales (por ejemplo, de MySQL 5.6 a MySQL 5.7) no se automatizan intencionalmente. Las actualizaciones importantes generalmente requieren la desinstalación de los paquetes existentes, lo cual es una tarea riesgosa de automatizar. Es necesaria una planificación y pruebas cuidadosas para este tipo de actualizaciones.

La seguridad de la base de datos es un aspecto importante de ejecutar su base de datos en producción. De todos los incidentes que leemos con frecuencia en las noticias (y probablemente hay muchos otros que no se publican), está claro que hay grupos ocupados con malas intenciones. Por lo tanto, asegúrese de que sus bases de datos estén bien protegidas.