Creación de un proxy para Amazon Aurora
Puede utilizar Amazon RDS Proxy para mejorar la escalabilidad, la disponibilidad y la seguridad de las aplicaciones de bases de datos agrupando las conexiones y administrando las conmutaciones por error de las bases de datos de forma más eficiente. Este tema le guía por el proceso de creación de un proxy. Antes de empezar, asegúrese de que la base de datos cumpla los requisitos previos necesarios, incluidos los permisos de IAM y la configuración de la VPC.
Puede asociar un proxy con un clúster de base de datos de Aurora MySQL o Aurora PostgreSQL.
Para crear un proxy
-
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/
. -
En el panel de navegación, seleccione Proxies.
-
Elija Create proxy (Crear proxy).
-
Configure los siguientes ajustes para el proxy.
Ajuste Descripción Familia de motores El protocolo de red de base de datos reconoce el proxy cuando interpreta el tráfico de red hacia y desde la base de datos. nota
Para usar Aurora PostgreSQL, asegúrese de retener la base de datos de
postgresen la instancia. Consulte Se ha eliminado la solución de problemas de una base de datos de postgres.Identificador de proxy Un nombre que sea único dentro del ID de cuenta de AWS y de la región de AWS actual. Tiempo de espera de inactividad de conexión de cliente El proxy cierra la conexión de un cliente si permanece inactiva durante un periodo determinado. De forma predeterminada, esto es 1800 segundos (30 minutos). Una conexión se considera inactiva cuando la aplicación no envía una nueva solicitud dentro del plazo especificado después de completar la solicitud anterior. El proxy mantiene abierta la conexión de base de datos subyacente y la devuelve al grupo de conexiones, de modo que esté disponible para nuevas conexiones de clientes.
Para eliminar de forma proactiva las conexiones obsoletas, reduzca el tiempo de espera de conexión de cliente inactivo. Para minimizar los costos de conexión durante los picos de carga de trabajo, aumente el tiempo de espera.
Base de datos Clúster de base de datos de Aurora 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 un clúster de base de datos de Amazon Aurora. A continuación, intente volver a crear el proxy. Conexiones máximas de grupo de conexión Un valor entre 1 y 100 para definir el porcentaje del límite de max_connectionsque RDS Proxy puede utilizar. Si solo tiene la intención de utilizar un proxy con esta instancia de base de datos o clúster, establezca este valor en 100. Para obtener más información sobre cómo RDS Proxy usa esta configuración, consulte MaxConnectionsPercent.Filtros de fijación de sesión Impide que RDS Proxy fije determinados estados de sesión detectados, lo que evita las medidas de seguridad predeterminadas para las conexiones de multiplexación. Actualmente, PostgreSQL no admite esta configuración y la única opción disponible es
EXCLUDE_VARIABLE_SETS. Si se habilita, es posible que las variables de sesión de una conexión afecten a otras, lo que puede provocar errores o problemas de corrección si las consultas dependen de variables de sesión establecidas fuera de la transacción actual. Utilice esta opción solo después de confirmar que las aplicaciones pueden compartir conexiones de bases de datos de forma segura.Los siguientes patrones se consideran seguros:
-
Instrucciones
SETdonde no hay ningún cambio en el valor efectivo de la variable de sesión. En otras palabras, 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.
Tiempo de espera de préstamo de conexión Si espera que el proxy utilice todas las conexiones de base de datos disponibles, establezca el tiempo de espera antes de que devuelva un error de tiempo de espera. Puede especificar hasta cinco minutos. Esta configuración solo se aplica cuando el proxy ha alcanzado el número máximo de conexiones y todas están en uso. Consulta 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
SETpara 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 deSET, utilice separadores de coma. Por ejemplo:SETvariable1=value1,variable2=value2Para varias instrucciones, utilice punto y coma como separador.
importante
Dado que se puede acceder a la consulta de inicialización como parte de la configuración del grupo de destino, no está protegida por métodos de autenticación o criptográficos. Cualquier persona con acceso para ver o administrar la configuración del grupo de destino del proxy puede ver la consulta de inicialización. No debe agregar información confidencial, como contraseñas o claves de cifrado de larga duración, a esta opción.
AWS Identity and Access Management (Rol de (IAM Un rol de IAM con permiso para acceder a los secretos de Secrets Manager, que representan las credenciales de las cuentas de usuario de la base de datos que puede usar el proxy. Otra opción, puede crear un rol de IAM nuevo desde la Consola de administración de AWS.
Secretos de Secrets Manager Cree o elija secretos de Secrets Manager que representen las credenciales de las cuentas de los usuarios de bases de datos que pueden usar el proxy.
Si el esquema de autenticación predeterminado está establecido en Ninguno, este campo es obligatorio. Cuando el esquema de autenticación predeterminado se establece en la autenticación de IAM, este campo pasa a ser opcional y se marca como tal en la consola.
Puede elegir uno o más secretos del menú desplegable o crear uno nuevo mediante el enlace Crear un nuevo secreto.
Tipo de autenticación de cliente El tipo de autenticación que utiliza el proxy para las conexiones de 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. Especifique esta opción solo cuando la conexión del cliente utilice las credenciales de la base de datos para la autenticación. Autenticación de IAM Especifique Obligatorio o No Permitido para la autenticación de IAM para las conexiones al proxy. 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. Esquema de autenticación predeterminado Elija el tipo de autenticación predeterminado que utiliza el proxy para las conexiones del cliente al proxy y las conexiones del proxy a la base de datos subyacente. Dispone de las opciones siguientes:
Ninguno (predeterminado): el proxy recupera las credenciales de la base de datos de los secretos de Secrets Manager.
Autenticación de IAM: el proxy utiliza la autenticación de IAM para conectarse a la base de datos, lo que permite la autenticación de IAM integral.
Al seleccionar la autenticación de IAM, aparece una alerta de información que le recuerda que debe habilitar la autenticación de las bases de datos de IAM para las bases de datos de la configuración del grupo de destino.
nota
Esta opción solo es compatible con familias de motor de MySQL, PostgreSQL y MariaDB.
Cuentas de base de datos para la autenticación de IAM Este campo solo aparece cuando el esquema de autenticación predeterminado está establecido en la autenticación de IAM y el rol de Identity and access management (IAM) está establecido en Crear un rol de IAM.
Asigne un nombre a las cuentas de usuario de la base de datos para que el proxy las utilice con la autenticación de IAM. Este campo es obligatorio. Especifique varias cuentas de la siguiente manera:
Escribiendo la escritura de un nombre de usuario de la base de datos para agregarlo como etiqueta
Usando nombres de usuario de bases de datos específicos (por ejemplo,
db_user,jane_doe)Usando patrones comodín para varios usuarios (por ejemplo,
db_test_*)
Cada cuenta aparece como una etiqueta extraíble que puede eliminar haciendo clic en el icono X. La consola utiliza estos valores para crear los permisos
rds-db:connectadecuados en la política del rol de IAM.Requerir seguridad de capa de transporte Aplica TLS/SSL para todas las conexiones de cliente. El proxy utiliza la misma configuración de cifrado para su conexión a la base de datos subyacente, si la conexión del cliente se cifra o no se cifra.
Tipo de red de conexión de destino La versión de IP que utiliza el proxy para conectarse a la base de datos de destino. Puede elegir entre las siguientes opciones:
-
IPv4: el proxy se conecta a la base de datos mediante direcciones IPv4.
-
IPv6: el proxy se conecta a la base de datos mediante direcciones IPv6.
El valor predeterminado es IPv4. Para utilizar IPv6, la base de datos debe admitir el modo de pila doble. El modo de doble pila no está disponible para conexiones de destino.
Tipo de red de punto de conexión La versión de IP del punto de conexión del proxy que los clientes utilizan para conectarse al proxy. Puede elegir entre las siguientes opciones:
-
IPv4: el punto de conexión del proxy utiliza solo direcciones IPv4.
-
IPv6: el punto de conexión del proxy utiliza solo direcciones IPv6.
-
Doble pila: el punto de conexión del proxy admite direcciones IPv4 y IPv6.
El valor predeterminado es IPv4. Para usar IPv6 o de doble pila, la VPC y las subredes deben estar configuradas para admitir el tipo de red seleccionado.
Subredes Este campo se rellena previamente con todas las subredes asociadas a la VPC. Puede eliminar cualquier subred que no sea necesaria para el proxy, pero debe dejar al menos dos subredes. Para los tipos de redes de punto de conexión de IPv6 o de doble pila, asegúrese de que las subredes seleccionadas admitan el tipo de red elegido.
VPC security group (Grupo de seguridad de VPC Elija un grupo de seguridad de VPC existente o cree uno nuevo desde la Consola de administración de AWS. Configure las reglas de entrada para permitir que las aplicaciones accedan al proxy y las reglas de salida para permitir el tráfico desde los destinos de base de datos.
nota
El grupo de seguridad debe permitir conexiones desde el proxy a la base de datos. Sirve para la entrada de las aplicaciones al proxy y para la salida del proxy a la base de datos. Por ejemplo, si utiliza el mismo grupo de seguridad para la base de datos y el proxy, asegúrese de que los recursos dentro de ese grupo de seguridad puedan comunicarse entre sí.
Cuando se utiliza una VPC compartida, evite el uso del grupo de seguridad predeterminado para la VPC o uno asociado a otra cuenta. En su lugar, elija un grupo de seguridad que pertenezca a la cuenta. Si no existe ninguno, créelo. Para obtener más informació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, la lista de control de acceso (ACL) a la red de la subred del proxy debe permitir la salida específica en el puerto del motor y la entrada en 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.
Activación del registro mejorado Habilite esta configuración para solucionar problemas de compatibilidad de proxy o rendimiento. Cuando está habilitado, RDS Proxy registra información sobre el rendimiento detallada para ayudarle a depurar el comportamiento de SQL o el rendimiento y la escalabilidad de la conexión del proxy.
Habilite esta configuración solo para la depuración y asegúrese de que existan las medidas de seguridad adecuadas para proteger la información confidencial en los registros. Para minimizar la sobrecarga, RDS Proxy desactiva automáticamente esta configuración 24 horas después de la activación. Úsela temporalmente para solucionar problemas específicos.
-
-
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--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-nameproxy_name\ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \ --role-arniam_role\ --vpc-subnet-idsspace_separated_list\ [--default-auth-scheme { NONE | IAM_AUTH }] \ [--authProxyAuthenticationConfig_JSON_string] \ [--vpc-security-group-idsspace_separated_list] \ [--require-tls | --no-require-tls] \ [--idle-client-timeoutvalue] \ [--debug-logging | --no-debug-logging] \ [--endpoint-network-type { IPV4 | IPV6 | DUAL }] \ [--target-connection-network-type { IPV4 | IPV6 }] \ [--tagscomma_separated_list]
Para Windows:
aws rds create-db-proxy ^ --db-proxy-nameproxy_name^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --role-arniam_role^ --vpc-subnet-idsspace_separated_list^ [--default-auth-scheme { NONE | IAM_AUTH }] ^ [--authProxyAuthenticationConfig_JSON_string] ^ [--vpc-security-group-idsspace_separated_list] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeoutvalue] ^ [--debug-logging | --no-debug-logging] ^ [--endpoint-network-type { IPV4 | IPV6 | DUAL }] ^ [--target-connection-network-type { IPV4 | IPV6 }] ^ [--tagscomma_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" } ]
El parámetro --endpoint-network-type especifica la versión de IP del punto de conexión del proxy que los clientes utilizan para conectarse al proxy. Los valores válidos son:
-
IPV4: el punto de conexión del proxy utiliza solo direcciones IPv4 (predeterminado). -
IPV6: el punto de conexión del proxy utiliza solo direcciones IPv6. -
DUAL: el punto de conexión del proxy admite direcciones IPv4 y IPv6.
El parámetro --target-connection-network-type especifica la versión de IP que utiliza el proxy para conectarse a la base de datos de destino. Los valores válidos son:
-
IPV4: el proxy se conecta a la base de datos mediante direcciones IPv4 (predeterminado). -
IPV6: el proxy se conecta a la base de datos mediante direcciones IPv6.
Para usar los tipos de redes de punto de conexión de IPv6 o de doble pila, la VPC y las subredes deben estar configuradas para admitir el tipo de red seleccionado. Para utilizar el tipo de red de conexión de destino de IPv6, la base de datos debe admitir el modo de doble pila.
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-namevalue[--target-group-nametarget_group_name] [--db-instance-identifiersspace_separated_list] # rds db instances, or [--db-cluster-identifierscluster_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 un clúster de bases de datos de Aurora con el grupo de destino llamando a la función RegisterDBProxyTargets.
importante
Al seleccionar la autenticación de IAM para el esquema de autenticación predeterminado:
-
Debe habilitar la autenticación de la base de datos de IAM en las instancias o clústeres de la base de datos de destino para que el proxy pueda conectarse correctamente.
-
Si elige Crear rol de IAM, es obligatorio el campo Cuentas de base de datos para la autenticación de IAM.
-
Si selecciona un rol de IAM existente, la consola no actualiza automáticamente el rol con los permisos de conexión de base de datos. Compruebe que el rol tenga los permisos
rds-db:connectnecesarios.