Postgres pro standard de documentare 9

comanda GRANT are două variante de bază: primul cesioneaza drepturile de a avea acces la obiectele bazei de date (tabele, coloane, vederi, tabele în afara, secvențe, baze de date, date înveliș terță parte, funcțiile de server-side, limbaj procedural, scheme sau spații de masă), și al doilea atribuie un rol membrilor celorlalți. Aceste specii sunt similare în multe privințe, dar au destule diferențe pentru a le considera separat.







GRANT pentru obiecte baze de date

Această versiune a comenzii GRANT oferă unuia sau mai multor roluri unele drepturi de acces la obiectul bazei de date. Aceste drepturi sunt adăugate la lista drepturilor disponibile dacă rolul este deja înzestrat cu anumite drepturi.

De asemenea, puteți da un rol drept pentru toate obiectele de același tip în una sau mai multe scheme. Această funcție este în prezent acceptată numai pentru tabele, secvențe și funcții (însă rețineți că instrucțiunea ALL TABLES se aplică, de asemenea, vizualizărilor și tabelelor terților).

Cuvântul PUBLIC înseamnă că drepturile sunt acordate tuturor rolurilor, inclusiv celor care pot fi create ulterior. PUBLIC poate fi perceput ca un grup implicit definit, care include toate rolurile. Orice rol special va primi în totalitate toate drepturile care îi sunt acordate direct și rolurile de care este membru, precum și drepturile acordate rolului PUBLIC.

Dacă este specificată opțiunea GRANT OPTION. Beneficiarul dreptului, la rândul său, îl poate da și altora. Fără această instrucțiune, el nu va putea să renunțe la dreptul său. PUBLIC nu poate primi dreptul de a transfera dreptul.

Nu este necesar să acordăm în mod explicit drepturi de acces la obiect proprietarului său (de obicei utilizatorul care a creat obiectul), deoarece în mod implicit are toate drepturile. (Cu toate acestea, proprietarul se poate lipsi de drepturile sale din motive de securitate.)

Dreptul de a șterge un obiect sau de a-și schimba definiția într-o manieră arbitrară nu este considerat asignabil; este în mod inerent asociat cu proprietarul, astfel încât să retragă acest drept sau să-l dea altcuiva este imposibil. (Totuși, un efect similar poate fi obținut prin controlul apartenenței în rolul care deține obiectul, vezi mai jos.) De asemenea, proprietarul primește implicit dreptul de a dispune de toate drepturile pentru obiectul său.

Postgres Pro atribuie anumite drepturi anumitor grupuri PUBLIC pentru anumite tipuri de obiecte în mod implicit. Pentru tabele, coloane, scheme și spații de tabelă, PUBLIC nu are drepturi implicite. Pentru alte tipuri de obiecte, PUBLIC are următoarele drepturi: CONNECT și CREATE TEMP TABLE - pentru baze de date; EXECUTE - pentru funcții; UTILIZARE - pentru limbi. Proprietarul obiectului, desigur, poate revoca (folosind REVOKE) atît drepturile atribuite explicit, cît și drepturile atribuite implicit. (Pentru comanda maximă REVOKE de securitate care urmează să fie realizată într-o tranzacție care creează obiectul;. În cazul în care nu o fereastră este formată în care un alt utilizator ar putea avea acces la obiect) În plus, permisiunile implicite atribuite inițial pot fi modificate folosind comanda ALTER PRIVILEGII DEFAULT.

Toate drepturile posibile sunt enumerate mai jos:

Vă permite să modificați (utilizând UPDATE) datele din toate coloanele sau numai din coloanele listate în tabelul specificat. (În practică, este necesară orice comandă UPDATE trivial și dreptul la SELECT. Pentru că trebuie să se refere la coloane din tabel pentru a determina liniile care pot fi modificate și / sau calculează noi valori de coloane.) Pentru SELECT. PENTRU UPDATE și SELECT. PENTRU SHARE trebuie, de asemenea, acest drept pentru cel puțin o coloană, pe lângă permisiunea SELECT. Pentru secvențe, acest drept vă permite să utilizați funcțiile nextval și setval. Pentru obiecte mari, acest drept vă permite să scrieți date unui obiect sau să îl tăiați. ȘTERGE

Vă permite să ștergeți rânduri dintr-o tabelă specificată utilizând DELETE. (În practică, pentru orice comandă DELETE non-trivială, aveți nevoie și de permisiunea SELECT, deoarece trebuie să acceseze coloanele din tabel pentru a determina ce rânduri să fie șterse.) TRUNCATE

Vă permite să goliți tabelul specificat folosind TRUNCATE. REFERINȚE

Acest drept este necesar pentru a crea constrângeri cheie străine, atât pentru coloane de referință, cât și pentru coloane țintă. Puteți da acest drept tuturor, sau doar pentru câteva coloane ale mesei. TRIGGER

Vă permite să creați declanșatori într-un tabel specificat. (Vezi descrierea instrucțiunii CREATE TRIGGER.) CREATE

Pentru bazele de date, acest drept vă permite să creați scheme într-o bază de date dată.

Pentru scheme, acest drept vă permite să creați obiecte noi într-o schemă dată. Pentru a redenumi un obiect existent, trebuie să fiți proprietarul acestui obiect și să aveți acest drept pentru schema care îl conține.

Pentru spațiile de tabelă, acest drept vă permite să creați tabele, indexuri și fișiere temporare într-un spațiu de tabelă dat și să creați baze de date pentru care acest spațiu va fi principalul. (Rețineți că atunci când acest drept este revocat, obiectele existente rămân în aceeași locație.) CONNECT

Permite utilizatorului să se conecteze la baza de date specificată. Acest drept este verificat la stabilirea conexiunii (în plus față de condițiile definite în configurația pg_hba.conf). TEMPORARĂ
TEMP

Vă permite să creați tabele temporare într-o bază de date dată. EXECUTE

Vă permite să efectuați funcția specificată și să aplicați pe aceasta orice operator definit. Acesta este singurul tip de drepturi aplicabil funcțiilor. (Această sintaxă se aplică funcțiilor agregate.) UTILIZARE

Pentru limbile de procedură, acest drept vă permite să creați funcții într-o anumită limbă. Acesta este singurul tip de drepturi aplicabile limbajelor procedurale.

Pentru secvențe, acest drept permite utilizarea funcțiilor currval și nextval.

Pentru tipuri și domenii, acest drept vă permite să utilizați tipul sau domeniul specificat atunci când creați tabele, funcții sau alte obiecte de schemă. (Rețineți că acest drept nu restricționează general „utilizarea“ cum ar fi, de exemplu, referirea la valorile tipului în interogări. Fără acest drept, subiectul este lipsit de singura posibilitate de a crea obiecte care depind de un anumit tip specificat. Scopul principal al acestei legi este de a restricționa utilizatorii care sunt capabili să creeze dependențe de tipul care ar putea împiedica modificarea de către proprietarul de tip.)







Pentru pachetele de date terță parte, acest drept permite subiectului să creeze definiții ale serverului terță parte care utilizează pachetul specificat de date terță parte.

Pentru servere, acest drept permite subiectului să creeze definiții de tabelă ale terților pe serverul specificat și să creeze, să modifice și să ștergă o mapare pentru numele propriu al utilizatorului asociat cu acel server. TOATE PRIVILEGIILE

Oferă rolului țintă toate drepturile simultan. Cuvântul PRIVILEGES este opțional în Postgres Pro. deși în SQL strict este necesar.

Drepturile necesare pentru alte echipe sunt listate în paginile de ajutor ale acestor echipe.

GRANT pentru roluri

Această versiune a comenzii GRANT include un rol în membrii unuia sau mai multor alte roluri. Participarea la roluri joacă un rol important, deoarece drepturile oferite de roluri sunt extinse la toți membrii săi.

Cu opțiunea ADMIN OPTION, membrul nou format poate, la rândul său, să includă membri ai acestui rol, precum și să excludă alte roluri din acesta. Fără această indicație, utilizatorii obișnuiți nu pot face acest lucru. Se presupune că rolul nu are drept cu ADMIN OPTION dreptul de sine, dar este permis să-și gestioneze membrii din sesiunea în care utilizatorul sesiunii se potrivește cu acest rol. Superuserii de baze de date pot include sau exclude orice roluri din orice roluri. Rolurile cu CREATEROLE dreapta pot gestiona calitatea de membru în orice roluri, cu excepția rolurilor superuser.

Spre deosebire de drepturi, apartenența la roluri nu poate fi atribuită grupului PUBLIC. Rețineți, de asemenea, că acest formular de comandă nu acceptă cuvântul redundant GROUP.

Pentru a revoca drepturile de acces, se utilizează comanda REVOKE.

Începând cu versiunea 8.1 a PostgreSQL, conceptele utilizatorilor și grupurilor sunt combinate într-o singură entitate numită rol. Astfel, acum nu este nevoie să adăugați cuvântul cheie GROUP. Pentru a arăta că subiectul este un grup, nu un utilizator. Cuvântul GROUP este încă acceptat de această comandă, dar este lipsit de semnificație.

Utilizatorul poate executa SELECT. INSERT și comenzi similare cu o coloană de tabelă, dacă are acest drept pentru această coloană sau pentru întregul tabel. Dacă atribuiți utilizatorului la dreapta necesare la nivel de masă, și apoi se retrage la una dintre coloanele, nu are nici un efect, care ar putea fi de așteptat: drepturile de exploatare la nivelul coloanei nu a afectat dreptul la nivel de masă.

Dacă atribuiți un drept de acces la obiect (folosind GRANT) proprietarul obiectului nu va încerca, comanda va eșua dacă utilizatorul nu are drepturi pentru acest obiect. În cazul în care utilizatorul are orice drepturi, comanda va fi executata, dar utilizatorul va putea să dea altora, numai acele drepturi care sunt date la el cu uneltele din dreapta. Formulare GRANT ALL PRIVILEGII va emite un avertisment în cazul în care nu are astfel de drepturi, în timp ce alte forme va emite un avertisment în cazul în care utilizatorul nu are dreptul să dispună de ea drepturile specificate în comanda. (În principiu, aceste afirmații se aplică proprietarului obiectului, dar el are dreptul de a dispune de toate drepturile, deci astfel de situații sunt imposibile).

Trebuie remarcat faptul că superuserii bazelor de date pot accesa orice obiecte, indiferent de disponibilitatea oricăror drepturi. Acest lucru este comparabil cu privilegiile utilizatorului rădăcină din sistemul Unix. Și la fel ca rădăcina. rolul superutilizatorului ar trebui folosit numai atunci când este absolut necesar.

Dacă superuserul decide să execute comanda GRANT sau REVOKE. aceasta va fi executată, ca și când proprietarul obiectului dat ar fi executat-o. În particular, drepturile atribuite de o astfel de comandă vor fi prezentate drept drepturi atribuite de proprietarul obiectului. (Dacă, de asemenea, instalați membru într-un rol, acesta va fi reprezentat ca atribuit de rolul însuși.)

GRANT și REVOKE pot fi de asemenea executate de un rol care nu deține obiectul specificat, dar este membru al rolului de proprietar sau un membru al rolului care are permisiunea WITH GRANT OPTION pentru acest obiect. În acest caz, drepturile vor fi scrise ca atribuite de rolul care deține cu adevărat obiectul sau are dreptul la opțiunea GRANT. De exemplu, dacă tabelul t1 aparține rolului lui g1. din care u1 este membru. atunci u1 poate da dreptul de a folosi t1 din rolul u2. dar aceste drepturi vor fi reprezentate ca fiind atribuite direct rolului g1. Ulterior, orice membru al rolului g1 poate revoca aceste drepturi.

Dacă rolul execută comanda GRANT. primește dreptul cerut pe mai multe căi de apartenență, care rol va fi ales drept drept de numire, nu este determinată. Dacă acest lucru este important, în astfel de cazuri se recomandă utilizarea comenzii SET ROLE și comutarea la rolul pe care doriți să îl vedeți ca GRANT de execuție.

La atribuirea drepturilor de acces la o tabelă, acestea nu se propagă automat la secvențele utilizate de acest tabel, inclusiv secvențele asociate cu coloanele SERIAL. Drepturile de acces la secvențe trebuie să fie atribuite separat.

Pentru a obține informații despre drepturile existente atribuite tabelelor și coloanelor, utilizați comanda \ dp în psql. De exemplu:

Înregistrează ieșirea prin comanda \ dp. sunt interpretate după cum urmează:

Exemplul de mai sus arată ce va vedea miriamul utilizatorului. dacă creează un tabel mytable și execută:

În cazul în care coloana „dreptul de acces“ pentru această proprietate este gol, ceea ce înseamnă că drepturile standard (de exemplu, coloana din dreapta conține NULL) se aplică obiectului. Drepturile implicite includ întotdeauna toate drepturile proprietarului, și poate include, de asemenea, anumite drepturi publicului în funcție de tipul de obiect, așa cum sa explicat mai sus. Prima ACORDAREA de comandă și revocați obiect determină afișarea de înregistrare a drepturilor prestabilite (de exemplu), iar apoi se schimbă intrarea în conformitate cu o anumită interogare. În mod similar, liniile afișate în coloana "permisiuni de acces la coloane". Sunt afișate numai pentru coloanele cu drepturi de acces nestandard. (Rețineți că, în acest context, „Reguli Standard“ se referă întotdeauna la un built-in set de drepturi, un tip predefinit al obiectului. În cazul în care obiectul are un set de drepturi implicite obținute după schimbarea, ca urmare a PRIVILEGII DEFAULT ALTER. Drepturile modificate vor fi afișate întotdeauna care arată în mod clar efectul din comanda ALTER.)

Rețineți că dreptul de a dispune de drepturile pe care proprietarul le are nu este marcat în rezumatul de rezultate. Semnează * sunt marcate doar acele drepturi de transfer atribuite în mod explicit unei persoane.

Următoarea comandă permite tuturor să adauge intrări în tabelul de filme.

Această comandă dă utilizatorului toate drepturile de a reprezenta tipurile.

Rețineți că dacă este rulată de superuser sau de proprietarul vizualizării tipurilor. această comandă va acorda cu adevărat subiectului toate drepturile, dar dacă este efectuată de un utilizator obișnuit, subiectul va primi doar acele drepturi acordate acestui utilizator cu dreptul de a transfera.

Includeți utilizatorul joe în rolul administratorilor.

compatibilitate

În conformitate cu standardul SQL, cuvântul PRIVILEGES în indicația ALL PRIVILEGES este obligatoriu. Standardul SQL nu permite atribuirea drepturilor pentru mai multe obiecte în același timp cu o singură comandă.

Postgres Pro permite proprietarului de a se opune să se lipsească de drepturile lor uzuale: de exemplu, proprietarul unui tabel poate permite să le citească numai masă, reamintind propriile lor drepturi INSERT. UPDATE. DELETE și TRUNCATE. În standardul SQL, acest lucru nu este posibil. Acest lucru se datorează faptului că Postgres Pro percepe drepturile proprietarului așa cum le-a desemnat; astfel încât acestea pot fi retrase. În standard SQL, proprietarul drepturilor acordate pentru el esența propus «_SYSTEM». Deoarece proprietarul obiectului este diferit de "_SYSTEM". Nu se poate lipsi de aceste drepturi.

Conform standardului SQL, dreptul de transfer poate fi acordat subiectului PUBLIC; Cu toate acestea, Postgres Pro poate acorda dreptul cu dreptul de a transfera doar roluri.

În standardul SQL, dreptul de utilizare se extinde la alte tipuri de obiecte: seturi de caractere, reguli de sortare și transformări.

În standardul SQL, dreptul de utilizare pentru secvențe controlează utilizarea expresiei NEXT VALUE FOR. care este echivalent cu funcția nextval în Postgres Pro. Drepturile pentru SELECT și UPDATE pentru secvențe sunt extensiile Postgres Pro. Faptul că dreptul de utilizare pentru secvențe controlează utilizarea funcției currval. Acest lucru se aplică și extensiilor Postgres Pro (precum și funcția însăși).

Drepturile pentru baze de date, spații de tabelă, scheme și limbi se referă la extensiile Postgres Pro.







Articole similare

Trimiteți-le prietenilor: