PostgreSQL - PRIVILEGI

Ogni volta che un oggetto viene creato in un database, gli viene assegnato un proprietario. Il proprietario di solito è colui che ha eseguito l'istruzione di creazione. Per la maggior parte dei tipi di oggetti, lo stato iniziale è che solo il proprietario (o un superutente) può modificare o eliminare l'oggetto. Per consentire ad altri ruoli o utenti di utilizzarlo, è necessario concedere privilegi o autorizzazioni.

Diversi tipi di privilegi in PostgreSQL sono:

  • SELECT,
  • INSERT,
  • UPDATE,
  • DELETE,
  • TRUNCATE,
  • REFERENCES,
  • TRIGGER,
  • CREATE,
  • CONNECT,
  • TEMPORARY,
  • ESEGUI e
  • USAGE

A seconda del tipo di oggetto (tabella, funzione, ecc.), I privilegi vengono applicati all'oggetto. Per assegnare privilegi agli utenti, viene utilizzato il comando GRANT.

Sintassi per GRANT

La sintassi di base per il comando GRANT è la seguente:

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • privilege - i valori possono essere: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object- Il nome di un oggetto a cui concedere l'accesso. I possibili oggetti sono: tabella, vista, sequenza

  • PUBLIC - Un breve modulo che rappresenta tutti gli utenti.

  • GRUPPO group - Un gruppo a cui concedere privilegi.

  • username- Il nome di un utente a cui concedere i privilegi. PUBLIC è una forma breve che rappresenta tutti gli utenti.

I privilegi possono essere revocati utilizzando il comando REVOKE.

Sintassi per REVOKE

La sintassi di base per il comando REVOKE è la seguente:

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
  • privilege - i valori possono essere: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object- Il nome di un oggetto a cui concedere l'accesso. I possibili oggetti sono: tabella, vista, sequenza

  • PUBLIC - Un breve modulo che rappresenta tutti gli utenti.

  • GRUPPO group - Un gruppo a cui concedere privilegi.

  • username- Il nome di un utente a cui concedere i privilegi. PUBLIC è una forma breve che rappresenta tutti gli utenti.

Esempio

Per comprendere i privilegi, creiamo prima un UTENTE come segue:

testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE

Il messaggio CREATE ROLE indica che l'UTENTE "manisha" è stato creato.

Considera che la tabella AZIENDA ha i record come segue:

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Successivamente, concediamo tutti i privilegi su una tabella COMPANY all'utente "manisha" come segue:

testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT

Il messaggio GRANT indica che tutti i privilegi sono assegnati all'UTENTE.

Successivamente, revociamo i privilegi all'UTENTE "manisha" come segue:

testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE

Il messaggio REVOKE indica che tutti i privilegi sono stati revocati all'UTENTE.

Puoi anche eliminare l'utente come segue:

testdb=# DROP USER manisha;
DROP ROLE

Il messaggio DROP ROLE indica che l'UTENTE "Manisha" è stato cancellato dal database.