Informazioni su utenti e ruoli PostgreSQL

Questa pagina descrive come funziona Cloud SQL con gli utenti e i ruoli PostgreSQL. I ruoli PostgreSQL ti consentono di controllare l'accesso e le funzionalità degli utenti che accedono a un'istanza PostgreSQL.

Per la documentazione completa sui ruoli PostgreSQL, consulta Ruoli database nella documentazione PostgreSQL. Per informazioni sulla creazione e sulla gestione degli utenti di Cloud SQL, consulta Creare e gestire gli utenti.

Differenza tra utenti e ruoli

I ruoli PostgreSQL possono essere ruoli singoli o come gruppo di ruoli. Un utente è un ruolo con la possibilità di accedere (il ruolo ha l'attributo LOGIN). Poiché tutti i ruoli creati da Cloud SQL hanno l'attributo LOGIN, Cloud SQL utilizza i termini role e user in modo intercambiabile. Tuttavia, se crei un ruolo con il client psql, il ruolo non include necessariamente l'attributo LOGIN.

Tutti gli utenti PostgreSQL devono avere una password. Non puoi accedere con un utente sprovvisto di password.

Limitazioni e privilegi dei super user

Cloud SQL per PostgreSQL è un servizio gestito, quindi limita l'accesso a determinate procedure e tabelle di sistema che richiedono privilegi avanzati. In Cloud SQL, i clienti non possono creare o avere accesso a utenti con attributi super user.

Non puoi creare utenti di database con privilegi di super user. Tuttavia, puoi creare utenti del database con il ruolo cloudsqlsuperuser, che dispone di alcuni privilegi di super user, tra cui:

  • Creazione di estensioni che richiedono privilegi di super user.
  • Creazione dei trigger di eventi.
  • Creazione degli utenti di replica in corso...
  • Creazione di pubblicazioni e abbonamenti nella replica.
  • Esecuzione delle istruzioni CREATE CAST e DROP CAST come utente del database con il ruolo cloudsqlsuperuser. Tuttavia, questo utente deve disporre del privilegio USAGE sia per il tipo di dati di origine che per quello di destinazione. Ad esempio, un utente può creare una trasmissione che converte il tipo di dati di origine int nel tipo di dati boolean di destinazione.

  • Disporre dell'accesso completo alla tabella del catalogo pg_largeobject.

Utenti PostgreSQL predefiniti

Quando crei una nuova istanza Cloud SQL per PostgreSQL, viene creato l'utente amministratore predefinito postgres, ma non la sua password. Devi impostare una password per questo utente prima di poter accedere. Puoi eseguire questa operazione nella console Google Cloud o utilizzando il seguente comando gcloud:

gcloud sql users set-password postgres \
--instance=INSTANCE_NAME \
--password=PASSWORD

L'utente postgres fa parte del ruolo cloudsqlsuperuser e dispone dei seguenti attributi (privilegi): CREATEROLE, CREATEDB e LOGIN. Non ha gli attributi SUPERUSER o REPLICATION.

Viene creato un utente cloudsqlimportexport predefinito con l'insieme minimo di privilegi necessari per le operazioni di importazione/esportazione di file CSV. Puoi creare utenti personalizzati per eseguire queste operazioni, ma in caso contrario, verrà utilizzato l'utente cloudsqlimportexport predefinito. L'utente cloudsqlimportexport è un utente di sistema e i clienti non possono utilizzarlo direttamente.

Utenti IAM di Cloud SQL per l'autenticazione IAM dei database

IAM è integrato con Cloud SQL in una funzionalità denominata autenticazione dei database IAM. Quando crei istanze utilizzando questa funzionalità, gli utenti IAM possono accedere all'istanza utilizzando il proprio nome utente e la propria password IAM. Il vantaggio dell'autenticazione dei database IAM è che puoi utilizzare le credenziali IAM esistenti di un utente quando gli viene concesso l'accesso a un database. Quando l'utente lascia l'organizzazione, il suo account IAM viene sospeso e l'accesso viene rimosso automaticamente. Per saperne di più sull'autenticazione IAM dei database, consulta Autenticazione IAM dei database Cloud SQL.

Altri utenti PostgreSQL

Puoi creare altri utenti o ruoli PostgreSQL. Tutti gli utenti che crei utilizzando Cloud SQL vengono creati come parte del ruolo cloudsqlsuperuser e hanno lo stesso set di attributi dell'utente postgres: CREATEROLE, CREATEDB e LOGIN. Puoi modificare gli attributi di qualsiasi utente utilizzando il comando ALTER ROLE.

Se crei un nuovo utente con il client psql, puoi scegliere di associarlo a un ruolo diverso o di assegnargli attributi diversi.

Accesso alla visualizzazione pg_shadow e alla tabella pg_authid

Puoi utilizzare la vista pg_shadow per utilizzare le proprietà dei ruoli contrassegnati come rolcanlogin nella tabella del catalogo pg_authid.

La vista pg_shadow contiene password con hash e altre proprietà dei ruoli (utenti) autorizzati ad accedere a un cluster. La tabella del catalogo pg_authid contiene password con hash e altre proprietà per tutti i ruoli del database.

In Cloud SQL, i clienti non possono accedere alla visualizzazione pg_shadow o alla tabella pg_authid utilizzando i privilegi predefiniti. Tuttavia, l'accesso ai nomi dei ruoli e alle password con hash è utile in determinate situazioni, ad esempio:

  • Configurazione dei proxy o del bilanciamento del carico con utenti e password esistenti
  • Migrazione degli utenti senza modifiche delle password
  • Implementazione di soluzioni personalizzate per la gestione dei criteri relativi alle password

Impostazione dei flag per la vista pg_shadow e la tabella pg_authid

Per accedere alla vista pg_shadow, imposta il flag cloudsql.pg_shadow_select_role su un nome per il ruolo PostgreSQL. Per accedere alla tabella pg_authid, imposta il flag cloudsql.pg_authid_select_role su un nome del ruolo PostgreSQL.

Se cloudsql.pg_shadow_select_role esiste, può accedere di sola lettura (SELECT) alla vista pg_shadow. Se cloudsql.pg_authid_select_role esiste, ha accesso SELECT alla tabella pg_authid.

Se nessuno dei ruoli esiste, le impostazioni non hanno effetto, ma non si verificano errori. Tuttavia, viene registrato un errore quando un utente tenta di accedere alla visualizzazione o alla tabella. L'errore viene registrato nel log del database PostgreSQL: cloudsql.googleapis.com/postgres.log. Per informazioni sulla visualizzazione di questo log, vedi Visualizzare i log dell'istanza.

Assicurati che i ruoli configurati esistano e che non vi sia un errore di battitura nel valore del flag cloudsql.pg_shadow_select_role o nel flag cloudsql.pg_authid_select_role. Puoi anche utilizzare la funzione pg_has_role per verificare che un utente sia membro di questi ruoli. Le informazioni su questa funzione sono disponibili nella pagina Funzioni e operatori delle informazioni di sistema.

Puoi utilizzare il flag cloudsql.pg_shadow_select_role o cloudsql.pg_authid_select_role con l'appartenenza al ruolo PostgreSQL per gestire l'accesso pg_shadow o pg_authid per più utenti.

Le modifiche a entrambi i flag non richiedono il riavvio del database.

Per ulteriori informazioni sui flag supportati, consulta Configurare i flag di database.

Scegliere un formato di archiviazione delle password

Cloud SQL per PostgreSQL archivia le password degli utenti in formato con hash. Puoi utilizzare il flag password_encryption per impostare l'algoritmo di crittografia su md5 o scram-sha-256. L'algoritmo md5 offre la compatibilità più ampia, mentre scram-sha-256 è più sicuro, ma potrebbe essere incompatibile con i client meno recenti.

Quando abiliti l'accesso pg_shadow per esportare le proprietà dei ruoli da un'istanza Cloud SQL, valuta la possibilità di utilizzare l'algoritmo più sicuro supportato dai tuoi client.

Nella documentazione di PostgreSQL, vedi anche:

Passaggi successivi