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 dispongono read/write di funzionalità e utilizzano l'istanza writer. 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 database utilizzando le credenziali del database

Utilizza i seguenti passaggi per connetterti a un proxy utilizzando le credenziali del database:

  1. Trova l'endpoint del proxy. In Console di gestione AWS, 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. Specificare 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 database tramite l'autenticazione IAM

Quando utilizzi l'autenticazione IAM con RDS Proxy, hai due opzioni per l'autenticazione tra il client e il proxy:

  • Configura gli utenti del database in modo che si autentichino con nomi utente e password normali. RDS Proxy recupera le credenziali del nome utente e della password da Secrets Manager. La connessione da RDS Proxy al database sottostante non passa tramite IAM.

  • È inoltre possibile utilizzare l'autenticazione end-to-end IAM, che si connette al database tramite il proxy utilizzando IAM senza richiedere le credenziali del database.

Per connetterti a Server proxy per RDS con l’autenticazione IAM, utilizza la stessa procedura di connessione generale utilizzata per l’autenticazione IAM con un cluster di database Aurora. Per informazioni generali sull'utilizzo di IAM, consulta Sicurezza in Amazon Aurora. Se utilizzi l'autenticazione end-to-end IAM, fornisci il plug-in di autenticazione IAM al tuo utente DB. Per informazioni, consulta Creazione di un account database tramite l’autenticazione IAM.

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

  • Con l'autenticazione IAM standard, gli utenti del database dispongono di credenziali 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.

  • Con l'autenticazione end-to-end IAM, non è necessario configurare i segreti di Secrets Manager per le credenziali del database. L'autenticazione IAM si applica alla connessione tra il client al proxy e il proxy al database.

  • 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.

  • 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"
Suggerimento

Quando configuri l'autenticazione IAM per le connessioni proxy RDS, segui queste importanti linee guida per evitare problemi di connessione:

  • Non concedete il rds_iam ruolo mantenendo l'autenticazione generale con password per lo stesso utente o ruolo del database.

  • Ricorda che mentre i client si connettono al proxy RDS utilizzando l'autenticazione IAM, il proxy RDS si connette sempre al database utilizzando l'autenticazione tramite password tramite Secrets Manager.

  • Se si verificano frequenti interruzioni e riconnessioni della connessione, rimuovi eventuali rds_iam concessioni esistenti dall'utente o dal ruolo e utilizza solo l'autenticazione tramite password.

  • Assicurati che la tua politica in materia di password soddisfi i requisiti relativi ai caratteri sicuri SCRAM-SHA-256.

La combinazione di metodi di autenticazione IAM e password per lo stesso utente del database può causare instabilità della connessione.

Considerazioni sulla connessione a PostgreSQL

Se si crea un nuovo utente del database PostgreSQL per la connessione a Server proxy per RDS, assicurarsi di concedere all’utente il privilegio CONNECT sul database. Senza questo privilegio, l’utente non può stabilire una connessione. Per ulteriori informazioni, consulta Aggiungere un nuovo utente del database a un database PostgreSQL quando si utilizza Server proxy per RDS.

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 si utilizza JDBC, è consigliabile effettuare quanto segue per evitare il pinning:

  • Impostare il parametro assumeMinServerVersion di connessione JDBC su almeno 9.0 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 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 effettuare il pinning di un Server proxy per RDS. Per ulteriori informazioni sulla connessione tramite JDBC, vedere Connessione al database nella documentazione di PostgreSQL.