Seguridad con Amazon Aurora MySQL - Amazon Aurora

Seguridad con Amazon Aurora MySQL

La seguridad de Amazon Aurora MySQL se administra en tres niveles:

  • Para controlar quién puede realizar acciones de administración de Amazon RDS en clústeres de base de datos e instancias de base de datos de Aurora MySQL, se usa AWS Identity and Access Management (IAM). Cuando se conecta a AWS con credenciales de IAM, la cuenta de AWS debe tener políticas de IAM que concedan los permisos necesarios para realizar operaciones de administración de Amazon RDS. Para obtener más información, consulte Administración de la identidad y el acceso en Amazon Aurora

    Si usa IAM para acceder a la consola de Amazon RDS, primero inicie sesión en la AWS Management Console con sus credenciales de usuario de IAM. Abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  • Asegúrese de crear clústeres de base de datos de Aurora MySQL en una nube pública virtual (VPC) basada en el servicio Amazon VPC. Para controlar qué dispositivos e instancias Amazon EC2 pueden abrir conexiones al punto de conexión y al puerto de la instancia de base de datos para los clústeres de base de datos de Aurora MySQL en una VPC, debe usar un grupo de seguridad de VPC. Puede establecer estas conexiones de puerto y punto de conexión mediante la seguridad de la capa de transporte (TLS). Además, las reglas del firewall de su compañía pueden controlar si los dispositivos que se ejecutan en ella pueden abrir conexiones a una instancia de base de datos. Para obtener más información acerca de las VPC, consulte VPC de Amazon y Amazon Aurora.

    La tenencia de VPC admitida depende de la clase de instancia de base de datos que utilicen los clústeres de base de datos de Aurora MySQL. En el caso de la tenencia de VPC default, la VPC se ejecuta en hardware compartido. En el caso de la tenencia de una VPC dedicated, la VPC se ejecuta en una instancia de hardware dedicada. Las clases de instancia de base de datos de rendimiento ampliable solo admiten el arrendamiento de VPC predeterminado. Las clases de instancia de base de datos de rendimiento ampliable incluyen las clases de instancia de base de datos db.t2, db.t3 y db.t4g. Todas las demás clases de instancia de base de datos de Aurora MySQL admiten la tenencia de VPC predeterminada y dedicada.

    nota

    Recomendamos que las clases de instancia de base de datos T se utilicen solo para los servidores de desarrollo y de pruebas, o para otros servidores que no se utilicen para la producción. Para obtener más detalles sobre las clases de instancia T, consulte Utilización de clases de instancia T para el desarrollo y la prueba.

    Para obtener más información sobre las clases de instancias, consulte Clases de instancia de base de datos de Aurora. Para obtener más información acerca de la tenencia de VPC default y dedicated, consulte Instancias dedicadas en la Guía del usuario de Amazon Elastic Compute Cloud.

  • Para autenticar el inicio de sesión y los permisos de un clúster de base de datos de Amazon Aurora MySQL, puede usar cualquiera de los siguientes procedimientos o una combinación de ellos:

    • Puede seguir el mismo procedimiento que con una instancia independiente de MySQL.

      Los comandos como CREATE USER, RENAME USER, GRANT, REVOKE y SET PASSWORD funcionan de la misma forma que en las bases de datos locales, al igual que la modificación directa de las tablas de los esquemas de las bases de datos. Para obtener más información, consulte Control de acceso y administración de cuentas en la documentación de MySQL.

    • También puede utilizar la autenticación de base de datos de IAM.

      Con la autenticación de bases de datos de IAM, se autentica en el clúster de base de datos con un usuario o un rol de IAM y un token de autenticación. Un token de autenticación es un valor único que se genera utilizando el proceso de firma Signature Version 4. Mediante la autenticación de base de datos de IAM, puede utilizar las mismas credenciales para controlar el acceso a AWS los recursos y a las bases de datos. Para obtener más información, consulte Autenticación de bases de datos de IAM .

nota

Para obtener más información, consulte Seguridad en Amazon Aurora.

Privilegios de la cuenta de usuario maestro con Amazon Aurora MySQL.

Cuando se crea una instancia de base de datos de Amazon Aurora MySQL, el usuario maestro tiene los privilegios predeterminados que se indican en Privilegios de la cuenta de usuario maestro.

Para proporcionar servicios de administración para cada clúster de base de datos, se crean los usuarios admin y rdsadmin cuando se crea el clúster de base de datos. Al intentar borrar, cambiar de nombre, modificar la contraseña o cambiar los privilegios de la cuenta rdsadmin, se producirá un error.

En los clústeres de base de datos de la versión 2 de Aurora MySQL, los usuarios admin y rdsadmin se crean cuando se crea el clúster de base de datos. En los clústeres de base de datos de la versión 3 de Aurora MySQL, se crean los usuarios admin, rdsadmin y rds_superuser_role.

importante

Le recomendamos encarecidamente que no utilice el usuario maestro directamente en sus aplicaciones. En lugar de ello, es mejor ceñirse a la práctica recomendada de utilizar un usuario de base de datos creado con los privilegios mínimos necesarios para su aplicación.

Para la administración del clúster de base de datos Aurora MySQL, los comandos estándar kill y kill_query se han restringido. En su lugar, use los comandos de Amazon RDS rds_kill y rds_kill_query para terminar las consultas o las sesiones de usuario en las instancias de base de datos Aurora MySQL.

nota

El cifrado de instantáneas de una instancia de base de datos no se admite en la región China (Ningxia).

Uso de TLS con clústeres de base de datos de Aurora MySQL

Los clústeres de base de datos de Amazon Aurora MySQL admiten conexiones de seguridad de la capa de transporte (TLS) desde aplicaciones con el mismo proceso y la misma clave pública que las instancias de base de datos de RDS para MySQL.

Amazon RDS crea un certificado de 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 TLS incluye el punto de conexión de la instancia de base de datos como nombre común (CN) que el certificado de TLS debe proteger frente a los ataques de suplantación. Como resultado, solo puede usar el punto de conexión del clúster de base de datos para conectarse a un clúster de base de datos con TLS si su cliente admite nombres alternativos de firmante (SAN). De lo contrario, tendrá que usar el punto de enlace de la instancia de una instancia de escritor.

Para obtener más información acerca de cómo descargar certificados, consulte Uso de SSL/TLS para cifrar una conexión a un clúster de base de datos.

Le recomendamos el controlador JDBC de AWS como cliente que admite SAN con TLS. Para obtener más información sobre el controlador JDBC de AWS e instrucciones completas para utilizarlo, consulte el repositorio GitHub del controlador JDBC de Amazon Web Services (AWS).

Requerir una conexión TLS a un clúster de base de datos de Aurora MySQL

Puede requerir que todas las conexiones de usuario al clúster de base de datos de Aurora MySQL utilicen TLS mediante el parámetro de clúster de base de datos require_secure_transport. De forma predeterminada, el parámetro require_secure_transport está definido como OFF. Puede establecer el parámetro require_secure_transport en ON para exigir TLS para las conexiones al clúster de base de datos.

Puede definir el valor del parámetro require_secure_transport actualizando el grupo de parámetros de su clúster de base de datos para su clúster de base de datos. No es necesario reiniciar el clúster de base de datos para que el cambio surta efecto. Para obtener más información acerca de los grupos de parámetros, consulte Working with parameter groups (Trabajar con grupos de parámetros).

nota

El parámetro require_secure_transport está disponible para las versiones 2 y 3 de Aurora MySQL. Puede establecer este parámetro en un grupo de parámetros de clúster de base de datos personalizado. El parámetro no está disponible en grupos de parámetros de instancia de base de datos.

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 al mismo si puede establecer una conexión cifrada. De lo contrario, se devuelve al cliente un mensaje de error similar al siguiente:

MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

Versiones de TLS para Aurora MySQL

Aurora MySQL admite las versiones 1.0, 1.1, 1.2 y 1.3 de seguridad de la capa de transporte (TLS). A partir de la versión 3.04.0 y versiones posteriores de Aurora MySQL, puede utilizar el protocolo TLS 1.3 para proteger sus conexiones. En la tabla siguiente se muestra la compatibilidad de TLS para versiones de Aurora MySQL.

Aurora MySQL version TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 Predeterminado

Aurora MySQL versión 2

Soportado Soportado

Soportado

No compatible Todas las versiones de TLS admitidas

Aurora MySQL versión 3 (anterior a 3.04.0)

Soportado Soportado Soportado No compatible Todas las versiones de TLS admitidas

Aurora MySQL versión 3 (3.04.0 y anteriores)

No admitido No admitido Soportado Soportado Todas las versiones de TLS admitidas
importante

Si utiliza grupos de parámetros personalizados para sus clústeres de Aurora MySQL con la versión 2 y versiones anteriores a la 3.04.0, le recomendamos que utilice TLS 1.2 porque TLS 1.0 y 1.1 son menos seguros. La edición de la comunidad de MySQL 8.0.26 y Aurora MySQL 3.03 y sus versiones secundarias dejaron de admitir las versiones de TLS 1.1 y 1.0.

La edición de la comunidad de MySQL 8.0.28 y las versiones 3.04.0 y posteriores compatibles de Aurora MySQL no admiten TLS 1.1 ni TLS 1.0. Si utiliza las versiones 3.04.0 y posteriores de Aurora MySQL, no defina el protocolo TLS en 1.0 y 1.1 en su grupo de parámetros personalizado.

Para las versiones 3.04.0 y posteriores de Aurora MySQL, la configuración predeterminada es TLS 1.3 y TLS 1.2.

Puede utilizar el parámetro de clúster de base de datos tls_version para indicar las versiones de protocolo permitidas. Existen parámetros de cliente similares para la mayoría de las herramientas de cliente o controladores de base de datos. Es posible que algunos clientes anteriores no admitan las versiones de TLS más recientes. De forma predeterminada, el clúster de base de datos intenta utilizar la versión más reciente del protocolo TLS permitida por la configuración del servidor y del cliente.

Establezca el parámetro de clúster de base de datos de tls_version en uno de los siguientes valores:

  • TLSv1.3

  • TLSv1.2

  • TLSv1.1

  • TLSv1

También puede configurar el parámetro tls_version como una cadena de lista separada por comas. Si desea utilizar los protocolos TLS 1.2 y TLS 1.0, el parámetro tls_version debe incluir todos los protocolos, desde el más bajo hasta el más alto. En este caso, tls_version se establece como:

tls_version=TLSv1,TLSv1.1,TLSv1.2

Para obtener información acerca de cómo modificar parámetros en un clúster de base de datos o un grupo de parámetros de base de datos, consulte Modificación de parámetros de un grupo de parámetros de clúster de base de datos. Si utiliza la AWS CLI para modificar el parámetro de clúster de base de datos tls_version, ApplyMethod se debe establecer en pending-reboot. Cuando el método de aplicación es pending-reboot, los cambios en los parámetros se aplican después de detener y reiniciar los clústeres de base de datos asociados al grupo de parámetros.

Configuración de conjuntos de cifrado para conexiones a clústeres de base de datos de Aurora MySQL

Mediante el uso de conjuntos de cifrado configurables, puede tener más control sobre la seguridad de las conexiones de su base de datos. Puede especificar una lista de conjuntos de cifrado que desea permitir para proteger las conexiones TLS del cliente a su base de datos. Con conjuntos de cifrado configurables, puede controlar el cifrado de conexión que acepta el servidor de base de datos. Esto evita el uso de cifrados inseguros u obsoletos.

Los conjuntos de cifrado configurables son compatibles con la versión 3 de Aurora MySQL y la versión 2 de Aurora MySQL. Con el fin de especificar la lista de cifrados TLS 1.2, TLS 1.1, TLS 1.0 permitidos para cifrar conexiones, modifique el parámetro del clúster ssl_cipher. Establezca el parámetro ssl_cipher en un grupo de parámetros de clúster mediante la AWS Management Console, la AWS CLI o la API de RDS.

Establezca el parámetro ssl_cipher en una cadena de valores de cifrado separados por comas para su versión de TLS. Para la aplicación cliente, puede especificar los cifrados que se utilizarán para las conexiones cifradas mediante la opción --ssl-cipher cuando se conecta a la base de datos. Para obtener más información acerca de la conexión a la base de datos, consulte Conexión a un clúster de base de datos Amazon Aurora MySQL.

A partir de la versión 3.04.0 y versiones posteriores de Aurora MySQL, puede especificar conjuntos de cifrado TLS 1.3. Para especificar los conjuntos de cifrado TLS 1.3 permitidos, modifique el parámetro tls_ciphersuites de su grupo de parámetros. TLS 1.3 ha reducido el número de conjuntos de cifrado disponibles debido a los cambios en la convención de nomenclatura que elimina el mecanismo de intercambio de claves y certificado utilizado. Establezca el parámetro tls_ciphersuites en una cadena de valores de cifrado separados por comas para TLS 1.3.

En la tabla siguiente, se muestran los cifrados compatibles junto con el protocolo de cifrado TLS y las versiones del motor Aurora MySQL válidas para cada cifrado.

CifradoProtocolo de cifradoVersiones compatibles con Aurora MySQL

DHE-RSA-AES128-SHA

TLS 1.03.01.0 y versiones posteriores, todas las versiones anteriores a 2.11.0

DHE-RSA-AES128-SHA256

TLS 1.23.01.0 y versiones posteriores, todas las versiones anteriores a 2.11.0

DHE-RSA-AES128-GCM-SHA256

TLS 1.23.01.0 y versiones posteriores, todas las versiones anteriores a 2.11.0

DHE-RSA-AES256-SHA

TLS 1.03.03.0 y versiones anteriores, todas las versiones anteriores a 2.11.0

DHE-RSA-AES256-SHA256

TLS 1.23.01.0 y versiones posteriores, todas las versiones anteriores a 2.11.0

DHE-RSA-AES256-GCM-SHA384

TLS 1.23.01.0 y versiones posteriores, todas las versiones anteriores a 2.11.0

ECDHE-RSA-AES128-SHA

TLS 1.03.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores

ECDHE-RSA-AES128-SHA256

TLS 1.23.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores

ECDHE-RSA-AES128-GCM-SHA256

TLS 1.23.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores

ECDHE-RSA-AES256-SHA

TLS 1.03.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores

ECDHE-RSA-AES256-SHA384

TLS 1.23.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores

ECDHE-RSA-AES256-GCM-SHA384

TLS 1.23.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores

TLS_AES_128_GCM_SHA256

TLS 1.33.04.0 y versiones posteriores

TLS_AES_256_GCM_SHA384

TLS 1.33.04.0 y versiones posteriores

TLS_CHACHA20_POLY1305_SHA256

TLS 1.33.04.0 y versiones posteriores
nota

Los cifrados DHE-RSA solo son compatibles con las versiones de Aurora MySQL anteriores a la 2.11.0. Las versiones 2.11.0 y posteriores solo admiten cifrados ECDHE.

Para obtener información acerca de cómo modificar parámetros en un clúster de base de datos o un grupo de parámetros de base de datos, consulte Modificación de parámetros de un grupo de parámetros de clúster de base de datos. Si utiliza la CLI para modificar el parámetro de clúster de base de datos de ssl_cipher, asegúrese de configurar el ApplyMethod en pending-reboot. Cuando el método de aplicación es pending-reboot, los cambios en los parámetros se aplican después de detener y reiniciar los clústeres de base de datos asociados al grupo de parámetros.

También puede utilizar el comando de la CLI describe-motor-default-cluster-parameters para determinar qué conjuntos de cifrado se admiten actualmente para una familia de grupos de parámetros específica. El siguiente ejemplo muestra cómo obtener los valores permitidos para el parámetro de clúster ssl_cipher para la versión 2 de Aurora MySQL.

aws rds describe-engine-default-cluster-parameters --db-parameter-group-family aurora-mysql5.7 ...some output truncated... { "ParameterName": "ssl_cipher", "ParameterValue": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384,ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384", "Description": "The list of permissible ciphers for connection encryption.", "Source": "system", "ApplyType": "static", "DataType": "list", "AllowedValues": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384,ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384", "IsModifiable": true, "SupportedEngineModes": [ "provisioned" ] }, ...some output truncated...

Para obtener más información sobre los cifrados, consulte la variable ssl_cipher en la documentación de MySQL. Para obtener más información sobre los formatos de conjuntos de cifrado, consulte la documentación sobre Formato de cadena openssl-ciphers y Formato de cadena openssl-ciphers en el sitio web de OpenSSL.

Cifrado de conexiones a un clúster de base de datos de Aurora MySQL

Para cifrar las conexiones utilizando el cliente mysql predeterminado, lance el cliente mysql utilizando el parámetro --ssl-ca para hacer referencia a la clave pública. Por ejemplo:

Para MySQL 5.7 y 8.0:

mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com --ssl-ca=full_path_to_CA_certificate --ssl-mode=VERIFY_IDENTITY

Para MySQL 5.6:

mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com --ssl-ca=full_path_to_CA_certificate --ssl-verify-server-cert

Reemplace full_path_to_CA_certificate por la ruta completa del certificado de entidad de certificación (CA). Para obtener más información acerca de cómo descargar un certificado, consulte Uso de SSL/TLS para cifrar una conexión a un clúster de base de datos.

Puede exigir conexiones TLS para determinadas cuentas de usuarios. Por ejemplo, puede utilizar una de las siguientes instrucciones, dependiendo de su versión de MySQL, para exigir el uso de conexiones TLS en la cuenta de usuario encrypted_user.

Para MySQL 5.7 y 8.0:

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

Para MySQL 5.6:

GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL;

Cuando utiliza RDS Proxy, se conecta al punto de conexión del proxy en lugar del punto de conexión del clúster habitual. Puede hacer que SSL/TLS sea obligatorio u opcional para las conexiones al proxy, de la misma manera que para las conexiones directamente al clúster de base de datos de Aurora. Para obtener información sobre el uso RDS Proxy, consulte Uso de Amazon RDS Proxy para Aurora.

nota

Para obtener más información acerca de las conexiones TLS con MySQL, consulte la documentación de MySQL.