PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czym dokładnie jest GRANT USAGE ON SCHEMA?

GRANT s na różnych obiektach są oddzielne. GRANT w bazie danych nie GRANT prawa do schematu w obrębie. Podobnie, GRANT ing na schemacie nie daje praw do tabel wewnątrz.

Jeśli masz prawa do SELECT z tabeli, ale bez prawa do zobaczenia go w schemacie, który go zawiera, wtedy nie będziesz mieć dostępu do tabeli.

Testy uprawnień są wykonywane w kolejności:

Do you have `USAGE` on the schema? 
    No:  Reject access. 
    Yes: Do you also have the appropriate rights on the table? 
        No:  Reject access. 
        Yes: Check column privileges.

Twoje zamieszanie może wynikać z faktu, że public schemat ma domyślny GRANT wszystkich praw do roli public , którego członkiem jest każdy użytkownik/grupa. Więc każdy już korzysta z tego schematu.

Wyrażenie:

(zakładając, że spełnione są również własne wymagania dotyczące uprawnień obiektów)

Mówi, że musisz mieć USAGE na schemacie, aby używać w nim obiektów, ale mając USAGE na schemacie sam w sobie nie wystarcza do korzystania z obiektów w schemacie, musisz mieć również uprawnienia do samych obiektów.

To jest jak drzewo katalogów. Jeśli utworzysz katalog somedir z plikiem somefile wewnątrz niego, a następnie ustaw go tak, aby tylko twój własny użytkownik miał dostęp do katalogu lub pliku (tryb rwx------ w katalogu, tryb rw------- pliku), nikt inny nie będzie mógł wyświetlić katalogu, aby zobaczyć, czy plik istnieje.

Jeśli miałbyś przyznać prawa do odczytu światowego na pliku (tryb rw-r--r-- ), ale nie zmieniaj uprawnień do katalogów, nie miałoby to żadnego znaczenia. Nikt nie mógł zobaczyć plik, aby go odczytać, ponieważ nie mają uprawnień do wyświetlenia katalogu.

Jeśli zamiast tego ustawisz rwx-r-xr-x w katalogu, ustawiając go tak, aby ludzie mogli wyświetlać i przeglądać katalog, ale bez zmieniania uprawnień do plików, ludzie mogliby listować plik, ale nie mógł odczytać ponieważ nie mieliby dostępu do pliku.

Musisz ustawić oba uprawnienia umożliwiające ludziom wyświetlanie pliku.

To samo w Pg. Potrzebujesz obu schematów USAGE prawa i prawa obiektu do wykonania akcji na obiekcie, np. SELECT ze stołu.

(Analogia nieco spada w tym, że PostgreSQL nie ma jeszcze zabezpieczeń na poziomie wiersza, więc użytkownik nadal może "zobaczyć", że tabela istnieje w schemacie przez SELECT ing z pg_class bezpośrednio. Nie mogą jednak w żaden sposób z nią wchodzić w interakcje, więc to tylko część „lista”, która nie jest taka sama.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aktualizacja do PostgreSQL 11 z replikacją logiczną

  2. Pula połączeń bazy danych pracownika selera

  3. Pierwsze kroki z PostgreSQL 11 na Ubuntu 18.04

  4. Migracja baz danych PostgreSQL ze środowiska lokalnego do chmury przy użyciu AWS RDS

  5. Nielegalna instrukcja:4 podczas uruchamiania Django