PostgreSQL - Kto lub co jest rolą „PUBLICZNĄ”?

11

Patrzyłem, information_schema.role_table_grantskiedy zobaczyłem publicw granteekolumnie, a potem sprawdziłem, information_schema.enabled_rolesale to role_namenie istnieje.

=> Kto lub jaka jest publicrola?

Gugelhupf
źródło

Odpowiedzi:

9

Bezpośrednio z instrukcji:

Słowo kluczowe PUBLIC wskazuje, że uprawnienia mają zostać przyznane wszystkim rolom, w tym tym, które mogą zostać utworzone później. PUBLIC można traktować jako domyślnie zdefiniowaną grupę, która zawsze obejmuje wszystkie role. Każda konkretna rola będzie miała sumę przywilejów przyznanych bezpośrednio jej, przywilejów przyznanych każdej roli, której jest obecnie członkiem, oraz przywilejów przyznanych PUBLIC.

koń bez imienia
źródło
7

Chociaż jest to prawda, nie jest to pełny obraz. Publiczny działa również jako domyślna rola, do której należą inne role i który ma własne uprawnienia, które nie zawsze są odzwierciedlane i zgłaszane w przypadku dziedziczenia.

Domyślnie daje uprawnienia do tworzenia schematu publicznego. gdy nie usuniesz tego, wszystkie inne prawidłowe kroki, aby utworzyć użytkownika tylko do odczytu, powoduje, że użytkownik ten może również tworzyć nowe obiekty w schemacie publicznym, a następnie ze względu na prawo własności umieszczać w nich dane. Aby temu zapobiec

REVOKE ALL ON SCHEMA public FROM PUBLIC;

Podobnie daje również uprawnienia na poziomie bazy danych, aby usunąć użycie

REVOKE ALL ON DATABASE all_database FROM PUBLIC;

Dobry artykuł tutaj: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf

Ruan Malan N.
źródło