Cifrado de conexiones de cliente con instancias de base de datos MariaDB con SSL/TLS - Amazon Relational Database Service

Cifrado de conexiones de cliente con instancias de base de datos MariaDB con SSL/TLS

La capa de conexión segura (SSL) es un protocolo estándar del sector que se utiliza para proteger las conexiones de red entre el cliente y el servidor. Después de la versión 3.0 de SSL, el nombre se cambió por seguridad de la capa de transporte (TLS). Amazon RDS admite el cifrado SSL para las instancias de base de datos MariaDB. Con SSL/TLS puede cifrar una conexión entre el cliente de la aplicación y la instancia de base de datos MariaDB. La compatibilidad con SSL/TLS está disponible en todas las Regiones de AWS.

Uso de SSL/TLS con una instancia de base de datos MariaDB

Amazon RDS crea un certificado de SSL/TLS e instala el certificado en la instancia de base de datos cuando Amazon RDS aprovisiona la instancia. Estos certificados están firmados por una autoridad de certificación. El certificado SSL/TLS incluye el punto de enlace de la instancia de base de datos como nombre común (CN) que el certificado de SSL/TLS debe proteger frente a los ataques de suplantación.

Un certificado SSL/TLS creado por Amazon RDS es la entidad raíz de confianza y debería funcionar en la mayoría de los casos, pero podría fallar si la aplicación no acepta cadenas de certificados. Si la aplicación no acepta cadenas de certificados, es posible que tenga que utilizar un certificado intermedio para conectarse a la Región de AWS. Por ejemplo, debe utilizar un certificado intermedio para conectarse a las regiones de AWS GovCloud (US) mediante SSL/TLS.

Para obtener más información acerca de cómo descargar certificados, consulte Uso de SSL/TLS para cifrar una conexión a una instancia. Para obtener más información acerca de cómo usar SSL/TLS con MySQL, consulte Uso de los nuevos certificados SSL/TLS para las instancias de base de datos de MariaDB.

Amazon RDS para MariaDB es compatible con las versiones 1.0, 1.1, 1.2 y 1.3 de la seguridad de la capa de transporte (TLS) para todas las versiones de MariaDB.

Puede exigir conexiones SSL/TLS para determinadas cuentas de usuarios. Por ejemplo, puede utilizar una de las siguientes instrucciones, según su versión de MariaDB, para exigir el uso de conexiones SSL/TLS en encrypted_user de usuario.

Utilice la siguiente instrucción.

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

Para obtener más información acerca de las conexiones SSL/TLS con MariaDB, consulte Securing Connections for Client and Server (Protección de conexiones para el cliente y el servidor) en la documentación de MariaDB.

Requerir SSL/TLS para todas las conexiones a una instancia de base de datos de MariaDB

Utilice el parámetro require_secure_transport para requerir que todas las conexiones de usuario a su instancia de base de datos de MariaDB utilicen SSL/TLS. De forma predeterminada, el parámetro require_secure_transport está definido como OFF. Puede definir el parámetro require_secure_transport en ON (activado) para imponer SSL/TLS para las conexiones a la instancia de base de datos.

nota

El parámetro require_secure_transport solo es compatible con las versiones 10.5 y posteriores de MariaDB.

Puede definir el valor del parámetro require_secure_transport actualizando el grupo de parámetros de base de datos a su instancia de base de datos. No es necesario reiniciar la instancia de base de datos para que el cambio surta efecto.

Cuando el parámetro require_secure_transport se establece en ON para un clúster de base de datos, un cliente de base de datos puede conectarse a él si puede establecer una conexión cifrada. De lo contrario, se devuelve al cliente un mensaje de error similar al siguiente:

ERROR 1045 (28000): Access denied for user 'USER'@'localhost' (using password: YES | NO)

Para obtener información acerca de cómo configurar los parámetros, consulte Modificación de parámetros de un grupo de parámetros de base de datos.

Para obtener más información sobre el parámetro require_secure_transport, consulte la documentación de MariaDB.

Conexión desde el cliente de la línea de comandos de MySQL con SSL/TLS (cifrado)

Los parámetros mysql del programacliente son ligeramente diferentes si está utilizando la versión de MySQL 5.7, la versión de MySQL 8.0 o la versión de MariaDB.

Para saber qué versión tiene, ejecute el comando mysql con la opción de comando --version. En el ejemplo siguiente, el resultado muestra que el programa cliente es de MariaDB.

$ mysql --version mysql Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1

La mayoría de las distribuciones de Linux, como Amazon Linux, CentOS, SUSE y Debian han reemplazado MySQL por MariaDB, y la versión de mysql en ellos es de MariaDB.

Para conectarse a la instancia de base de datos mediante SSL/TLS, siga estos pasos:

Para conectarse a una instancia de base de datos mediante SSL/TLS con el cliente de la línea de comandos de MySQL
  1. Descargue un certificado raíz que funcione para todas las Regiones de AWS.

    Para obtener más información acerca de cómo descargar certificados, consulte Uso de SSL/TLS para cifrar una conexión a una instancia.

  2. Utilice un cliente de línea de comandos de MySQL para conectarse a una instancia de base de datos con cifrado SSL/TLS. Para el parámetro -h, escriba el nombre de DNS (punto de conexión) de la instancia de base de datos. Para el parámetro --ssl-ca, sustituya el nombre del archivo de certificado SSL/TLS. Para el parámetro -P, sustituya el puerto de la instancia de base de datos. Para el parámetro -u, sustituya el nombre de usuario de un usuario de base de datos válido, como el usuario maestro. Escriba la contraseña del usuario maestro cuando se le pida.

    En el siguiente ejemplo, se muestra cómo lanzar un cliente con el parámetro --ssl-ca con el MariaDB.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p

    Para exigir que la conexión SSL/TLS verifique el punto de conexión de la instancia de la base de datos en el punto de conexión del certificado SSL/TLS, introduzca el siguiente comando:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-verify-server-cert -P 3306 -u myadmin -p

    En el siguiente ejemplo, se muestra cómo lanzar un cliente con el parámetro --ssl-ca con el cliente MySQL 5.7 y versiones posteriores.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p
  3. Escriba la contraseña del usuario maestro cuando se le pida.

Debería ver un resultado similar a este.

Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 31 Server version: 10.6.10-MariaDB-log Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>