Questa pagina descrive come preparare l'istanza AlloyDB per PostgreSQL per facilitare l'autenticazione del database utilizzando Identity and Access Management (IAM).
L'autenticazione IAM integra l'autenticazione del database tramite utenti PostgreSQL standard, che ogni cluster AlloyDB supporta.
Puoi eseguire l'autenticazione utilizzando singoli account o gruppi:
- Account individuali: aggiungi ogni utente IAM o service account al cluster. Puoi utilizzare i ruoli utente IAM o PostgreSQL per l'autenticazione con il cluster.
- Gruppi: aggiungi un gruppo IAM al cluster. Tutti i membri (utenti e service account) di quel gruppo ereditano le autorizzazioni per l'autenticazione. In questo modo puoi gestire l'accesso gestendo l'iscrizione al gruppo senza aggiungere ogni membro al cluster singolarmente.
L'autenticazione IAM è disabilitata per impostazione predefinita sulle istanze AlloyDB.
Per utilizzare l'autenticazione IAM, completa i seguenti passaggi generali:
- Abilita l'autenticazione individuale o di gruppo IAM sull'istanza.
- Concedi i ruoli richiesti all'account o al gruppo.
- Aggiungi l'account o il gruppo al cluster.
- Concedi i privilegi del database all'account o al gruppo.
Abilitare e disabilitare l'autenticazione IAM
Per abilitare l'autenticazione IAM su un'istanza, imposta i flag di database.
- Per l'autenticazione individuale, imposta
alloydb.iam_authenticationsuon. - Per l'autenticazione di gruppo, imposta sia
alloydb.iam_authenticationsiaalloydb.iam_group_authenticationsuon.
Per disabilitare l'autenticazione IAM, imposta i flag su off.
Per saperne di più sull'impostazione dei flag, consulta la pagina Configurare i flag di database di un'istanza.
Concedere l'accesso a un account individuale
Per abilitare l'accesso IAM a un nuovo utente del database:
Aggiorna le impostazioni IAM del progetto per concedere l'accesso al database AlloyDB all'utente o al account di servizio IAM appropriato.
Crea un nuovo utente del database sul cluster, impostando il nome utente come indirizzo email dell'utente IAM o del service account.
Per concedere a un account IAM l'accesso ad altri cluster nel tuo progetto, ripeti l'ultimo passaggio.
Aggiorna un account IAM con il ruolo appropriato
Puoi consentire agli utenti IAM o ai service account di autenticarsi con le istanze AlloyDB concedendo loro i seguenti ruoli IAM:
alloydb.databaseUser: consente all'utente di connettersi all'istanza AlloyDB.serviceusage.serviceUsageConsumer: fornisce all'utente l'accesso a un'API che controlla le autorizzazioni.
Per farlo, segui le istruzioni riportate in
Concedere l'accesso ad altri utenti. Nel passaggio in cui selezioni un ruolo da concedere all'entità IAM, scegli alloydb.databaseUser.
Aggiungere un utente IAM o account di servizio a un cluster
Console
Vai alla pagina Cluster.
Fai clic sul nome del cluster a cui vuoi aggiungere un utente.
Fai clic su Utenti.
Fai clic su Aggiungi account utente.
Seleziona Cloud IAM.
Nel campo Entità, inserisci l'entità IAM.
Per un account utente IAM, fornisci l'indirizzo email completo dell'account utente. Ad esempio,
dana@example.com.Per un account di servizio IAM, fornisci l'indirizzo del account di servizio senza il suffisso
.gserviceaccount.com. Ad esempio, per specificare il account di serviziomy-service@my-project.iam.gserviceaccount.com, utilizza il valoremy-service@my-project.iam.Per assegnare all'utente ruoli diversi da quello predefinito
alloydbsuperuser:- Inserisci il nome del ruolo in Ruoli.
- Per aggiungere il ruolo, premi Invio o Tab.
Seleziona x per tutti i ruoli che vuoi rimuovere per l'utente.
Per ulteriori informazioni, vedi Ruoli predefiniti.
Fai clic su Aggiungi.
gcloud
Per creare un utente del database PostgreSQL basato su un utente IAM o
un account di servizio, utilizza il comando
gcloud alloydb users create.
gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASEDSostituisci le seguenti variabili:
USERNAME: identificatore dell'utente IAM che vuoi aggiungere come nuovo utente del database.Per un account utente IAM, fornisci l'indirizzo email completo dell'account utente. Ad esempio,
dana@example.com.Per un account di servizio IAM, fornisci l'indirizzo del account di servizio senza il suffisso
.gserviceaccount.com. Ad esempio, per specificare il account di serviziomy-service@my-project.iam.gserviceaccount.com, utilizza il valoremy-service@my-project.iam.CLUSTER: l'ID del cluster in cui creare questo account utente del database.REGION: ID della regione in cui si trova il cluster, ad esempious-central1.
Concedi le autorizzazioni del database appropriate agli utenti IAM
Quando aggiungi un utente IAM a un cluster AlloyDB, l'utente non dispone di privilegi su alcun database per impostazione predefinita, ad eccezione degli oggetti di database a cui può accedere PUBLIC.
Se gli utenti hanno bisogno di ulteriore accesso, concedi più privilegi utilizzando l'istruzione
GRANT PostgreSQL:
GRANT SELECT ON TABLE_NAME TO "USERNAME";
Sostituisci le seguenti variabili:
USERNAME: l'indirizzo email dell'utente. Devi includere virgolette doppie intorno all'indirizzo.TABLE_NAME: il nome della tabella a cui vuoi concedere l'accesso all'utente.
Rimuovere un utente IAM o un account di servizio da un cluster
Console
Vai alla pagina Cluster.
Fai clic sul nome del cluster da cui vuoi rimuovere l'utente.
Fai clic su Utenti.
Nella riga che rappresenta l'utente che vuoi rimuovere, fai clic su Apri azioni per questo utente.
Seleziona Rimuovi.
Nella finestra di dialogo Rimuovere l'account utente?, fai clic su Rimuovi.
gcloud
Utilizza
il comando gcloud alloydb users delete.
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGIONSostituisci quanto segue:
USERNAME: l'identificatore dell'utente IAM che vuoi rimuovere dal cluster.Per un account utente IAM, fornisci l'indirizzo email completo dell'account utente. Ad esempio,
dana@example.com.Per un account di servizio IAM, fornisci l'indirizzo del account di servizio senza il suffisso
.gserviceaccount.com. Ad esempio, per specificare il account di serviziomy-service@my-project.iam.gserviceaccount.com, utilizza il valoremy-service@my-project.iam.CLUSTER: l'ID del cluster da cui rimuovere questo utente.REGION: ID della regione in cui si trova il cluster. Ad esempio,us-central1.
Concedere l'accesso a un gruppo IAM
Per utilizzare l'autenticazione di gruppo (anteprima), aggiungi un gruppo IAM al cluster AlloyDB.
Aggiungere un gruppo IAM a un cluster
Assegna i ruoli
alloydb.databaseUsereserviceusage.serviceUsageConsumerall'account del gruppo. Per saperne di più, consulta Aggiornare un account IAM con il ruolo appropriato.In un cluster possono esistere un massimo di 200 gruppi IAM in qualsiasi momento. I gruppi inattivi vengono conteggiati ai fini di questo limite.
I nomi dei gruppi IAM possono contenere solo 63 caratteri.
Se hai un gruppo IAM con un nome che supera il limite di lunghezza, puoi nidificarlo in un gruppo principale con un nome valido. Devi aggiungere il gruppo principale al cluster prima di poter utilizzare il gruppo nidificato.
Per creare un utente del database per il gruppo, utilizza il comando
gcloud alloydb users createcon il flag--type=IAM_GROUP.gcloud beta alloydb users create GROUP_EMAIL \ --cluster=CLUSTER \ --region=REGION \ --type=IAM_GROUP
Aggiungere automaticamente i membri di un gruppo
Quando aggiungi un gruppo IAM a un cluster, tutti i membri (utenti e service account) di quel gruppo ereditano le autorizzazioni per l'autenticazione. Non è necessario aggiungere i membri singolarmente. Dopo il primo accesso di un membro, AlloyDB crea automaticamente un account per lui.
Concedi privilegi di database a un gruppo IAM
Concedi i privilegi del database ai gruppi anziché ai singoli utenti.
Esegui l'istruzione GRANT dalla riga di comando psql:
GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";
GROUP_NAME: l'indirizzo email del gruppo. Devi utilizzare le virgolette perché la stringa contiene caratteri speciali.TABLE_NAME: il nome della tabella.
Eliminare un gruppo IAM da un cluster
Per eliminare un gruppo IAM da un cluster AlloyDB, revoca le autorizzazioni del gruppo nella console Google Cloud ed elimina l'utente del gruppo corrispondente dal cluster AlloyDB.
Revoca le autorizzazioni IAM:
Nella console Google Cloud vai alla pagina IAM.
Trova il gruppo IAM da cui vuoi rimuovere l'accesso.
Rimuovi il ruolo
roles/alloydb.databaseUsere qualsiasi altro ruolo correlato ad AlloyDB che concede l'accesso al cluster. Questa azione impedisce l'autenticazione dei membri del gruppo.
Elimina l'utente del gruppo dal cluster AlloyDB:
Utilizza Google Cloud CLI per eliminare l'utente che rappresenta il gruppo IAM dal cluster AlloyDB. Il nome utente è in genere l'indirizzo email del gruppo IAM.
gcloud alloydb users delete GROUP_EMAIL_ADDRESS \ --cluster=CLUSTER_ID \ --region=REGION_IDSostituisci quanto segue:
GROUP_EMAIL_ADDRESS: l'indirizzo email completo del gruppo IAM, ad esempiomy-group@example.com.CLUSTER_ID: l'ID del tuo cluster AlloyDB.REGION_ID: la regione in cui si trova il cluster AlloyDB, ad esempious-central1.
(Facoltativo) Elimina il gruppo da Cloud Identity:
Per eliminare i gruppi, devi disporre dei privilegi amministrativi appropriati (ad esempio Amministratore gruppi) nel tuo account Cloud Identity. I proprietari di un gruppo in genere possono eliminare solo i gruppi di loro proprietà.
La propagazione delle modifiche alle autorizzazioni IAM e alle appartenenze ai gruppi può richiedere tempo, potenzialmente 15 minuti o più.
Assicurati di disporre dei privilegi amministrativi appropriati, ad esempio Amministratore di Gruppi, nel tuo account Cloud Identity. I proprietari di un gruppo possono eliminare solo i gruppi di loro proprietà. Per saperne di più, vedi Ruoli amministrativi predefiniti.
Esegui questo comando gcloud CLI di Cloud Identity:
gcloud identity groups delete GROUP_EMAIL_ADDRESSQuando revochi l'autorizzazione di accesso
alloydb.databaseUserper un gruppo IAM in Cloud Identity, devi anche eliminare il gruppo dal cluster AlloyDB per assicurarti che l'accesso venga rimosso completamente.
Eseguire la migrazione degli utenti esistenti all'autenticazione del gruppo IAM
Gli utenti IAM individuali esistenti non utilizzano l'autenticazione di gruppo. Per eseguirne la migrazione:
- Aggiungi gli utenti a un gruppo IAM.
- Aggiungi il gruppo al cluster.
- Assegna al gruppo i ruoli richiesti.
- Assegna i privilegi del database al gruppo.
- Elimina l'utente singolo esistente dal cluster. Assicurati di trasferire la proprietà, se previsto.
Quando l'utente accede di nuovo, AlloyDB ricrea l'account come utente del gruppo.
Risolvere i problemi relativi all'autenticazione di gruppo
Utilizza le seguenti informazioni per risolvere i problemi di autenticazione di gruppo.
Un account esistente non eredita i privilegi
Se un account non eredita i privilegi da un gruppo, segui questi passaggi:
Elenca gli utenti.
gcloud alpha alloydb users list --cluster=CLUSTER --region=REGIONSe il tipo è
ALLOYDB_IAM_USERoALLOYDB_IAM_SERVICE_ACCOUNT, rimuovi l'account. Non eredita i privilegi del gruppo.Per ricreare l'account con il tipo di gruppo corretto, accedi di nuovo all'istanza con l'utente o ilaccount di serviziot. L'accesso di nuovo all'istanza ricrea l'account con il tipo di account corretto
ALLOYDB_IAM_GROUP_USERoALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.