Connessione a un database tramite RDS Proxy - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connessione a un database tramite RDS Proxy

In linea generale, si stabilisce una connessione a cluster database Aurora o a un cluster che utilizza Aurora Serverless v2 tramite un proxy allo stesso modo in cui ci si connette direttamente al database. La differenza principale è che si specifica l'endpoint del proxy anziché l'endpoint del cluster. Per impostazione predefinita, tutte le connessioni proxy hanno capacità di lettura/scrittura e utilizzano l'istanza di scrittura. Se normalmente utilizzi l'endpoint di lettura per connessioni di sola lettura, puoi creare un endpoint aggiuntivo di sola lettura per il proxy e usare l'endpoint allo stesso modo. Per ulteriori informazioni, consulta Panoramica degli endpoint proxy.

Connessione a un proxy utilizzando l'autenticazione nativa

Utilizza i seguenti passaggi per connetterti a un proxy utilizzando l'autenticazione nativa:

  1. Trova l'endpoint del proxy. In AWS Management Console, puoi trovare l'endpoint nella pagina dei dettagli del proxy corrispondente. Con AWS CLI, è possibile utilizzare il describe-db-proxiescomando. L'esempio seguente mostra come.

    # 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. Specificate l'endpoint come parametro host nella stringa di connessione per l'applicazione client. Ad esempio, specificare l'endpoint proxy come valore per l'opzione mysql -h o l'opzione psql -h.

  3. Fornisci lo stesso nome utente e la stessa password del database come fai normalmente.

Connessione a un proxy mediante autenticazione IAM

Quando si utilizza l'autenticazione IAM con RDS Proxy, impostare gli utenti del database per l'autenticazione con nomi utente e password regolari. L'autenticazione IAM si applica al recupero RDS Proxy delle credenziali del nome utente e della password da Secrets Manager. La connessione da RDS Proxy al database sottostante non passa tramite IAM.

Per connetterti al proxy RDS utilizzando l'autenticazione IAM, utilizza la stessa procedura di connessione generale utilizzata per l'autenticazione IAM con un cluster . Per informazioni generali sull'utilizzo di IAM, consulta Sicurezza in Aurora.

Le principali differenze nell'utilizzo di IAM per RDS Proxy includono le seguenti:

  • Non si configura ogni singolo utente del database con un plugin di autorizzazione. Gli utenti del database hanno ancora nomi utente e password regolari all'interno del database. Si impostano i segreti Secrets Manager contenenti questi nomi utente e password e si autorizza RDS Proxy a recuperare le credenziali da Secrets Manager.

    L'autenticazione IAM si applica alla connessione tra il programma client e il proxy. Il proxy esegue quindi l'autenticazione nel database utilizzando il nome utente e le credenziali della password recuperate da Secrets Manager.

  • Invece dell'istanza, del cluster o dell'endpoint dell'istanza di lettura, specifica l'endpoint del proxy. Per informazioni dettagliate sull'endpoint proxy, vedere Connessione al cluster di database tramite l'autenticazione IAM.

  • Nel caso di autenticazione diretta di database IAM, scegli selettivamente gli utenti del database e configurali per essere identificati con uno speciale plug-in di autenticazione. È quindi possibile connettersi a tali utenti utilizzando l'autenticazione IAM.

    Nel caso d'uso del proxy, è necessario fornire al proxy segreti che contengono nome utente e password di alcuni utenti (autenticazione nativa). Quindi ci si connette al proxy utilizzando l'autenticazione IAM. Qui, si esegue questa operazione generando un token di autenticazione con l'endpoint proxy, non l'endpoint del database. Si utilizza anche un nome utente che corrisponde a uno dei nomi utente per i segreti forniti.

  • Quando ci si connette a un proxy utilizzando l'autenticazione IAM è necessario utilizzare Transport Layer Security (TLS)/Secure Sockets Layer (SSL).

È possibile concedere a un utente specifico l'accesso al proxy modificando la policy IAM. Di seguito è riportato un esempio.

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

Considerazioni per la connessione a un proxy con PostgreSQL

Per PostgreSQL, quando un client avvia una connessione a un database PostgreSQL, invia un messaggio di avvio che include coppie di stringhe di nome parametro e valore. Per i dettagli, vedere i StartupMessage in Formati dei messaggi PostgreSQL nella documentazione di PostgreSQL.

Quando si effettua la connessione tramite un proxy RDS, il messaggio di avvio può includere i seguenti parametri attualmente riconosciuti:

  • user

  • database

Il messaggio di avvio può includere anche i seguenti parametri di runtime aggiuntivi:

Per ulteriori informazioni sulla messaggistica PostgreSQL, vedere Frontend/Backend Protocol nella documentazione di PostgreSQL.

Per PostgreSQL, se usi JDBC, ti consigliamo quanto segue per evitare il pinning:

  • Impostare il parametro assumeMinServerVersion di connessione JDBC su almeno 9.0 per evitare il pinning. Ciò impedisce al driver JDBC di eseguire un ulteriore round trip durante l'avvio della connessione quando è in esecuzione. SET extra_float_digits = 3

  • Impostare il parametro di connessione JDBC ApplicationName su any/your-application-name per evitare il pinning. In questo modo si impedisce al driver JDBC di eseguire un ulteriore round trip durante l'avvio della connessione quando viene eseguito SET application_name = "PostgreSQL JDBC Driver". Si noti che il parametro JDBC è ApplicationName ma il parametro StartupMessage PostgreSQL è application_name.

Per ulteriori informazioni, consulta Evitare di bloccare un proxy RDS. Per ulteriori informazioni sulla connessione tramite JDBC, vedere Connessione al database nella documentazione di PostgreSQL.