Come faccio a connettermi ad Amazon RDS per PostgreSQL o Amazon Aurora PostgreSQL utilizzando l'autenticazione IAM?
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 del database IAM è più sicura dei metodi di autenticazione nativi per i seguenti motivi:
- IAM utilizza le tue chiavi di accesso AWS per generare token di autenticazione del database. Non è necessario memorizzare le credenziali utente del database.
- I token di autenticazione hanno una durata di 15 minuti, quindi non è necessario imporre la reimpostazione della password.
- L'autenticazione del database IAM richiede una connessione SSL. In questo modo vengono crittografati tutti i dati che trasmetti da e verso la tua istanza database Amazon RDS.
- Se la tua applicazione viene eseguita su Amazon Elastic Compute Cloud (Amazon EC2), puoi utilizzare le credenziali del profilo di istanza Amazon EC2 per accedere al database. Non è necessario memorizzare le password del database sulla tua istanza.
Per configurare l'autenticazione del database IAM utilizzando i ruoli IAM, segui questi passaggi:
- Attiva l'autenticazione del database IAM sull'istanza database RDS.
- Crea un utente IAM e allega una policy IAM che associ l'utente del database al ruolo IAM.
- Associa il ruolo IAM all'istanza EC2.
- Genera un token di autenticazione AWS per identificare il ruolo IAM.
- 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
Prima di iniziare, completa i seguenti prerequisiti:
- Avvia un'istanza database Amazon RDS per PostgreSQL o un cluster compatibile con Aurora PostgreSQL che supporti l'autenticazione del database IAM
- Avvia un'istanza EC2 per connetterti al database
Per ulteriori informazioni, consulta Autenticazione del database IAM per Aurora e Autenticazione del database IAM per Amazon RDS.
Per connetterti a un'istanza database RDS o a un cluster di database compatibile con Aurora PostgreSQL, usa l'autenticazione del 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 le informazioni dell’utente IAM.
-
Accedi alla tua istanza database Amazon RDS per PostgreSQL o al cluster compatibile con Aurora PostgreSQL come utente principale:
psql
psql -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. In questo modo verrà creata 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 Generale e deseleziona la casella Connetti ora. Nella scheda Connessione, inserisci il nome host, la porta e il nome utente, ma non inserire ancora la password. Dalla scheda SSL, imposta la modalità SSL su Richiedi e salva la connessione al server.
-
(Facoltativo) Dalla scheda SSL, puoi modificare la modalità SSL in modalità verify-full. Inserisci il percorso del certificato per la modalità SSL selezionata. Per scaricare il percorso, esegui il seguente comando:
wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem
Nota: I certificati root 2015 sono scaduti a partire dal 2020. Per passare a un certificato root 2019, consulta Sostituzione del certificato SSL/TLS.
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
-
Dopo aver creato il server, effettua la connessione. Inserisci il token temporaneo che generate-db-auth-token ha generato per l'utente iamuser, quando richiesto.
Per psql, esegui il seguente comando 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 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 Come utilizzare le policy di controllo dei servizi per impostare i guardrail di autorizzazione tra gli account della tua organizzazione AWS.
Informazioni correlate
Utilizzare l'autenticazione IAM con Aurora PostgreSQL compatibile
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa