PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Какво точно прави ИЗПОЛЗВАНЕТО НА GRANT ON SCHEMA?

GRANT s на различни обекти са отделни. GRANT въвеждането в база данни не GRANT права върху схемата вътре. По същия начин, GRANT въвеждането на схема не предоставя права върху таблиците в нея.

Ако имате права за SELECT от таблица, но не и правото да го видите в схемата, която го съдържа, тогава няма да имате достъп до таблицата.

Тестовете за права се извършват в следния ред:

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.

Вашето объркване може да възникне от факта, че public схемата има по подразбиране GRANT на всички права върху ролята public , в който членува всеки потребител/група. Така че всички вече използват тази схема.

Фразата:

(ако приемем, че изискванията за собствени привилегии на обектите също са изпълнени)

Казва, че трябва да имате USAGE на схема, за да използвате обекти в нея, но с USAGE върху схема не е достатъчно само по себе си, за да използвате обектите в схемата, вие също трябва да имате права върху самите обекти.

Това е като дърво на директории. Ако създадете директория somedir с файл somefile в него след това го настройте така, че само вашият собствен потребител да има достъп до директорията или файла (режим rwx------ в директорията, режим rw------- на файла), тогава никой друг не може да изброи директорията, за да види, че файлът съществува.

Ако трябваше да предоставите права за четене по света на файла (режим rw-r--r-- ), но без промяна на разрешенията за директория, няма да има разлика. Никой не можеше да види файла, за да го прочетат, защото те нямат правата да изброяват директорията.

Ако вместо това зададете rwx-r-xr-x в директорията, като я настроите така, че хората да могат да изброяват и преминават през директорията, но без да променят разрешенията за файлове, хората могат да изброяват файла, но не можа да прочете защото няма да имат достъп до файла.

Трябва да зададете и двете разрешения за хората действително да могат да преглеждат файла.

Същото нещо в стр. Трябват ви и двете схеми USAGE права и права за обект за извършване на действие върху обект, като SELECT от маса.

(Аналогията пада малко в това, че PostgreSQL все още няма сигурност на ниво ред, така че потребителят все още може да "вижда", че таблицата съществува в схемата чрез SELECT от pg_class директно. Те обаче не могат да взаимодействат с него по никакъв начин, така че просто частта „списък“ не е съвсем същата.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Превключване/Обратно превключване в Slony-I при надграждане на основните версии на PostgreSQL 8.4.x/9.3.x

  2. Промяна на езика на системата и съобщенията за грешки в PostgreSQL

  3. Безопасно преименувайте таблици, като използвате колони от сериен първичен ключ

  4. Изгледи на списъци на PostgreSQL

  5. Най-добри практики за сигурност на PostgreSQL