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 VPCdedicated
, 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 Amazon Aurora. Para obtener más información acerca de la tenencia de VPC
default
ydedicated
, 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
ySET 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 cuentasen 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.
En las siguientes secciones, consulte la información sobre los permisos de usuario para las conexiones Aurora MySQL y TLS con clústeres de base de datos de Aurora MySQL.
Temas
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).
Conexiones TLS a 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)
Temas
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 Grupos de parámetros para Amazon Aurora.
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 los parámetros en un grupo de parámetros de clúster de base de datos en Amazon Aurora. 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.
Cifrado | Protocolo de cifrado | Versiones compatibles con Aurora MySQL |
---|---|---|
| TLS 1.0 | 3.01.0 y versiones anteriores a 3.04.0; todas las versiones anteriores a 2.11.0 |
| TLS 1.2 | 3.01.0 y versiones anteriores a 3.04.0; todas las versiones anteriores a 2.11.0 |
| TLS 1.2 | 3.01.0 y versiones anteriores a 3.04.0; todas las versiones anteriores a 2.11.0 |
| TLS 1.0 | 3.03.0 y versiones anteriores, todas las versiones anteriores a 2.11.0 |
| TLS 1.2 | 3.01.0 y versiones anteriores a 3.04.0; todas las versiones anteriores a 2.11.0 |
| TLS 1.2 | 3.01.0 y versiones anteriores a 3.04.0; todas las versiones anteriores a 2.11.0 |
| TLS 1.0 | 3.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores |
| TLS 1.2 | 3.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores |
| TLS 1.2 | 3.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores |
| TLS 1.0 | 3.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores |
| TLS 1.2 |
3.01.0 y versiones anteriores a 3.04.0, 2.09.3 (y versiones posteriores) y 2.10.2 (y versiones posteriores) |
|
TLS 1.2 |
3.01.0 y versiones posteriores, 2.09.3 y versiones posteriores, 2.10.2 y versiones posteriores |
|
TLS 1.2 |
3.01.0 y versiones posteriores |
|
TLS 1.2 |
3.01.0 y versiones posteriores |
|
TLS 1.2 |
3.04.0 y versiones posteriores y 2.11.0 y versiones posteriores |
| TLS 1.3 | 3.04.0 y versiones posteriores |
| TLS 1.3 | 3.04.0 y versiones posteriores |
| TLS 1.3 | 3.04.0 y versiones posteriores |
nota
Los cifrados DHE-RSA
solo son compatibles con las versiones de Aurora MySQL anteriores a 2.11.0 en Aurora MySQL 2, así como en las versiones anteriores a 3.04.0 en Aurora MySQL 3.
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 los parámetros en un grupo de parámetros de clúster de base de datos en Amazon Aurora. 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-clúster-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
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