¿Por qué no puedo conectarme a mi instancia de base de datos de Amazon RDS o Amazon Aurora a través de RDS Proxy?

8 minutos de lectura
0

No puedo conectarme a mi instancia de base de datos de Amazon Relational Database Service (Amazon RDS) o de Amazon Aurora a través de Amazon RDS Proxy.

Breve descripción

Existen diversos motivos por los que se pueden producir errores de conexión con RDS Proxy. Los siguientes problemas son causas habituales de errores de conexión con RDS Proxy, incluso cuando este se encuentra en estado Disponible:

  • Las reglas del grupo de seguridad, ya sea en la instancia de base de datos o en RDS Proxy, impiden la conexión.
  • RDS Proxy solo funciona dentro de una nube virtual privada (VPC), por lo que las conexiones desde fuera de la red privada fallan.
  • La instancia de base de datos no acepta la conexión debido a una modificación o porque no se encuentra disponible.
  • En el modo de nombre de usuario y contraseña nativos: ha utilizado credenciales de autenticación incorrectas.
  • En caso de autenticación de bases de datos de AWS Identity and Access Management (IAM): el usuario o rol de IAM asociado al cliente no tiene autorización para conectarse con RDS Proxy.

Solución

Nota: Si utiliza RDS Proxy con una instancia de base de datos de RDS o un clúster de base de datos de Aurora que usa la autenticación de IAM, todos los usuarios deberán autenticar sus conexiones. Asegúrese de que todos los usuarios que se conecten a través de un proxy autentiquen su conexión con nombres de usuario y contraseñas. Consulte Configuración de políticas de AWS Identity and Access Management (IAM) para obtener más información sobre la compatibilidad de RDS Proxy con IAM.

Comprobación de si el cliente puede acceder a RDS Proxy dentro de la red privada de una VPC

RDS Proxy solo se puede usar dentro de una VPC, no se puede acceder a él públicamente (aunque sí se puede acceder a la instancia de base de datos). Si se conecta desde fuera de una red privada, se agotará el tiempo de espera de la conexión. Tenga en cuenta los siguientes atributos si desea establecer una conexión dentro de una VPC:

  • Si el cliente proviene de la misma VPC, compruebe si el grupo de seguridad de RDS Proxy permite conexiones desde el cliente en el puerto predeterminado. Los puertos predeterminados son 3306 para MySQL y 5432 para PostgreSQL. Añada reglas al grupo de seguridad asociado a la VPC para permitir el tráfico necesario.
  • Si el cliente es de otra VPC, utilice la interconexión de VPC. Para administrar el tráfico de la otra VPC, revise el grupo de seguridad y las tablas de enrutamiento.
  • Si su cliente pertenece a una red corporativa, utilice AWS Direct Connect o AWS Site-to-Site VPN para conectarse directamente a la VPC.
  • Si su cliente debe conectarse a través de la red pública Internet, utilice el túnel de SSH como host intermedio. Esto le permitirá conectarse a RDS Proxy dentro de la misma VPC.

Comprobación de si RDS Proxy puede conectarse con la instancia de base de datos

Para administrar el grupo de conexiones, RDS Proxy debe establecer una conexión con la instancia de base de datos. Esta conexión utiliza el nombre de usuario y la contraseña almacenados en AWS Secrets Manager. Siga las siguientes prácticas recomendadas para asegurarse de que RDS Proxy pueda conectarse a su instancia de base de datos:

  • Compruebe si las credenciales en Secrets Manager son válidas y permiten conectarse a la instancia de base de datos.
  • Asegúrese de que el grupo de seguridad de la instancia de base de datos permita el tráfico desde RDS Proxy. Para ello, determine primero el grupo de seguridad de la instancia de base de datos y de RDS Proxy.

Si RDS Proxy y la instancia de base de datos utilizan el mismo grupo de seguridad, compruebe que la regla de herencia del grupo de seguridad figure en las reglas de entrada:

Inbound rules for the RDS instance in order to allow connections from RDS proxy:
Protocol : TCP
Port Range : Port on which the DB engine is running on the RDS instance
Source : Common security group (for self referencing the security group)

Si se usan grupos de seguridad diferentes, mencione el grupo de seguridad de RDS Proxy en la regla de entrada del grupo de seguridad de la instancia de base de datos:

Inbound rules for the RDS instance in order to allow connections from RDS proxy:
Protocol : TCP
Port range : Port on which the DB engine is running on the DB instance
Source : Security group of RDS Proxy

RDS Proxy inicia la conexión para administrar el grupo. Por lo tanto, debe permitir que el tráfico de salida llegue a la instancia de base de datos. Para ello, el grupo de seguridad de RDS Proxy debe permitir el tráfico necesario en su regla de salida:

Protocol : TCP
Port range : Port on which the DB engine is running on the RDS instance
Destination : Security group of DB instance

Note: If you already have the following outbound rules attached to the security group of the RDS Proxy, then there is no need to explicitly add the security group.
Outbound rules: ALL --- 0.0.0.0/0

El rol de IAM debe tener la política de confianza de rds.amazonaws.com.

La política de IAM debe tener acceso para ejecutar la acción secretsmanager:GetSecretValue en el secreto.

La política de IAM debe tener acceso para ejecutar la acción kms:Decrypt en la clave de AWS Key Management Service (AWS KMS) con la que se haya cifrado el secreto. Encontrará los detalles de la clave de KMS que utiliza Secrets Manager en la consola de AWS KMS. Tenga en cuenta que el ID de la clave de KMS se debe utilizar en la sección Resource. Observe el siguiente ejemplo de política:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": [
        "arn:aws:secretsmanager:region:account_id:secret:secret_name"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:region:account_id:key/key_id",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "secretsmanager.region.amazonaws.com"
        }
      }
    }
  ]
}

Nota: Asegúrese de reemplazar account_id, secret_name, region, account_id y key_id por los valores relevantes en su caso.

  • Para obtener más información sobre los problemas que podrían impedir que el proxy se conecte a la instancia de base de datos, ejecute el comando describe-db-proxy-targets. A continuación, revise la estructura de TargetHealth en la salida. Revise los campos Estado, Motivo y Descripción para obtener más información sobre el estado de la conexión del destino de RDS Proxy:
aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME

Para obtener más información, consulte Verificación de la conectividad para un proxy.

Comprobación de si la instancia de base de datos acepta conexiones actualmente

Revise el estado actual de la instancia de base de datos y confirme que se encuentra DISPONIBLE. Para obtener más información sobre cómo revisar el estado de la instancia de base de datos, consulte los estados de instancia de base de datos en la documentación de Amazon RDS y Aurora.

Comprobación de si el usuario o rol de IAM está asociado a un cliente con los permisos necesarios

Nota: Este paso solo es necesario si ha activado la autenticación de base de datos de IAM en RDS Proxy.

El cliente debe generar un token para autorizar la solicitud de conexión. Para ello, el usuario de IAM y el rol de IAM asociados a este cliente deben tener la política de IAM rds-db:connect. Además, asegúrese de utilizar el ID de RDS Proxy en el ARN para el atributo Resource de la política:

"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"

Para obtener más información, consulte Creación y uso de una política de IAM para el acceso a bases de datos de IAM.

Revisión de los registros de RDS Proxy

Active la función Registro mejorado de RDS Proxy. El registro proporciona información detallada sobre las instrucciones SQL. Estos registros son un recurso útil, ya que le ayudan a comprender algunos problemas de autenticación. Dado que incrementan la sobrecarga de rendimiento, se recomienda activarlos solo para depurar errores. Para minimizar la sobrecarga, RDS Proxy desactiva automáticamente esta configuración 24 horas después de activarla.

Información relacionada

Uso de Amazon RDS Proxy

Set up shared database connections with Amazon RDS Proxy