Puoi configurare l'autenticazione del database Identity and Access Management (IAM) su cluster AlloyDB per PostgreSQL nuovi o esistenti per gestire gli accessi e le autorizzazioni al database utilizzando singoli account IAM o gruppi IAM.
L'autenticazione IAM integra l'autenticazione del database tramite gli utenti PostgreSQL standard, supportati da ogni cluster AlloyDB.
Puoi eseguire l'autenticazione utilizzando singoli account o gruppi:
Account individuali: aggiungi ogni utente o account di servizio IAM al cluster e gestisci le autorizzazioni per account.
Gruppi: aggiungi un gruppo IAM al cluster in modo che tutti i membri (utenti e service account) ereditino le autorizzazioni per l'autenticazione alle istanze principali, alle istanze del pool di lettura e ad AlloyDB Studio senza aggiungere ogni membro singolarmente.
L'autenticazione IAM è disabilitata per impostazione predefinita nelle istanze AlloyDB.
Per utilizzare l'autenticazione IAM, completa i seguenti passaggi generali:
- Abilita l'autenticazione IAM individuale o di gruppo sulla tua 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.
Abilita e disabilita l'autenticazione IAM
Per abilitare l'autenticazione IAM su un'istanza in un cluster nuovo o esistente, imposta i flag di database richiesti:
Per l'autenticazione individuale, imposta il flag di database
alloydb.iam_authenticationsuon.Per l'autenticazione di gruppo, imposta i flag di database
alloydb.iam_authenticationealloydb.iam_group_authenticationsuon.
Per disabilitare l'autenticazione IAM, imposta i flag su off.
Per saperne di più sull'impostazione dei flag, consulta Configura i flag di database di un'istanza.
Concedi l'accesso a un account individuale
Per abilitare l'accesso IAM a un nuovo utente del database, segui questi passaggi:
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 nel tuo cluster, impostando il nome utente come indirizzo email dell'utente o del service account IAM.
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 o ai service account IAM di autenticarsi con le istanze AlloyDB concedendo loro i seguenti ruoli IAM:
alloydb.databaseUser: consente all'utente di connettersi alla tua istanza AlloyDB.serviceusage.serviceUsageConsumer: fornisce all'utente l'accesso a un'API che controlla le autorizzazioni.
Per farlo, segui le istruzioni riportate in Concedi l'accesso ad altri utenti. Nel passaggio in cui selezioni un ruolo da concedere all'entità IAM, scegli alloydb.databaseUser.
Aggiungi un utente o account di servizio IAM 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), segui questi passaggi:- Inserisci il nome del ruolo in Ruoli.
- Per aggiungere il ruolo, premi Invio o Tab.
Seleziona x per ogni ruolo che vuoi rimuovere per l'utente.
Per saperne di più, consulta 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: l'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: l'ID della regione in cui si trova il cluster, ad esempious-central1.
Concedi le autorizzazioni appropriate per il database agli utenti IAM
Quando aggiungi un utente IAM a un cluster AlloyDB, l'utente non dispone di privilegi su nessun database per impostazione predefinita, ad eccezione degli oggetti di database a cui può accedere PUBLIC.
Se gli utenti hanno bisogno di un accesso aggiuntivo, concedi più privilegi utilizzando l'istruzione PostgreSQL GRANT:
GRANT SELECT ON TABLE_NAME TO "USERNAME";
Sostituisci le seguenti variabili:
USERNAME: l'indirizzo email dell'utente. Devi includere le virgolette doppie intorno all'indirizzo.TABLE_NAME: il nome della tabella a cui vuoi concedere l'accesso all'utente.
Rimuovi un utente o un account di servizio IAM 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 l'utente.REGION: l'ID della regione in cui si trova il cluster. Ad esempio,us-central1.
Concedi l'accesso a un gruppo IAM
Per utilizzare l'autenticazione di gruppo, aggiungi un gruppo IAM al cluster AlloyDB.
Aggiungi un gruppo IAM a un cluster
Prima di aggiungere un gruppo IAM a un cluster, tieni presente i seguenti requisiti:
In un cluster possono esistere al massimo 200 gruppi IAM contemporaneamente. I gruppi inattivi vengono conteggiati ai fini di questo limite.
I nomi dei gruppi IAM non possono superare i 63 caratteri. Se hai un gruppo IAM con un nome che supera i 63 caratteri, 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 aggiungere un gruppo IAM a un cluster, segui questi passaggi:
Assegna i ruoli
roles/alloydb.databaseUsereroles/serviceusage.serviceUsageConsumerall'account del gruppo. Per maggiori informazioni sulla concessione di questi ruoli, consulta Aggiorna un account IAM con il ruolo appropriato.Per creare un utente del database per il gruppo, esegui il comando
gcloud alloydb users createcon il flag--type=IAM_GROUP:gcloud alloydb users create GROUP_EMAIL \ --cluster=CLUSTER \ --region=REGION \ --type=IAM_GROUPSostituisci quanto segue:
GROUP_EMAIL: l'indirizzo email completo del gruppo IAM, ad esempiomy-group@example.com.CLUSTER: l'ID del cluster a cui aggiungere il gruppo.REGION: l'ID della regione in cui si trova il cluster, ad esempious-central1.
Aggiungi automaticamente i membri di un gruppo
Quando aggiungi un gruppo IAM a un cluster, tutti gli utenti e i service account di quel gruppo ereditano le autorizzazioni per l'autenticazione. Non è necessario aggiungere i membri singolarmente. I membri del gruppo possono accedere direttamente alle istanze principali, alle istanze del pool di lettura e ad AlloyDB Studio nella console Google Cloud , inclusi i primi accessi alle istanze del pool di lettura senza connettersi prima all'istanza principale. Quando un membro esegue l'accesso per la prima volta, AlloyDB crea automaticamente un account di database per l'entità.
Quando ripristini o esegui la migrazione di un cluster AlloyDB da un backup di Cloud SQL per PostgreSQL, AlloyDB mappa e conserva le configurazioni utente individuali e dei gruppi IAM. Per saperne di più sulla migrazione da un backup di Cloud SQL per PostgreSQL, consulta Esegui la migrazione da Cloud SQL per PostgreSQL ad AlloyDB.
Concedi i privilegi del 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";
Sostituisci quanto segue:
TABLE_NAME: il nome della tabella a cui vuoi concedere l'accesso al gruppo.GROUP_NAME: l'indirizzo email del gruppo. Includi le virgolette doppie intorno all'indirizzo perché contiene caratteri speciali.
Elimina 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 tutti gli altri ruoli correlati ad AlloyDB che concedono l'accesso al cluster. Questa azione impedisce ai membri del gruppo di autenticarsi.
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 tuo 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. In genere, i proprietari di un gruppo possono eliminare solo i gruppi di loro proprietà.
La propagazione delle modifiche alle autorizzazioni IAM e alle iscrizioni ai gruppi può richiedere del tempo, potenzialmente 15 minuti o più.
Assicurati di disporre dei privilegi amministrativi appropriati, come 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ù, consulta Ruoli amministrativi predefiniti.
Esegui il seguente 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.
Esegui la migrazione degli utenti esistenti all'autenticazione dei gruppi IAM
Gli utenti IAM individuali esistenti non utilizzano l'autenticazione di gruppo. Per eseguirne la migrazione, segui questi passaggi:
- 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 individuale esistente dal cluster. Assicurati di trasferire la proprietà, se è questo che vuoi fare.
Quando l'utente accede di nuovo, AlloyDB ricrea l'account come utente del gruppo.
Risolvi 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 del cluster:
gcloud alloydb users list \ --cluster=CLUSTER \ --region=REGIONSostituisci quanto segue:
CLUSTER: l'ID del tuo cluster AlloyDB.REGION: l'ID della regione in cui si trova il tuo cluster AlloyDB, ad esempious-central1.
Se l'account è di tipo
ALLOYDB_IAM_USER, rimuovilo dal cluster. Gli account con il tipoALLOYDB_IAM_USERnon ereditano i privilegi del gruppo.Per ricreare l'account con il tipo di utente del gruppo, accedi di nuovo all'istanza con l'account utente o il service account. Se accedi di nuovo all'istanza, l'account viene ricreato con il tipo di account
ALLOYDB_IAM_GROUP_USERoALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.