PostgreSQL - Chi o qual è il ruolo "PUBBLICO"?


11

Stavo guardando information_schema.role_table_grantsquando ho visto publicnella granteecolonna, quindi ho controllato information_schema.enabled_rolesma questo role_namenon esiste.

=> Chi o qual è il publicruolo?

Risposte:


9

Direttamente dal manuale:

La parola chiave PUBLIC indica che i privilegi devono essere concessi a tutti i ruoli, inclusi quelli che potrebbero essere creati in seguito. PUBLIC può essere pensato come un gruppo implicitamente definito che include sempre tutti i ruoli. Ogni ruolo particolare avrà la somma di privilegi concessi direttamente ad esso, privilegi concessi a qualsiasi ruolo di cui è attualmente membro e privilegi concessi a PUBLIC.


7

Mentre questo è vero, non è il quadro completo. Il pubblico agisce anche come un ruolo implicito a cui appartengono altri ruoli e che ha le proprie autorizzazioni non sempre riflesse e segnalate che vengono ereditate.

Per impostazione predefinita, dà l'autorizzazione di creazione allo schema pubblico. quando non si rimuovono tutti gli altri passaggi corretti per creare un utente di sola lettura, si ottiene che quell'utente è anche in grado di creare nuovi oggetti nello schema pubblico e quindi a causa della proprietà inserire i dati in essi. Per evitare questo

REVOKE ALL ON SCHEMA public FROM PUBLIC;

Allo stesso modo dà anche l'autorizzazione a livello di database, per rimuovere l'uso

REVOKE ALL ON DATABASE all_database FROM PUBLIC;

Buon articolo qui: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.