Saya melihat information_schema.role_table_grants
ketika saya melihat public
di grantee
kolom, maka saya sudah memeriksa information_schema.enabled_roles
tetapi ini role_name
tidak ada.
=> Siapa atau apa public
perannya?
sumber
Saya melihat information_schema.role_table_grants
ketika saya melihat public
di grantee
kolom, maka saya sudah memeriksa information_schema.enabled_roles
tetapi ini role_name
tidak ada.
=> Siapa atau apa public
perannya?
Kata kunci PUBLIC menunjukkan bahwa hak istimewa harus diberikan kepada semua peran, termasuk yang mungkin dibuat nanti. PUBLIC dapat dianggap sebagai kelompok yang didefinisikan secara implisit yang selalu mencakup semua peran. Setiap peran tertentu akan memiliki jumlah hak istimewa yang diberikan secara langsung kepadanya, hak istimewa yang diberikan kepada peran apa pun yang saat ini menjadi anggotanya, dan hak istimewa yang diberikan kepada PUBLIC.
Meskipun ini benar, ini bukan gambaran lengkap. Publik juga bertindak sebagai peran implisit yang dimiliki oleh peran lain dan yang memiliki izinnya sendiri yang tidak selalu tercermin dan dilaporkan yang diwarisi.
Secara default itu memberi izin membuat skema publik. ketika Anda tidak menghapus ini semua langkah-langkah lain yang benar untuk membuat hasil baca-saja pengguna di pengguna itu juga dapat membuat objek baru di skema publik dan kemudian karena kepemilikan memasukkan data di dalamnya. Untuk mencegahnya
REVOKE ALL ON SCHEMA public FROM PUBLIC;
Demikian pula itu juga memberikan izin pada tingkat basis data, untuk menghapus penggunaan
REVOKE ALL ON DATABASE all_database FROM PUBLIC;
Artikel bagus di sini: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf