Questa pagina descrive come Cloud SQL funziona con utenti e ruoli PostgreSQL. I ruoli PostgreSQL consentono di controllare l'accesso e le funzionalità degli utenti che accedono a un'istanza PostgreSQL.
Per la documentazione completa sui ruoli PostgreSQL, consulta la sezione Ruoli del database nella documentazione di PostgreSQL. Per informazioni sulla creazione e la gestione degli utenti Cloud SQL, consulta Creazione e gestione di utenti.
Differenza tra utenti e ruoli
I ruoli PostgreSQL possono essere un singolo ruolo o possono funzionare come un 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 ruolo e utente in modo intercambiabile.
Tuttavia, se crei un ruolo con il cliente psql
, il ruolo non
dispone necessariamente dell'attributo LOGIN
.
Tutti gli utenti PostgreSQL devono avere una password. Non puoi accedere con un utente senza password.
Limitazioni e privilegi di superutente
Cloud SQL per PostgreSQL è un servizio gestito, pertanto limita l'accesso ad alcune 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 del database con privilegi di superuser. Tuttavia, puoi creare utenti del database con il ruolo cloudsqlsuperuser
, che dispone di alcuni privilegi di superuser, tra cui:
- Creazione di estensioni che richiedono privilegi di superutente.
- Creazione di trigger di eventi.
- Creazione degli utenti di replica.
- Creazione di pubblicazioni e sottoscrizioni di replica.
Esecuzione delle istruzioni
CREATE CAST
eDROP CAST
come utente del database con il ruolocloudsqlsuperuser
. Tuttavia, questo utente deve disporre del privilegioUSAGE
sia sui tipi di dati di origine sia su quelli di destinazione. Ad esempio, un utente può creare un cast che converte il tipo di datiint
di origine nel tipo di datiboolean
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 postgres
predefinito, ma non la relativa password. Devi
impostare una password per questo utente prima di poter accedere. Puoi farlo 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 il set minimo di
privilegi necessari per le operazioni di importazione/esportazione CSV. Puoi
creare i tuoi utenti per eseguire queste operazioni, ma se non lo fai, viene 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
Identity and Access Management (IAM) è integrato con Cloud SQL in una funzionalità chiamata autenticazione IAM. Quando crei istanze utilizzando questa funzionalità, gli utenti IAM possono accedere all'istanza utilizzando i propri nomi utente e password IAM. Il vantaggio dell'utilizzo dell'autenticazione IAM è che puoi utilizzare le credenziali IAM esistenti di un utente quando gli concedi l'accesso a un database. Quando l'utente lascia l'organizzazione, il suo account IAM viene sospeso, rimuovendo automaticamente il suo accesso.
Altri utenti PostgreSQL
Puoi creare altri utenti PostgreSQL o ruoli. Tutti gli utenti che
crei utilizzando Cloud SQL vengono creati nell'ambito del ruolo cloudsqlsuperuser
e hanno lo stesso insieme 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 visualizzazione pg_shadow
per
lavorare con le proprietà dei ruoli contrassegnati come rolcanlogin
nella
tabella del catalogo
pg_authid
.
La visualizzazione pg_shadow
contiene password sottoposte ad hashing e altre proprietà
dei ruoli (utenti) autorizzati ad accedere a un cluster. La tabella del catalogo pg_authid
contiene password sottoposte ad hashing e altre proprietà per tutti i ruoli del database.
In Cloud SQL, i clienti non possono accedere alla vista pg_shadow
o alla tabella pg_authid
utilizzando i privilegi predefiniti. Tuttavia, l'accesso ai nomi dei ruoli e alle password sottoposte ad hashing
è utile in determinate situazioni, tra cui:
- Configurazione di proxy o bilanciamento del carico con utenti e password esistenti
- Eseguire la migrazione degli utenti senza modifiche alle password
- Implementazione di soluzioni personalizzate per la gestione delle policy relative alle password
Impostazione dei flag per la visualizzazione pg_shadow
e la tabella pg_authid
Per accedere alla visualizzazione pg_shadow
, imposta il flag cloudsql.pg_shadow_select_role
sul nome di un ruolo PostgreSQL. Per accedere alla tabella pg_authid
, imposta il flag
cloudsql.pg_authid_select_role
su un nome di ruolo PostgreSQL.
Se cloudsql.pg_shadow_select_role
esiste, ha accesso di sola lettura (SELECT
)
alla vista pg_shadow
. Se cloudsql.pg_authid_select_role
esiste,
allora ha accesso SELECT
alla tabella pg_authid
.
Se uno dei due ruoli non esiste, le impostazioni non hanno effetto, ma non si verifica alcun errore.
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 delle istanze.
Assicurati che i ruoli configurati esistano e che non ci siano errori di battitura nel valore
del flag cloudsql.pg_shadow_select_role
o del 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 di informazioni di sistema.
Puoi utilizzare il flag cloudsql.pg_shadow_select_role
o il flag 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, vedi Configurare i flag di database.
Scegliere un formato di archiviazione delle password
Cloud SQL per PostgreSQL archivia le password degli utenti in formato 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
- Creare e gestire gli utenti.
- Crea e gestisci i database.
- Consulta la documentazione di PostgreSQL sui ruoli.
- Scopri le opzioni per connetterti all'istanza.