sql >> Databáze >  >> RDS >> PostgreSQL

Co přesně dělá GRANT USAGE ON SCHEMA?

GRANT s na různých objektech jsou oddělené. GRANT ing na databázi GRANT práva na schéma uvnitř. Podobně GRANT ing na schématu neuděluje práva na tabulky uvnitř.

Pokud máte práva SELECT z tabulky, ale nemáte právo ji vidět ve schématu, které ji obsahuje, pak k tabulce nemáte přístup.

Testy práv se provádějí v pořadí:

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.

Váš zmatek může vyplynout ze skutečnosti, že public schéma má výchozí GRANT všech práv k roli public , jehož členem je každý uživatel/skupina. Takže každý už má toto schéma využití.

Fráze:

(za předpokladu, že jsou splněny i požadavky na vlastní oprávnění objektů)

Říká, že musíte mít USAGE na schématu k použití objektů v něm, ale má USAGE na schématu samo o sobě nestačí k použití objektů ve schématu, musíte mít také práva na samotné objekty.

Je to jako strom adresářů. Pokud vytvoříte adresář somedir se souborem somefile v něm pak nastavte tak, aby k adresáři nebo souboru měl přístup pouze váš vlastní uživatel (režim rwx------ v adresáři, režim rw------- na souboru), pak nikdo jiný nemůže vypsat adresář, aby viděl, že soubor existuje.

Pokud byste měli udělit práva na čtení celého souboru (režim rw-r--r-- ), ale nezměníte oprávnění k adresáři, nebude to žádný rozdíl. Nikdo nemohl vidět soubor, aby si ho přečetli, protože nemají práva k výpisu adresáře.

Pokud místo toho nastavíte rwx-r-xr-x v adresáři nastavením tak, aby lidé mohli vypisovat a procházet adresář, ale beze změny oprávnění k souboru, lidé mohli vypisovat soubor, ale nemohl číst protože by k souboru neměli přístup.

Musíte nastavit obě oprávnění pro lidi, aby skutečně mohli soubor prohlížet.

Totéž v Pg. Potřebujete obě schémata USAGE práva a práva objektu k provedení akce s objektem, jako je SELECT ze stolu.

(Analogie trochu klesá v tom, že PostgreSQL zatím nemá zabezpečení na úrovni řádků, takže uživatel může stále "vidět", že tabulka ve schématu existuje pomocí SELECT z pg_class přímo. Nemohou s ním však žádným způsobem interagovat, takže je to jen část „seznamu“, která není úplně stejná.)



  1. Export CLOB do textového souboru pomocí Oracle SQL Developer

  2. Určení data Velikonoc pro jakýkoli rok v Oracle PLSQL

  3. Jak získat aktuální týdenní data v MySQL

  4. Vygenerujte časové období ze dvou datových sloupců