New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Come posso utilizzare l'autenticazione IAM per connettermi ad Amazon RDS per PostgreSQL o ad Amazon Aurora PostgreSQL?
Ho un'istanza database Amazon Relational Database Service (Amazon RDS) per PostgreSQL o un'istanza database in edizione compatibile con Amazon Aurora PostgreSQL. Desidero utilizzare l'autenticazione AWS Identity and Access Management (IAM) per connettermi alla mia istanza.
Breve descrizione
L'autenticazione database IAM è più sicura dei metodi di autenticazione nativi. Per ulteriori informazioni, consulta IAM database authentication for MariaDB, MySQL, and PostgreSQL.
Per utilizzare i ruoli IAM per configurare l'autenticazione database IAM, completa i passaggi seguenti:
- Attiva l'autenticazione database IAM sull'istanza database RDS.
- Crea un utente IAM, quindi collega una policy IAM che associ l'utente del database al ruolo IAM.
- Collega il ruolo IAM all'istanza Amazon Elastic Compute Cloud (Amazon EC2).
- Per identificare il ruolo IAM, genera un token di autenticazione AWS.
- Scarica il file del certificato root SSL o il file del pacchetto di certificati.
- Per connetterti all'istanza database RDS, utilizza le credenziali del tuo ruolo IAM e il token di autenticazione o un certificato SSL.
Se esegui MySQL, consulta Come faccio a consentire agli utenti di autenticarsi su un'istanza database di Amazon RDS per MySQL utilizzando le loro credenziali IAM?
Risoluzione
Prerequisiti
Completa i prerequisiti seguenti:
- Avvia un'istanza database Amazon RDS per PostgreSQL o un cluster compatibile con Aurora PostgreSQL che supporti l'autenticazione database IAM
- Avvia un'istanza EC2 per connetterti al database
Per ulteriori informazioni, consulta IAM database authentication per Aurora e IAM database authentication per Amazon RDS.
Per verificare la configurazione richiesta per l'autenticazione IAM con un'istanza Amazon RDS o Aurora Cluster o risolvere i problemi di autenticazione IAM, utilizza il runbook AWSSupport-TroubleshootRDSIAMAuthentication. Per ulteriori informazioni, consulta AWSSupport-TroubleshootRDSIAMAuthentication.
Usa l'autenticazione database IAM
Per connetterti a un'istanza database RDS o a un cluster di database compatibile con Aurora PostgreSQL, usa l'autenticazione database IAM per PostgreSQL:
-
Attiva l'autenticazione IAM sulla tua istanza database RDS o sul tuo cluster Aurora.
-
Crea un utente IAM, quindi allega la seguente policy:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:REGION:ACCOUNT:dbuser:RESOURCE_ID/iamuser" ] } ] }
Nota: sostituisci iamuser con i dati dell'utente IAM.
-
Accedi alla tua istanza database Amazon RDS per PostgreSQL o al cluster compatibile con Aurora PostgreSQL come utente principale:
psqlpsql -h {database or cluster endpoint} -U {Master username} -d {database name}
pgAdmin
Seleziona Server dal pannello di navigazione di pgAdmin. Quindi, scegli il nome del server e inserisci la password dell'utente principale.
-
Crea un utente secondario con lo stesso nome dell'utente IAM:
CREATE USER iamuser WITH LOGIN; GRANT rds_iam TO iamuser;
-
Esegui generate-db-auth-token con il nome utente che hai creato. Questa azione crea una password temporanea da utilizzare in una fase successiva:
[ec2-user@ip-172-31-24-237 ~]$ export RDSHOST="aurorapg-ssl.cluster-XXXXXXXXXXX.us-west-2.rds.amazonaws.com"[ec2-user@ip-172-31-24-237 ~]$ export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username iamuser)" [ec2-user@ip-172-31-24-237 ~]$ echo $PGPASSWORD aurorapg-ssl.cluster-XXXXXXX.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=iamuser&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Credential=AKIA2O5GXNVDTAMABZFE%2F20190909%2Fus-west-2%2Frds-db%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Date=20190909T171907Z&X-Amz-Signature=ead28003477c3082e5a17529ac8316db4f4bdf2fa8f79d3aaea806e9bafa2673 [ec2-user@ip-172-31-24-237 ~]$
-
Per creare una nuova connessione al server in pgAdmin, scegli la scheda General (Generale) e deseleziona la casella Connect now (Connetti ora). Nella scheda Connection (Connessione) inserisci il nome host, la porta e il nome utente, ma non inserire ancora la password. Nella scheda SSL imposta SSL mode (Modalità SSL) su Require (Richiedi) e salva la connessione al server.
-
(Facoltativo) Puoi cambiare SSL mode (Modalità SSL) in verify-full nella scheda SSL. Inserisci il percorso del certificato per la modalità SSL selezionata. Per scaricare il percorso, esegui il comando seguente:
wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem
Se la tua applicazione non accetta catene di certificati, scarica il pacchetto di certificati che include sia i vecchi che i nuovi certificati root:
$ wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
-
Connettiti al server. Quando richiesto, inserisci il token temporaneo generato da generate-db-auth-token per l'utente iamuser.
Per psql, esegui il comando seguente per connetterti. Questo esempio utilizza la variabile di ambiente $PGPASSWORD che hai impostato quando hai generato il token. Questa variabile avvia la connessione:
psql -h aurorapg-ssl.cfkx5hi8csxj.us-west-2.rds.amazonaws.com -p 5432 "sslmode=verify-full sslrootcert=rds-ca-2019-root.pem dbname=aurora_pg_ssl user=iamuser"
Nota: ogni token scade 15 minuti dopo la generazione. Se provi a ristabilire la connessione con lo stesso token, la connessione fallisce. Devi generare un nuovo token.
Se ricevi ancora un errore simile a PAM authentication failed for your user (autenticazione PAM non riuscita per il tuo utente), controlla se l'account AWS fa parte di un'organizzazione AWS Organizations. Se l'account fa parte di un'organizzazione, aggiungi rds-db:* alla policy di controllo dei servizi dell'organizzazione a cui appartiene l'account. Inoltre, controlla se esiste una gerarchia dell'utente o del ruolo IAM che non dispone dell'autorizzazione rds-db.
Per ulteriori informazioni, consulta How to use service control policies to set permission guardrails across accounts in your AWS Organization.
Informazioni correlate
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa