Saltar al contenido

¿Cómo puedo usar una instancia de Amazon EC2 como host bastión para conectarme a una instancia de base de datos privada de Amazon RDS desde un equipo local?

7 minutos de lectura
0

Quiero usar una instancia de Amazon Elastic Compute Cloud (Amazon EC2) como host bastión (salto) para conectarme a una instancia de base de datos privada de Amazon Relational Database Service (Amazon RDS) desde un equipo local.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Para conectarte a una instancia de base de datos privada de Amazon RDS o Amazon Aurora, se recomienda utilizar una VPN o AWS Direct Connect. Si no puedes usar ninguna de las dos opciones, usa un host bastión.

El siguiente ejemplo de configuración es para una instancia de Amazon RDS para MySQL que se encuentra en una Amazon Virtual Private Cloud (Amazon VPC). El ejemplo usa grupos de seguridad para restringir el acceso. Sin embargo, puedes restringir la lista de control de acceso de la red (ACL de la red) de las subredes para que la conexión sea más segura.

Inicio y configuración de la instancia de EC2

Sigue estos pasos:

  1. Abre la consola de Amazon EC2 y, a continuación, selecciona Iniciar instancia.
  2. Selecciona una imagen de máquina de Amazon (AMI).
  3. Elige un tipo de instancia y, a continuación, selecciona Siguiente: Configuración de los detalles de la instancia.
  4. En Red, elige la VPC que usa la instancia de base de datos de Amazon RDS.
  5. En Subred, selecciona la subred privada en la VPC.
  6. Elige Siguiente: Agregar almacenamiento y, a continuación, modifica el almacenamiento según sea necesario.
  7. Elige Siguiente: Agregar etiquetas y, a continuación, añade etiquetas según sea necesario.
  8. Elige Siguiente: Configurar grupo de seguridad.
  9. Selecciona Agregar regla y, a continuación, introduce los valores siguientes:
    En Tipo, introduce Regla TCP personalizada . En Protocolo, escribe TCP
    En Intervalo de puertos, introduce 22 . En Origen, introduce el grupo de seguridad que utiliza el punto de enlace de conexión de Amazon EC2.
  10. Elige Revisar e iniciar y, a continuación, Iniciar.

Configuración de los grupos de seguridad de la instancia de base de datos de Amazon RDS

Nota: Para conectar automáticamente una o más instancias de EC2 a una base de datos de Amazon RDS, consulta Conexión automática de una instancia a una base de datos de RDS con la consola de RDS.

Sigue estos pasos:

  1. Abre la consola de Amazon RDS.
  2. En el panel de navegación, selecciona Bases de datos.
  3. Elige el nombre de la instancia de base de datos de Amazon RDS. Si aún no tienes una, crea una instancia de base de datos de RDS.
  4. Elige Conectividad y seguridad.
  5. En la sección Seguridad, elige el enlace que se encuentra debajo de Grupos de seguridad de VPC.
  6. Selecciona el grupo de seguridad, elige Acciones y, a continuación, elige Editar reglas de entrada.
  7. Selecciona Agregar regla y, a continuación, introduce los valores siguientes:
    En Tipo, introduce Regla TCP personalizada . En Protocolo, escribe TCP
    En Intervalo de puertos, introduce el puerto de la instancia de base de datos de Amazon RDS.
    En Origen, introduce la dirección IP privada de la instancia de EC2.
  8. Selecciona Guardar.

Esta configuración del grupo de seguridad permite el tráfico desde la dirección IP privada de la instancia de EC2. Si la instancia de EC2 y la instancia de base de datos de Amazon RDS utilizan la misma VPC, no es necesario que modifiques la tabla de enrutamiento de la instancia de base de datos de Amazon RDS. Si la VPC es diferente, crea una conexión de emparejamiento de VPC para permitir las conexiones entre esas VPC.

Nota: Si usas una solución más escalable, revisa la configuración. Por ejemplo, si usas el ID del grupo de seguridad en una regla de grupo de seguridad, asegúrate de que no restrinja el acceso a una instancia. En su lugar, configura la regla para restringir el acceso a cualquier recurso que utilice el ID de grupo de seguridad específico.

Creación de un punto de enlace de conexión de instancias de EC2

  1. Abre la consola de Amazon VPC.
  2. En el panel de navegación, elige Puntos de enlace.
  3. Elige Crear punto de enlace y, a continuación, especifica la configuración del punto de enlace.
    (Opcional) En Etiqueta de nombre, introduce un nombre para el punto de enlace.
    En Categoría de servicio, elige Punto de enlace de conexión de instancia de EC2.
    En VPC, selecciona la VPC que tenga las instancias de destino.
    (Opcional) Para conservar las direcciones IP de los clientes, expande Configuración adicional y selecciona la casilla de verificación. De lo contrario, la opción predeterminada es utilizar la interfaz de red del punto de enlace como dirección IP del cliente.
    En Grupos de seguridad, selecciona el grupo de seguridad que deseas asociar al punto de enlace. De lo contrario, la opción predeterminada es usar el grupo de seguridad predeterminado para la VPC.
    En Subred, selecciona la subred en la que deseas crear el punto de enlace.
    (Opcional) Para agregar una etiqueta, selecciona Agregar nueva etiqueta e introduce la clave y el valor de la etiqueta.
  4. Revisa la configuración y, a continuación, selecciona Crear punto de enlace.
  5. El estado inicial del punto de enlace es Pendiente. Para conectarte a una instancia, debes esperar hasta que el estado del punto de enlace sea Disponible. Este proceso puede tardar unos minutos.

Conexión a la instancia de base de datos de RDS desde el equipo local

Nota: Debes tener acceso a la AWS CLI.

Para conectarte desde el cliente MySQL local a una instancia de RDS privada a través de un túnel SSH, sigue estos pasos:
Linux o macOS

  1. Ejecuta el siguiente comando para abrir un túnel desde el equipo local hasta la instancia de EC2:

    aws ec2-instance-connect open-tunnel --instance-id ec2-instance-ID --local-port 8888

    Nota: Sustituye ec2-instance-ID por el ID de instancia de EC2.

  2. Abre una segunda conexión y ejecuta el siguiente comando para crear un túnel SSH desde el host local hasta la base de datos de RDS a través de una instancia de EC2:

    ssh -i YOUR_EC2_KEY EC2_USER@EC2_HOST -p EC2_TUNNEL_PORT -L LOCAL_PORT:RDS_ENDPOINT:REMOTE_PORT -N -f

    Nota: Sustituye los siguientes valores:
    YOUR_EC2_KEY por la ruta al archivo de clave privada de EC2 . EC2_USER por el nombre de usuario de la instancia de EC2 . EC2_HOST por el nombre de host de la instancia de EC2 . EC2_TUNNEL_PORT por el puerto que has configurado . LOCAL_PORT por un puerto sin usar en el equipo local . RDS_ENDPOINT por el punto de enlace de la instancia de RDS . REMOTE_PORT por el puerto que usa la base de datos de Amazon RDS en la instancia de RDS.

  3. Utiliza una tercera conexión y ejecuta el siguiente comando para conectarte a la instancia de Amazon RDS desde el equipo local:

    mysql -h 127.0.0.1 -P LOCAL_PORT -u RDS_USER -p

    Nota: Sustituye los siguientes valores:
    LOCAL_PORT por el número del puerto local . DB_USER por el nombre de usuario de la base de datos de RDS . Contraseña de base de datos por la contraseña de base de datos de Amazon RDS.

Información relacionada

¿Cómo puedo solucionar los problemas de conexión con la instancia de base de datos de Amazon RDS?

Lanzamiento de una instancia de Amazon EC2

¿Cómo puedo conectarme a una instancia de base de datos privada de Amazon RDS desde un equipo local con una instancia de Amazon EC2 que actúe como un host bastión?