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.