Conexión a una base de datos mediante RDS Proxy - Amazon Relational Database Service

Conexión a una base de datos mediante RDS Proxy

La forma en que se conecta a una instancia de base de datos de RDS a través de un proxy es generalmente la misma que para conectarla directamente a la base de datos. Para obtener más información, consulte Información general de los puntos de enlace de proxy.

Conexión a un proxy mediante autenticación nativa

Utilice los siguientes pasos para conectarse a un proxy mediante autenticación nativa:

  1. Buscar el punto de enlace del proxy. En la AWS Management Console, puede encontrar el punto de enlace en la página de detalles del proxy correspondiente. Con la AWS CLI, puede usar el comando describe-db-proxies. El siguiente ejemplo muestra cómo.

    # Add --output text to get output as a simple tab-separated list. $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}' [ [ { "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy" }, { "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-other-secret" }, { "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-rds-secret" }, { "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-t3" } ] ]
  2. Especifique el punto de conexión como parámetro del host en la cadena de conexión de la aplicación cliente. Por ejemplo, especifique el punto de enlace del proxy como el valor para la opción mysql -h o la opción psql -h.

  3. Proporcione el mismo nombre de usuario y contraseña de la base de datos como suele hacer.

Conexión a un proxy mediante autenticación de IAM

Cuando utilice la autenticación de IAM con RDS Proxy, configure los usuarios de base de datos para que se autentiquen con nombres de usuario y contraseñas normales. La autenticación de IAM se aplica a RDS Proxy mediante la recuperación del nombre de usuario y las credenciales de contraseña de Secrets Manager. La conexión desde RDS Proxy a la base de datos subyacente no pasa a través de IAM.

Para conectarse a RDS Proxy utilizando la autenticación de IAM, utilice el mismo procedimiento general de conexión que para la autenticación de IAM con una instancia de base de datos de RDS. Para obtener más información acerca del uso de la IAM, consulte Seguridad en Amazon RDS.

Las principales diferencias en el uso de IAM para RDS Proxy incluyen las siguientes:

  • No se configura cada usuario de base de datos individual con un complemento de autorización. Los usuarios de la base de datos todavía tienen nombres de usuario y contraseñas regulares dentro de la base de datos. Se configuran los secretos de Secrets Manager que contienen estos nombres de usuario y contraseñas y se autoriza al RDS Proxy para recuperar las credenciales de Secrets Manager.

    La autenticación IAM se aplica a la conexión entre el programa cliente y el proxy. A continuación, el proxy se autentica en la base de datos utilizando las credenciales de nombre de usuario y contraseña recuperadas de Secrets Manager.

  • En lugar del punto de enlace de instancia, clúster o lector, se especifica el punto de enlace del proxy. Para obtener detalles sobre el punto de enlace del proxy, consulte Conexión a la instancia con la autenticación de IAM.

  • En el caso de autenticación de IAM de la base de datos directa, se eligen de forma selectiva los usuarios de la base de datos y se configuran para que se identifiquen con un complemento de autenticación especial. Puede conectarse a esos usuarios mediante la autenticación de IAM.

    En el caso de uso del proxy, proporciona al proxy secretos que contengan el nombre de usuario y la contraseña de algún usuario (autenticación nativa). A continuación, se conecta al proxy mediante la autenticación de IAM. Aquí, puede hacerlo al generar un token de autenticación con el punto de conexión del proxy, no el punto de conexión de la base de datos. También utiliza un nombre de usuario que coincida con uno de los nombres de usuario de los secretos que proporcionó.

  • Asegúrese de que usa Transport Layer Security (TLS)/Capa de sockets seguros (SSL) cuando se conecte a un proxy mediante la autenticación de IAM.

Puede conceder acceso al proxy a un usuario específico modificando la política de IAM. Ejemplo:

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

Consideraciones para conectarse a un proxy con Microsoft SQL Server

Para conectarse a un proxy mediante la autenticación de IAM, no utilice el campo de contraseña. En su lugar, debe proporcionar la propiedad de token adecuada para cada tipo de controlador de base de datos en el campo token. Por ejemplo, utilice la propiedad accessToken para JDBC o la propiedad sql_copt_ss_access_token para ODBC. O utilice la propiedad AccessToken del controlador .NET SqlClient. No puede usar la autenticación de IAM con clientes que no admitan propiedades de token.

En algunas condiciones, un proxy no puede compartir una conexión de base de datos y, en cambio, vincula la conexión de la aplicación cliente al proxy a una conexión de base de datos dedicada. Para más información sobre estas condiciones, consulte Cómo evitar la fijación de RDS Proxy.

Consideraciones para conectarse a un proxy con PostgreSQL

Para PostgreSQL, cuando un cliente comienza una conexión a una base de datos de PostgreSQL, envía un mensaje de inicio. Este mensaje incluye pares de cadenas de nombres y valores de parámetros. Para obtener detalles, consulte StartupMessage en Formatos de mensaje de PostgreSQL en la documentación de PostgreSQL.

Al conectarse a través de un proxy de RDS, el mensaje de inicio puede incluir los siguientes parámetros reconocidos actualmente:

  • user

  • database

El mensaje de inicio también puede incluir los siguientes parámetros de tiempo de ejecución adicionales:

Para obtener más información acerca de la mensajería de PostgreSQL, consulte el Protocolo Frontend/Backend en la documentación de PostgreSQL.

Para PostgreSQL, si usa JDBC, recomendamos lo siguiente para evitar la fijación:

  • Establezca el parámetro de conexión JDBC assumeMinServerVersion en al menos 9.0 para evitar la fijación. Esto evita que el controlador JDBC realice un viaje de ida y vuelta adicional durante el inicio de la conexión cuando se ejecuta SET extra_float_digits = 3.

  • Establezca el parámetro de conexión JDBC ApplicationName en any/your-application-name para evitar la fijación. Al hacerlo, se evita que el JDBC driver realice un viaje de ida y vuelta adicional durante el inicio de la conexión cuando se ejecuta SET application_name = "PostgreSQL JDBC Driver". Tenga en cuenta que el parámetro JDBC es ApplicationName pero el parámetro StartupMessage de PostgreSQL es application_name.

Para obtener más información, consulte Cómo evitar la fijación de RDS Proxy. Para obtener más información acerca de la conexión mediante JDBC, consulte Conexión a la base de datos en la documentación de PostgreSQL.