Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Controllo dell'accesso utente al database PostgreSQL
I nuovi database in PostgreSQL vengono sempre creati con un set predefinito di privilegi nel schema public
del database, che consente a tutti gli utenti e i ruoli del database di creare oggetti. I privilegi predefiniti permettono agli utenti del database di connettersi al database e di creare tabelle temporanee durante la connessione.
Per controllare meglio l'accesso degli utenti alle istanze database create sull'istanza database RDS per PostgreSQL, si consiglia di revocare questi privilegi public
predefiniti. Dopo averlo fatto, è consigliabile concedere privilegi specifici agli utenti del database su base più granulare, come mostrato nella procedura seguente.
Per impostare ruoli e privilegi per una nuova istanza database
Si supponga di aver configurando un database in un'istanza database RDS per PostgreSQL per poter essere usato da diversi ricercatori, che dovranno avere l'accesso in lettura-scrittura al database.
-
Utilizzare
psql
(o pgAdmin) per connettersi all'istanza database RDS per PostgreSQL:psql --host=
your-db-instance.666666666666
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --passwordSpecifica la password, quando richiesto. Il client
psql
si connette e visualizza il database di connessione amministrativa predefinitopostgres=>
come prompt. -
Per impedire agli utenti del database di creare oggetti nello schema
public
, eseguire le seguenti operazioni:postgres=>
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE
-
Creare quindi una nuova istanza database:
postgres=>
CREATE DATABASE
lab_db
;CREATE DATABASE
-
Revocare tutti i privilegi dallo schema
PUBLIC
in questo nuovo database.postgres=>
REVOKE ALL ON DATABASE
lab_db
FROM public;REVOKE
-
Creare un ruolo per gli utenti del database.
postgres=>
CREATE ROLE
lab_tech
;CREATE ROLE
-
Concedere agli utenti del database con questo ruolo la possibilità di connettersi al database.
postgres=>
GRANT CONNECT ON DATABASE
lab_db
TOlab_tech
;GRANT
-
Concedere a tutti gli utenti con il ruolo
lab_tech
tutti i privilegi per questo database.postgres=>
GRANT ALL PRIVILEGES ON DATABASE
lab_db
TOlab_tech
;GRANT
-
Creare utenti del database, come segue:
postgres=>
CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me';
CREATE ROLE
postgres=>
CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me';
CREATE ROLE
-
Concedere a questi due utenti i privilegi associati al ruolo lab_tech:
postgres=>
GRANT lab_tech TO lab_user1;
GRANT ROLE
postgres=>
GRANT lab_tech TO lab_user2;
GRANT ROLE
A questo punto, lab_user1
e lab_user2
possono connettersi al database lab_db
. Questo esempio non segue le best practice per l'utilizzo aziendale, che potrebbero includere la creazione di più istanze database, schemi diversi e la concessione di autorizzazioni limitate. Per informazioni più complete e scenari aggiuntivi, consulta Gestione di utenti e ruoli PostgreSQL
Per ulteriori informazioni sui privilegi in database PostgreSQL, consulta la sezione relativa al comando GRANT