Questa pagina spiega la procedura di accesso a un'istanza AlloyDB per PostgreSQL utilizzando un account preparato con Identity and Access Management (IAM). Illustra la procedura
mostrando come eseguire un accesso basato su IAM utilizzando il client a riga di comando psql
.
Per una panoramica della connessione alle istanze AlloyDB, consulta Panoramica della connessione.
Prima di iniziare
Il progetto, il cluster, le istanze e gli account utente IAM richiedono tutti una preparazione prima che tu possa accedere a un'istanza AlloyDB utilizzando le credenziali IAM.
Per ulteriori informazioni, consulta Gestire l'autenticazione IAM.
Eseguire l'autenticazione con un token OAuth 2.0
Un utente o un'applicazione può autenticarsi con un database AlloyDB seguendo questi passaggi:
Se non l'hai ancora fatto, autorizza Google Cloud CLI utilizzando lo stesso account utente o di servizio con cui vuoi accedere all'istanza AlloyDB.
Richiedi un token OAuth 2.0 da Google Cloud utilizzando il
gcloud auth print-access-token
comando:gcloud auth print-access-token
Google Cloud stampa un token OAuth 2.0 come output di questo comando.
Per una maggiore sicurezza, puoi limitare l'utilizzo del token solo per l'autenticazione AlloyDB seguendo questi passaggi alternativi:
Se non l'hai già fatto, aggiungi l'ambito
alloydb.login
alle credenziali di accesso del tuo ambiente attuale utilizzando il comandogcloud auth application-default login
:gcloud auth application-default login --scopes=https://www.googleapis.com/auth/alloydb.login,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,openid
Stampa un token OAuth 2.0 limitato utilizzando il comando
gcloud auth application-default print-access-token
, limitandone l'ambito solo all'autenticazione AlloyDB:gcloud auth application-default print-access-token –-scopes=https://www.googleapis.com/auth/alloydb.login
Il token OAuth 2.0 consente a te o a chiunque di inviare richieste autenticate a Google Cloud per tuo conto. Tratta il token con lo stesso livello di sicurezza di una password. Memorizza il token in modo sicuro o evita di memorizzarlo. L'esempio di utilizzo di
psql
riportato più avanti in questa pagina mostra un modo per richiedere, utilizzare e ignorare un token OAuth 2.0 in un'unica azione.Accedi a un'istanza AlloyDB con tecniche PostgreSQL standard utilizzando queste credenziali:
Presenta il token di accesso acquisito nel passaggio precedente come password.
Per un account utente IAM, il nome utente del database è l'indirizzo email completo dell'account.
Per un account di servizio IAM, il nome utente del database è l'indirizzo email dell'account senza il suffisso
.gserviceaccount.com
.
Il seguente comando psql
mostra un modo per accedere a un utente IAM sulla riga di comando. Assegna l'output di gcloud
auth print-access-token
alla variabile di ambiente PGPASSWORD
, che psql
utilizza successivamente come password di accesso al database.
PGPASSWORD=$(gcloud auth print-access-token) psql \
-h INSTANCE_ADDRESS \
-U USERNAME \
-d DATABASE
Sostituisci quanto segue:
INSTANCE_ADDRESS
: l'indirizzo IP dell'istanza AlloyDB a cui connettersi.USERNAME
: un identificatore per l'utente IAM per autenticarsi con l'istanza.Per un account utente IAM, fornisci l'indirizzo email completo dell'account. Ad esempio,
kai@altostrat.com
.Per un account di servizio IAM, fornisci l'indirizzo dell'account di servizio senza il suffisso
.gserviceaccount.com
. Ad esempio, per specificare l'account di serviziomy-service@my-project.iam.gserviceaccount.com
, dovresti utilizzare il valoremy-service@my-project.iam
qui.DATABASE
: il nome del database a cui connetterti.
Tieni presente che psql
tronca le password inserite nella riga di comando che sono più lunghe di 100 caratteri. Per utilizzare psql
con un token OAuth 2.0 come password di accesso,
devi impostare la variabile di ambiente PGPASSWORD
come mostrato in questo
esempio, anziché incollarla manualmente quando richiesto.
Esegui l'autenticazione automaticamente utilizzando il proxy di autenticazione AlloyDB o i connettori dei linguaggi AlloyDB
Puoi utilizzare AlloyDB Auth Proxy o i connettori dei linguaggi AlloyDB per autenticare automaticamente un utente AlloyDB basato su IAM e connetterti a un'istanza senza dover fornire un token OAuth 2.0.
L'utilizzo di AlloyDB Auth Proxy richiede l'esecuzione del client AlloyDB Auth Proxy con il flag --auto-iam-authn
abilitato, mentre i connettori dei linguaggi AlloyDB richiedono l'abilitazione dell'autenticazione IAM tramite programmazione.
Quando utilizzi i connettori di lingua, è disponibile un'opzione corrispondente per ogni lingua. Per maggiori dettagli, consulta Configurare i connettori di lingua AlloyDB.
L'account IAM che utilizzi per eseguire il client proxy o i connettori di lingua deve essere lo stesso account che hai aggiunto come utente del database. Ad esempio, se esegui il tuo carico di lavoro utilizzando l'account utente IAM kai@altostrat.com
, puoi utilizzare il client proxy o i connettori di lingua per autenticare automaticamente l'utente del database kai@altostrat.com
senza specificare un token OAuth 2.0. In questo esempio, l'autenticazione automatica non funziona con nessun altro utente del database, ad eccezione di kai@altostrat.com
.
Per ulteriori informazioni sull'esecuzione del proxy di autenticazione, consulta Eseguire la connessione utilizzando il proxy di autenticazione AlloyDB.
Per ulteriori informazioni sull'esecuzione dei connettori di lingua, consulta Eseguire la connessione utilizzando i connettori di lingua AlloyDB.
Risolvere i problemi relativi all'autenticazione IAM
Per determinare la causa di un tentativo di autenticazione basata su IAM non riuscito:
Nella console Google Cloud, vai alla pagina Esplora log:
In Tipo di risorsa, fai clic su Istanza AlloyDB.
In Gravità, fai clic su Avviso.
Se l'opzione Avviso non è disponibile, significa che non sono stati registrati errori di autenticazione nel periodo di tempo selezionato. Potresti dover regolare la finestra utilizzando i controlli di Esplora log.
In Risultati delle query, controlla le voci del log per verificare la presenza di uno dei seguenti messaggi:
Request had invalid authentication credentials.
- Il token di accesso non è valido.
Caller does not have required permission to use project.
- L'entità IAM non dispone dei ruoli IAM necessari o delle autorizzazioni. Il messaggio di errore completo specifica i ruoli o le autorizzazioni mancanti.
IAM principal does not match database user.
L'entità IAM autenticata specificata dal token di accesso non corrisponde all'utente del database con cui vuoi connetterti.
Per visualizzare il principale specificato dal token, esegui il seguente comando:
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=ACCESS_TOKEN" https://www.googleapis.com/oauth2/v1/tokeninfo
Sostituisci
ACCESS_TOKEN
con il token di accesso OAuth 2.0.Request had insufficient scopes.
- Il token di accesso non contiene l'ambito
alloydb.login
ocloud-platform
. È obbligatorio specificare almeno uno di questi ambiti.