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.
Argomenti
Connessione a un proxy utilizzando l'autenticazione nativa
Utilizza i seguenti passaggi per connetterti a un proxy utilizzando l'autenticazione nativa:
-
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" } ] ]
-
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'opzionepsql -h
. -
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
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
Per PostgreSQL, se usi JDBC, ti consigliamo quanto segue per evitare il pinning:
-
Impostare il parametro
assumeMinServerVersion
di connessione JDBC su almeno9.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
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 eseguitoany/your-application-name
SET application_name = "PostgreSQL JDBC Driver"
. Si noti che il parametro JDBC èApplicationName
ma il parametroStartupMessage
PostgreSQL èapplication_name
.
Per ulteriori informazioni, consulta Evitare di bloccare un proxy RDS. Per ulteriori informazioni sulla connessione tramite JDBC, vedere Connessione al database