Creación de un RDS Proxy - Amazon Relational Database Service

Creación de un RDS Proxy

Para administrar conexiones para un conjunto especificado de instancias de base de datos, puede crear un proxy. Puede asociar un proxy con una instancia de base de datos de RDS para MariaDB, RDS para Microsoft SQL Server, RDS para MySQL o RDS para PostgreSQL.

Para crear un proxy
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación, seleccione Proxies.

  3. Elija Create proxy (Crear proxy).

  4. Elija todos los ajustes para su proxy.

    Para Configuración del proxy, proporcione información sobre lo siguiente:

    • Engine family (Familia de motores). Este valor determina qué protocolo de red de base de datos reconoce el proxy cuando interpreta el tráfico de red hacia y desde la base de datos. Para RDS para MariaDB o RDS para MySQL, elija MariaDB and MySQL (MariaDB y MySQL). Para RDS para PostgreSQL, elija PostgreSQL. Para RDS para SQL Server, elija SQL Server.

    • Proxy identifier (Identificador de proxy. Especifique un nombre que sea único dentro de su ID de cuenta de AWS y de la región de AWS actual.

    • Idle client connection timeout (Tiempo de espera de inactividad de conexión de cliente. Elija un período de tiempo en el que una conexión de cliente puede estar inactiva antes de que el proxy la cierre. El valor predeterminado es 1800 segundos (30 minutos). Una conexión de cliente se considera inactiva cuando la aplicación no envía una nueva solicitud dentro del plazo especificado después de completar la solicitud anterior. La conexión de base de datos subyacente permanece abierta y se devuelve al grupo de conexiones. Por lo tanto, está disponible para reutilizarla para nuevas conexiones de cliente.

      Para que el proxy elimine de forma proactiva las conexiones obsoletas, reduzca el tiempo de espera de conexión de cliente inactivo. Si la carga de trabajo está aumentando, aumente el tiempo de espera de la conexión del cliente inactivo para ahorrar el costo del establecimiento de conexiones.

    Para Configuración del grupo de destino, proporcione información sobre lo siguiente:

    • Database (Base de datos. Elija una instancia de base de datos de RDS para acceder a través de este proxy. La lista solo incluye instancias de base de datos y clústeres con motores de base de datos compatibles, versiones de motor y otras configuraciones. Si la lista está vacía, cree una nueva instancia de base de datos o clúster que sea compatible con RDS Proxy. Para ello, siga el procedimiento en Creación de una instancia de base de datos de Amazon RDS. A continuación, intente volver a crear el proxy.

    • Connection pool maximum connections (Conexiones máximas de grupo de conexión. Especifique un valor comprendido entre 1 y 100. Esta configuración representa el porcentaje del valor max_connections que RDS Proxy se puede utilizar para sus conexiones. Si solo tiene la intención de utilizar un proxy con esta instancia de base de datos o clúster, puede establecer este valor en 100. Para obtener información detallada sobre cómo utiliza RDS Proxy esta configuración, consulte MaxConnectionsPercent.

    • Session pinning filters (Filtros de fijación de sesión. (Opcional) Esta opción le permite forzar RDS Proxy a no fijar determinados tipos de estados de sesión detectados. De este modo se eluden las medidas de seguridad predeterminadas para multiplexar las conexiones de bases de datos en las conexiones del cliente. Actualmente, la configuración no es compatible con PostgreSQL. La única opción es EXCLUDE_VARIABLE_SETS.

      Si se habilita esta configuración, es posible que las variables de sesión de una conexión afecten a otras conexiones. Esto puede provocar errores o problemas de corrección si las consultas dependen de valores de variables de sesión establecidos fuera de la transacción actual. Considere la posibilidad de utilizar esta opción después de comprobar que sea seguro que sus aplicaciones compartan conexiones de bases de datos en las conexiones del cliente.

      Los siguientes patrones pueden considerarse seguros:

      • Instrucciones SET en las que no hay ningún cambio en el valor de la variable de sesión efectiva, es decir, no hay ningún cambio en la variable de sesión.

      • Cambia el valor de la variable de sesión y ejecuta una instrucción en la misma transacción.

      Para obtener más información, consulte Cómo evitar la fijación de RDS Proxy.

    • Connection borrow timeout (Tiempo de espera de préstamo de conexión. En algunos casos, es posible que espere que el proxy use a veces todas las conexiones de base de datos disponibles. En esos casos, puede especificar cuánto tiempo espera el proxy a que una conexión a la base de datos esté disponible antes de devolver un error de tiempo de espera. Puede especificar un periodo de hasta cinco minutos como máximo. Esta configuración solo se aplica cuando el proxy tiene el número máximo de conexiones abiertas y todas las conexiones ya están en uso.

    • Consutla de inicialización. Añada una consulta de inicialización o modifique la actual (opcional). Puede especificar una o más instrucciones de SQL para que el proxy se ejecute al abrir cada nueva conexión de base de datos. Normalmente, el ajuste se utiliza con instrucciones de SET para garantizar que cada conexión tenga una configuración idéntica. Asegúrese de que la consulta que añada sea válida. Para incluir varias variables en una única instrucción de SET, utilice separadores de coma. Por ejemplo:

      SET variable1=value1, variable2=value2

      Para varias instrucciones, utilice punto y coma como separador.

    Para Authentication (Autenticación), proporcione información sobre lo siguiente:

    • IAM role (Rol de IAM. Elija un rol de IAM que tenga permiso para acceder a los secretos de Secrets Manager que eligió anteriormente. También puede crear un rol de IAM desde la AWS Management Console.

    • Secretos de Secrets Manager. Elija al menos un secreto de Secrets Manager que contenga credenciales de usuario de base de datos que permita al proxy acceder a la instancia de base de datos de RDS.

    • Client authentication type (Tipo de autenticación de cliente). Elija el tipo de autenticación que utiliza el proxy para las conexiones desde los clientes. Su elección se aplica a todos los secretos de Secrets Manager que asocie a este proxy. Si tiene que especificar un tipo de autenticación de cliente diferente para cada secreto, cree su proxy mediante la AWS CLI o la API.

    • IAM Authentication (Autenticación de IAM). Elija si desea requerir, permitir o no permitir la autenticación de IAM para las conexiones a su proxy. La opción de permiso solo es válida para los proxies de RDS para SQL Server. Su elección se aplica a todos los secretos de Secrets Manager que asocie a este proxy. Si tiene que especificar un tipo de autenticación de IAM diferente para cada secreto, cree su proxy mediante la AWS CLI o la API.

    Para Conectivity (Conectividad), proporcione información sobre lo siguiente:

    • Require Transport Layer Security (Requerir seguridad de capa de transporte. Elija esta configuración si desea que el proxy aplique TLS/SSL para todas las conexiones de cliente. Para una conexión cifrada o no cifrada con un proxy, el proxy utiliza la misma configuración de cifrado cuando realiza una conexión con la base de datos subyacente.

    • Subnets (Subredes. Este campo se rellena previamente con todas las subredes asociadas a la VPC. Puede eliminar las subredes que no necesite para este proxy. Debe dejar al menos dos subredes.

    Proporcionar configuración de conectividad adicional:

    • VPC security group (Grupo de seguridad de VPC. Elija un grupo de seguridad de VPC existente. También puede crear un nuevo grupo de seguridad desde la AWS Management Console. Debe configurar Reglas de entrada para permitir que las aplicaciones accedan al proxy. También debe configurar Reglas de salida para permitir el tráfico desde sus destinos de base de datos.

      nota

      Este grupo de seguridad debe permitir conexiones desde el proxy a la base de datos. El mismo grupo de seguridad se utiliza para la entrada de las aplicaciones al proxy y para la salida del proxy a la base de datos. Por ejemplo, supongamos que utiliza el mismo grupo de seguridad para la base de datos y el proxy. En este caso, asegúrese de especificar que los recursos de ese grupo de seguridad pueden comunicarse con otros recursos del mismo grupo de seguridad.

      Cuando se utiliza una VPC compartida, no se puede utilizar el grupo de seguridad predeterminado para la VPC o uno que pertenezca a otra cuenta. Elija un grupo de seguridad que pertenezca a su cuenta. Si no existe uno, créelo. Para obtener más información acerca de esta limitación, consulte Trabajar con VPC compartidas.

      RDS despliega un proxy en varias zonas de disponibilidad para garantizar una alta disponibilidad. Para habilitar la comunicación entre zonas de disponibilidad para un proxy de este tipo, la lista de control de acceso (ACL) a la red de su subred proxy debe permitir la salida específica del puerto del motor y la entrada de todos los puertos. Para obtener más información acerca de las ACL de red de, consulte Controlar el tráfico hacia las subredes utilizando las ACL de red. Si la ACL de red del proxy y la de destino son idénticas, debe añadir una regla de entrada del protocolo TCP en la que el Origen esté configurado en el CIDR de la VPC. También debe añadir una regla de salida del protocolo TCP específica del puerto del motor en la que el Destino esté configurado en el CIDR de la VPC.

    (Opcional) Proporcionar configuración avanzada:

    • Enable enhanced logging (Habilitación de registro optimizado. Puede habilitar esta configuración para solucionar problemas de compatibilidad de proxy o rendimiento.

      Cuando esta configuración está habilitada, RDS Proxy incluye información detallada sobre rendimiento del proxy en sus registros. Esta información le ayuda a depurar problemas relacionados con el comportamiento SQL o el rendimiento y la escalabilidad de las conexiones proxy. Por lo tanto, solo habilite esta configuración para la depuración y solo cuando disponga de medidas de seguridad para proteger cualquier información confidencial que aparezca en los registros.

      Para minimizar la sobrecarga asociada con el proxy, RDS Proxy desactiva automáticamente esta opción 24 horas después de habilitarla. Habilítela temporalmente para solucionar un problema específico.

  5. Elija Create Proxy (Crear proxy).

Para crear un proxy utilizando el comando AWS CLI, llame al comando create-db-proxy con los siguientes parámetros requeridos:

  • --db-proxy-name

  • --engine-family

  • --role-arn

  • --auth

  • --vpc-subnet-ids

El valor --engine-family distingue entre mayúsculas y minúsculas.

ejemplo

Para Linux, macOS o:Unix

aws rds create-db-proxy \ --db-proxy-name proxy_name \ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \ --auth ProxyAuthenticationConfig_JSON_string \ --role-arn iam_role \ --vpc-subnet-ids space_separated_list \ [--vpc-security-group-ids space_separated_list] \ [--require-tls | --no-require-tls] \ [--idle-client-timeout value] \ [--debug-logging | --no-debug-logging] \ [--tags comma_separated_list]

En:Windows

aws rds create-db-proxy ^ --db-proxy-name proxy_name ^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --auth ProxyAuthenticationConfig_JSON_string ^ --role-arn iam_role ^ --vpc-subnet-ids space_separated_list ^ [--vpc-security-group-ids space_separated_list] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeout value] ^ [--debug-logging | --no-debug-logging] ^ [--tags comma_separated_list]

A continuación se muestra un ejemplo del valor JSON para la opción --auth. Este ejemplo aplica un tipo de autenticación de cliente diferente a cada secreto.

[ { "Description": "proxy description 1", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256" }, { "Description": "proxy description 2", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:secret/1234abcd-12ab-34cd-56ef-1234567890cd", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_MD5" }, { "Description": "proxy description 3", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef", "IAMAuth": "REQUIRED" } ]
sugerencia

Si aún no conoce los ID de subred que utilizar para el parámetro --vpc-subnet-ids, consulte Configuración de requisitos previos de red para RDS Proxy para ver ejemplos de cómo encontrarlos.

nota

Este grupo de seguridad debe permitir el acceso a la base de datos a la que se conecta el proxy. El mismo grupo de seguridad se utiliza para la entrada de las aplicaciones al proxy y para la salida del proxy a la base de datos. Por ejemplo, supongamos que utiliza el mismo grupo de seguridad para la base de datos y el proxy. En este caso, asegúrese de especificar que los recursos de ese grupo de seguridad pueden comunicarse con otros recursos del mismo grupo de seguridad.

Cuando se utiliza una VPC compartida, no se puede utilizar el grupo de seguridad predeterminado para la VPC o uno que pertenezca a otra cuenta. Elija un grupo de seguridad que pertenezca a su cuenta. Si no existe uno, créelo. Para obtener más información acerca de esta limitación, consulte Trabajar con VPC compartidas.

Para crear las asociaciones adecuadas para el proxy, utilice también el comando register-db-proxy-targets. Especifique el nombre de grupo de destino de default. El proxy de RDS crea automáticamente un grupo de destino con este nombre cuando crea cada proxy.

aws rds register-db-proxy-targets --db-proxy-name value [--target-group-name target_group_name] [--db-instance-identifiers space_separated_list] # rds db instances, or [--db-cluster-identifiers cluster_id] # rds db cluster (all instances)

Para crear un proxy de RDS, llame a la operación de la API de Amazon RDS CreateDBProxy. Transfiera un parámetro con la estructura de datos AuthConfig .

El proxy de RDS crea automáticamente un grupo de destino denominado default cuando crea cada proxy. Se asocia una instancia de base de datos de RDS con el grupo de destino llamando a la función RegisterDBProxyTargets.