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 di PostgreSQL. Per informazioni sulla creazione e la 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 il LOGIN
). Poiché tutti i ruoli creati da Cloud SQL hanno il LOGIN
, Cloud SQL utilizza i termini role e user in modo intercambiabile.
Tuttavia, se crei un ruolo con il client psql
, il ruolo non verrà
contengono necessariamente l'attributo LOGIN
.
Tutti gli utenti PostgreSQL devono avere una password. Non puoi accedere con un utente che non ha una 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. Nel Cloud SQL, i clienti non possono creare o avere accesso a utenti con super user attributi.
Non puoi creare utenti di database con privilegi di super user. Tuttavia,
può 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
eDROP CAST
come utente del database con il ruolocloudsqlsuperuser
. Tuttavia, questo utente deve disporre del privilegioUSAGE
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 origineint
nel tipo di datiboolean
di destinazione.- Disporre dell'accesso completo al
pg_largeobject
tabella del catalogo.
Utenti PostgreSQL predefiniti
Quando crei una nuova istanza Cloud SQL per PostgreSQL, lo stato predefinito
L'utente amministratore postgres
è stato creato, ma non la sua password. Devi
imposta 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
ha il ruolo cloudsqlsuperuser
e
ha i seguenti attributi (privilegi): CREATEROLE
,
CREATEDB
e LOGIN
. Non presenta SUPERUSER
o REPLICATION
attributi.
Viene creato un utente cloudsqlimportexport
predefinito con l'insieme minimo di
necessari per le operazioni di importazione/esportazione di file CSV. Puoi
creare i tuoi utenti per eseguire queste operazioni. In caso contrario, l'impostazione predefinita
cloudsqlimportexport
utente utilizzato. L'utente cloudsqlimportexport
è
un utente del sistema e i clienti non possono usarlo direttamente.
Utenti IAM di Cloud SQL per l'autenticazione IAM dei database
IAM è integrato con Cloud SQL in una funzionalità chiamata Autenticazione IAM dei database. Quando crei istanze utilizzando questa funzionalità, IAM gli utenti possono accedere all'istanza utilizzando il proprio nome utente IAM password. Il vantaggio dell'autenticazione IAM dei database è che consente di utilizzare le credenziali IAM esistenti quando concedi l'accesso a un database. Quando l'utente lascia l'organizzazione, il suo account IAM viene sospeso, rimuovendo automaticamente il suo accesso. 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
create con Cloud SQL vengono create nell'ambito di cloudsqlsuperuser
e avere lo stesso insieme di attributi dell'utente postgres
: CREATEROLE
,
CREATEDB
e LOGIN
. Puoi modificare gli attributi di qualsiasi utente utilizzando il metodo
ALTER ROLE.
Se crei un nuovo utente con il client psql
, puoi scegliere
per associarlo a un ruolo diverso o assegnargli attributi diversi.
Accesso alla visualizzazione pg_shadow
e alla tabella pg_authid
Puoi utilizzare la vista pg_shadow
per
lavorare con le proprietà dei ruoli contrassegnati come rolcanlogin
nel
pg_authid
nella tabella del catalogo.
La vista pg_shadow
contiene password con hash e altre proprietà
dei ruoli (utenti) autorizzati ad accedere a un cluster. 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
usando i privilegi predefiniti. Tuttavia, l'accesso ai nomi dei ruoli e alle password con hash
è utile in determinate situazioni, tra cui:
- 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 cloudsql.pg_shadow_select_role
a un nome ruolo PostgreSQL. Per accedere alla tabella pg_authid
, imposta il valore
cloudsql.pg_authid_select_role
a un nome ruolo PostgreSQL.
Se cloudsql.pg_shadow_select_role
esiste, è di sola lettura (SELECT
)
l'accesso alla vista pg_shadow
. Se il criterio cloudsql.pg_authid_select_role
esiste,
quindi avrà 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 sia presente un errore di battitura nel valore
del flag cloudsql.pg_shadow_select_role
o cloudsql.pg_authid_select_role
flag. Puoi anche utilizzare la funzione pg_has_role
per verificare che un utente sia un
di questi ruoli. Le informazioni su questa funzione sono disponibili nella
Funzioni e operatori delle informazioni di sistema
.
Puoi usare il flag cloudsql.pg_shadow_select_role
o il metodo
Flag cloudsql.pg_authid_select_role
con
Appartenenza al ruolo PostgreSQL
per gestire l'accesso a 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 usare il flag password_encryption
per impostare l'algoritmo di crittografia
a md5
o scram-sha-256
. L'algoritmo md5
fornisce
la compatibilità più ampia, mentre scram-sha-256
è più sicuro ma potrebbe
incompatibili con i client precedenti.
Quando abiliti l'accesso pg_shadow
per esportare le proprietà dei ruoli da un ambiente Cloud SQL
prendi in considerazione l'utilizzo dell'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 la connessione all'istanza.