Gestire l'autenticazione IAM

Questa pagina spiega come preparare l'istanza AlloyDB per PostgreSQL per consentire l'autenticazione del database tramite Identity and Access Management (IAM).

L'autenticazione IAM integra l'autenticazione del database tramite utenti PostgreSQL standard, che ogni cluster AlloyDB supporta. Se abiliti l'autenticazione IAM sul cluster, puoi utilizzare i ruoli utente IAM o PostgreSQL per l'autenticazione con il cluster.

Per impostazione predefinita, l'autenticazione IAM non è abilitata in un'istanza AlloyDB. Per attivare l'autenticazione IAM, completa i seguenti passaggi:

Puoi ripetere questi passaggi ogni volta che devi aggiungere altri utenti IAM al tuo cluster AlloyDB.

Attivare o disattivare l'autenticazione IAM

Per abilitare l'autenticazione IAM su un'istanza, imposta il flag alloydb.iam_authentication su quell'istanza su on.

Per disattivare l'autenticazione IAM su un'istanza, imposta alloydb.iam_authentication di nuovo sul valore predefinito, off.

Per saperne di più sull'impostazione dei flag sulle istanze AlloyDB, consulta Configurare i flag di database di un'istanza.

Concedere a un utente IAM o a un account di servizio l'accesso a un'istanza

L'attivazione dell'accesso IAM a un nuovo utente del database è una procedura in due passaggi:

  1. Aggiorna le impostazioni IAM del progetto per concedere l'accesso al database AlloyDB all'utente o al account di servizio IAM appropriato.

  2. Crea un nuovo utente del database sul cluster, impostando il nome utente come indirizzo email dell'utente IAM o del service account.

Puoi ripetere il passaggio 2 per concedere a un account IAM l'accesso ad altri cluster all'interno del tuo progetto.

Aggiornare 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

  1. Vai alla pagina Cluster.

    Vai a Cluster

  2. Fai clic sul nome del cluster a cui vuoi aggiungere un utente.

  3. Fai clic su Utenti.

  4. Fai clic su Aggiungi account utente.

  5. Seleziona Cloud IAM.

  6. Nel campo Entità, inserisci l'entità IAM.

    Per un account utente IAM, fornisci l'indirizzo email completo dell'account utente. Ad esempio, kai@altostrat.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 servizio my-service@my-project.iam.gserviceaccount.com, utilizzeresti il valore my-service@my-project.iam qui.

  7. Per assegnare all'utente ruoli diversi da quello predefinito alloydbsuperuser:

    1. Inserisci il nome del ruolo in Ruoli.
    2. Per aggiungere il ruolo, premi Invio o Tab.
    3. Seleziona x per tutti i ruoli che vuoi rimuovere per l'utente.

      Per saperne di più, consulta Ruoli predefiniti.

  8. 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_BASED

Sostituisci 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, kai@altostrat.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 servizio my-service@my-project.iam.gserviceaccount.com, utilizzeresti il valore my-service@my-project.iam qui.

  • CLUSTER: l'ID del cluster in cui creare questo account utente del database.

  • REGION: ID della regione in cui si trova il cluster. Ad esempio, us-central1.

Concedi le autorizzazioni di database appropriate agli utenti IAM

Quando un utente IAM viene aggiunto a un'istanza di database, per impostazione predefinita non gli vengono concessi privilegi su alcun database.

Quando un utente o un account di servizio si connette a un database, può eseguire query su qualsiasi oggetto di database a cui è stato concesso l'accesso a PUBLIC.

Se hanno bisogno di un accesso aggiuntivo, è possibile concedere ulteriori 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

  1. Vai alla pagina Cluster.

    Vai a Cluster

  2. Fai clic sul nome del cluster da cui vuoi rimuovere l'utente.

  3. Fai clic su Utenti.

  4. Nella riga che rappresenta l'utente che vuoi rimuovere, fai clic su Apri azioni per questo utente.

  5. Seleziona Rimuovi.

  6. 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=REGION

Sostituisci quanto segue:

  • USERNAME: identificatore dell'utente IAM che vuoi rimuovere dal cluster.

    Per un account utente IAM, fornisci l'indirizzo email completo dell'account utente. Ad esempio, kai@altostrat.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 servizio my-service@my-project.iam.gserviceaccount.com, utilizzeresti il valore my-service@my-project.iam qui.

  • CLUSTER: ID del cluster da cui rimuovere questo utente.

  • REGION: ID della regione in cui si trova il cluster. Ad esempio, us-central1.

Passaggi successivi