Concedere autorizzazioni in database SQL di Azure per PostgreSQL
Per consentire agli utenti di accedere ai database ospitati nel server di Database di Azure per PostgreSQL, è necessario creare ruoli (utenti) e concedere o negare privilegi agli oggetti di database.
Creare utenti di database in Database di Azure per PostgreSQL
In Azure Data Studio (o nello strumento client preferito) connettersi al server di Database di Azure per PostgreSQL con le credenziali di accesso amministratore.
Con il database pertinente come database corrente, usare
CREATE ROLE
con le opzioni pertinenti per creare un nuovo ruolo (utente).Ad esempio, la query seguente:
- Crea un nuovo database denominato testdb.
- Crea un nuovo utente con una password complessa.
- Concede privilegi di connessione al database testdb.
CREATE DATABASE testdb; CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>'; GRANT CONNECT ON DATABASE testdb TO <db_user>;
Per provare la query, è possibile sostituire i segnaposto con le informazioni utente.
È quindi possibile concedere altri privilegi agli oggetti all'interno del database. Ad esempio:
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
La sintassi per CREATE ROLE è:
CREATE ROLE name [ [ WITH ] option [ ... ] ]
L'opzione WHERE può essere:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
I parametri facoltativi sono:
- SUPERUSER | NOSUPERUSER: impossibile assegnare privilegi SUPERUSER all'interno di Database di Azure per PostgreSQL. Se non specificato, NOSUPERUSER è l'impostazione predefinita.
- CREATEDB | NOCREATEDB: indica se il ruolo può creare database. Il valore predefinito è NOCREATEDB.
- CREATEROLE | NOCREATEROLE: indica se il ruolo può creare nuovi ruoli, ovvero eseguire CREATE ROLE. Se viene concesso il privilegio CREATEROLE, il ruolo può anche modificare ed eliminare altri ruoli. NOCREATEROLE è l'impostazione predefinita.
- INHERIT | NOINHERIT: indica se il ruolo eredita i privilegi dei ruoli di cui è membro diretto o indiretto. INHERIT è l'impostazione predefinita.
- LOGIN | NOLOGIN: indica se è consentito l'accesso a un ruolo. Un ruolo con l'attributo LOGIN è un utente del database. I ruoli senza l'attributo LOGIN possono essere usati per la gestione dei privilegi del database. NOLOGIN è l'impostazione predefinita.
- REPLICATION | NOREPLICATION: indica se un ruolo è un ruolo di replica. Un ruolo deve avere questo attributo per connettersi al server in modalità di replica e per creare o eliminare slot di replica. L'attributo REPLICATION è un ruolo con privilegi che deve essere usato solo per la replica. NOREPLICATION è l'impostazione predefinita. Per creare questo ruolo, è necessario essere membro di azure_pg_admin.
- | BYPASSRLS NOBYPASSRLS: indica se un ruolo ignora tutti i criteri di sicurezza a livello di riga.
- CONNECTION LIMIT connlimit: specifica il numero di connessioni simultanee che possono essere eseguite da un ruolo che può effettuare l'accesso. Il valore predefinito è -1. Questo parametro non prevede un limite per le connessioni simultanee.
- [ ENCRYPTED ] PASSWORD 'password'| PASSWORD NULL: imposta la password del ruolo. Una password viene usata solo dai ruoli con l'attributo LOGIN. Se non viene specificata alcuna password, la password è NULL e l'autenticazione con password ha esito negativo. In alternativa, specificare in modo esplicito PASSWORD NULL.
- VALID UNTIL 'timestamp': data e ora dopo la quale la password del ruolo non è più valida. Se il valore viene omesso, non è previsto alcun limite di tempo per la password.
- IN ROLE role_name: uno o più ruoli a cui viene aggiunto il nuovo ruolo come nuovo membro. Impossibile aggiungere un nuovo ruolo come amministratore; usare il comando GRANT.
- IN GROUP role_name: un'alternativa obsoleta a IN ROLE.
- ROLE role_name: uno o più ruoli vengono aggiunti come membri del nuovo ruolo. (In questo modo, il nuovo ruolo diventa un gruppo.)
- ADMIN role_name: la clausola ADMIN è simile a ROLE, ma i ruoli denominati vengono aggiunti al nuovo ruolo WITH ADMIN OPTION, dando loro il diritto di concedere l'appartenenza a questo ruolo ad altri utenti.
Nota
È possibile modificare gli attributi di un ruolo con ALTER ROLE e rimuovere un ruolo con DROP ROLE.