SQL GRANT -komennot Peruuta. Oikeuksien myöntäminen ja poistaminen, jotka rajoittavat oikeuksia tiettyihin sarakkeisiin

Oletusarvoisesti tilillä ei ole oikeuksia Oracle-tietokantaan. Et voi edes luoda yhteyksiä ilman oikeuksia. Ja edes yhteysoikeuksien hankkimisen jälkeen tili ei voi tehdä mitään hyödyllistä (tai vaarallista) hankkimatta asianmukaiset oikeudet. Oikeudet myönnetään GRANT-komennolla ja poistetaan REVOKE-komennolla. Lisäkomentokäskyjä käytetään antamaan tilille mahdollisuus jakaa sillä olevat oikeudet muiden käyttäjien kanssa. Oletusarvoisesti vain järjestelmänvalvojan tileillä (SYS ja SYSTEM) on oikeudet määrittää oikeuksia. Käyttäjää, joka luovuttaa oikeudet toiselle käyttäjälle, kutsutaan myöntäjäksi, kun oikeuksien saaja on oikeuksien saaja. Oikeudet on jaettu kahteen ryhmään: järjestelmäoikeudet, joiden avulla käyttäjä voi karkeasti ottaen suorittaa tietosanakirjaan vaikuttavia toimintoja, ja objekteihin liittyvät oikeudet, joiden avulla käyttäjä voi suorittaa tietoihin vaikuttavia toimintoja.

Järjestelmän oikeudet

Yhteensä käytettävissä on noin kaksisataa järjestelmäoikeutta. Useimmat niistä vaikuttavat toimintoihin, jotka vaikuttavat tietojen sanamuotoon (kuten taulukoiden tai käyttäjien luomiseen). Loput vaikuttavat ilmentymään tai tietokantaan (taulukkotilojen luominen, tietokannan parametrien muuttaminen ja istuntojen luominen). Yleisimmin käytetyt oikeudet ovat

  • CREATESESSION - yhteysoikeudet. Ilman näitä oikeuksia et voi edes muodostaa yhteyttä tietokantaan
  • RESTRICTEDSESSION - Jos tietokanta käynnistetään STARTUPRESTRICT-käskyllä ​​tai ALTERSYSTEMENABLERESTRICTEDSESSION-komentoa käytetään, vain käyttäjät, joilla on nämä oikeudet, voivat muodostaa yhteyden tietokantaan.
  • ALTERDATABASE - voit suorittaa komentoja, jotka vaikuttavat fyysisiin rakenteisiin
  • ALTERSYSTEM - mahdollistaa ilmentymien parametrien ja muistirakenteen muuttamisen
  • CREATETABLESPACE - yhdessä ALTERTABLESPACE:n ja DROPTABLESPACE:n kanssa käyttäjä voi käsitellä taulukkotiloja
  • CREATETABLE - sallii grateen luoda taulukoita skeemaansa; sisältää mahdollisuuden luoda, muokata ja pudottaa taulukoita, suorittaa DML:ää ja valita komentoja sekä hallita indeksejä
  • GRANTANYOBJECTPRIVILEGE - antaa avustuksen saajalle mahdollisuuden hallita oikeuksia esineisiin, jotka eivät kuulu hänelle, mutta ei anna oikeuksia itselleen
  • CREATEANYTABLE - apurahan saaja voi luoda taulukoita, jotka kuuluvat muille tileille
  • DROPANYTABLE – apurahan saaja saa pudottaa taulukoita, jotka kuuluvat muille tileille
  • LISÄÄTÄVYLLINEN, PÄIVITETTÄVÄ, POISTAA - antaa saajalle oikeuden suorittaa DML-komentoja objekteille, jotka eivät kuulu hänelle
  • SELECTANYTABLE - Antaa apurahan saajalle oikeuden valita missä tahansa pöydässä.

Syntaksi käyttöoikeuksien määrittämiseen

MYÖNTÄ etuoikeus [,etuoikeus…] käyttäjätunnukselle;

Tilin luomisen jälkeen sille yleensä annetaan käyttöoikeudet, joita sovelluksen kehittämiseen osallistuvat käyttäjät usein käyttävät.

myönnä luomisistunto, muuta istuntoa,

luo taulukko, luo näkymä, luo synonyymi, luo klusteri,

luo tietokantalinkki, luo sarja,

luo liipaisin, luo tyyppi, luo menettely, luo operaattori

to käyttäjätunnus;

Näiden oikeuksien avulla voit muodostaa yhteyden ja määrittää istunnon, luoda objekteja ja tallentaa PL/SQL-objekteja. Objekteja voidaan luoda vain tiliskeemassa. ei oikeuksia muiden tilien järjestelmiin. Myös objektien luomista rajoittavat taulukkotilan rajoitukset.

Toinen vaihtoehto oikeuksien luovuttamiseen olisi myöntää käyttöoikeudet oikeuksien saajalle, jotta se voi siirtää oikeuksia muille tileille. Esimerkiksi

yhdistä järjestelmä/oraakkeli;

myönnä luoda taulukko scottille admin-vaihtoehdolla;

yhdistä scott/tiger;

myönnä luoda taulukko jonille;

Näiden komentojen suorittaminen antaa SCOTT:lle mahdollisuuden luoda taulukoita omassa skeemassaan ja suorittaa GRANT-komennon. SCOTT myöntää JON-käyttäjälle luvan luoda taulukoita, mutta JON voi luoda taulukoita vain JON-skeemassa. Kuva 6-5 näyttää käyttäjäoikeudet tietokannan hallinnassa; samat tiedot saadaan kysymällä DBA_SYS_PRIVS-näkymästä.

Jos järjestelmän käyttöoikeudet peruutetaan, kaikki, mitä teit käyttöoikeuksien aikana, pysyy voimassa. Jos sinulla oli oikeuksia ADMIN OPTION -sovelluksella, kaikki käyttäjät, joille olet antanut oikeudet - oikeudet säilyvät huolimatta siitä, että oikeutesi on peruutettu. Ei ole tiedossa, kuka tarkasti määritti järjestelmäoikeudet, joten CASCADE-oikeuksia on mahdotonta ottaa pois, kuten kuvassa 6-6

Järjestelmän käyttöoikeuksien peruuttaminen ei peräkkäin (toisin kuin

kohteen käyttöoikeuden peruuttaminen).

KAIKKI oikeudet antavat pääsyn kaikkiin tietokannan objekteihin. Täten

myönnä valitse mikä tahansa pöytä scottille

sallia SCOTT-tilin suorittaa SELECT-kyselyn kaikkia taulukoita vastaan ​​kaikissa tietokantaskeemoissa. Tätä oikeuksien luovuttamista pidetään huonona käytöksenä, ja vain DBA antaa KAIKKI oikeudet.

Itse asiassa ANY ei ole niin vaarallinen nyt kuin aikaisemmissa julkaisuissa. Ei enää

sisältää taulukot SYS-skeemassa, joten tietosanakirja on edelleen suojattu. Mutta

ANY:ta tulee silti käyttää erittäin varoen, koska se poistaa kaiken suojan

käyttäjätaulukoista.

Objektioikeudet

Objektioikeudet antavat oikeuden suorittaa DML- ja SELECT-komentoja vastaaville objekteille ja suorittaa PL/SQL-objekteja. Näitä oikeuksia ei ole tiliskeeman objekteille; jos käyttäjällä on CREATE TABLE -järjestelmäoikeudet, se tarkoittaa, että hän voi suorittaa SELECT- ja DML-kyselyitä luomiinsa taulukoihin ilman lisäoikeuksia.

KAIKKI oikeudet, jotka myöntävät oikeudet sisällä oleville objekteille

jokainen tietokannan käyttäjätili ei ole objektien oikeuksia - ne ovat

järjestelmän oikeudet.

Objektioikeudet koskevat erilaisia ​​esineryhmiä

Komentosyntaksi

MYÖNTÄ käyttöoikeus objektille käyttäjänimelle;

Esimerkiksi

Voit käyttää ALL-komentoa kaikkien toimintojen käyttöoikeuksiin tai käyttää tiettyä taulukko- tai näkymäsarakemäärittelyä.

grant select on store.orders to scott;

myöntää päivitys(tilauksen_tila) osoitteessa store.orders to scott;

myöntää kaikki osoitteessa store.regions scottille;

Nämä komennot sallivat SCOTT-tilin suorittaa SELECT-kyselyn kaikkia STORE-skeeman ORDERS-taulukon sarakkeita vastaan, mutta päivittää tiedot vain yhdessä sarakkeessa. SCOTT-tilillä on myös pääsy kaikkiin REGIONS-taulukon tapahtumiin. Kuva 6-7 näyttää käyttöoikeuksien määrittämisen tuloksen tietokannan ohjauksessa

Etuoikeuksien myöntämistä saraketasolla sanotaan usein huonoksi käytännöksi

valtavan työmäärän vuoksi. Jos on tarpeen rajoittaa ihmisiä"

pääsy tiettyihin sarakkeisiin luomalla näkymän, joka näyttää vain kyseiset sarakkeet

usein parempi vaihtoehto.

WITH GRANT OPTION -direktiivin käyttäminen antaa käyttäjälle mahdollisuuden siirtää oikeutensa muille tileille. Oracle tallentaa tietoja siitä, kuka antoi kenelle pääsyn objektitasolla; tämä antaa sinun peruuttaa oikeudet näiden tietojen perusteella. Harkitse esimerkkiä

yhdistä store/admin123;

myöntää valita asiakkaille myönnettävällä vaihtoehdolla;

yhdistä myynti/myynti;

grant select osoitteessa store.customers verkkosovellukseen myöntämisvaihtoehdolla;

connwebapp/oracle;

grant select on store.customers to scott;

yhdistä store/admin123;

peruuttaa asiakkaiden valinnat myynnistä;

Näiden komentojen suorittamisen jälkeen SALES-käyttäjällä, WEBAPP-käyttäjällä tai SCOTT-käyttäjällä ei ole oikeutta suorittaa SELECT-komentoja STORE.CUSTOMERS-taulukossa.

Objektin oikeuksien peruuttaminen peräkkäin (toisin kuin peruuttaminen

REVOKE - peruuttaa käyttöoikeudet

Syntaksi

PERUUTA [ MYÖNNETTÄVÄ VAIHTOEHTO ] ( ( VALITSE | LISÄÄ | PÄIVITYS | POISTA | TYÖNTÄ | VIITTEET | TRIGGER ) [, ...] | KAIKKI [ ETUOIKEUDET ] ) PÄÄLLÄ ( [ TAULUKON PAIKKA ] taulukon_nimi[, ...] | KAIKKI PÖYDÄT KAAVIOON skeeman_nimi[, ...] ) FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ APUVAIHTOEHTO ] ( ( VALITSE | LISÄÄ | PÄIVITYS | VIITTEET ) ( sarakkeen_nimi[, ...]) [, ...] | KAIKKI [ETUOIKEUDET] ( sarakkeen_nimi[, ...]) ) PÖYDÄLLÄ ] taulukon_nimi[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ MYÖNTÄVAIHTOEHTO ] ( ( KÄYTTÖ | VALITSE | PÄIVITYS ) [, ...] | KAIKKI [ ETUoikeudet ] ) PÄÄLLÄ ( SEKVENSSI sekvenssin_nimi[, ...] | KAIKKI SEKVENSSIT KAAVIOON skeeman_nimi[, ...] ) FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ MYÖNNETTÄVÄ VAIHTOEHTO ] ( ( LUO | YHTEYS | VÄLIAIKAINEN | TEMP ) [, ...] | KAIKKI [ OIKEUDET ] ) TIETOKANNASSA dbname[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ MYÖNTÄVAIHTOEHTO ] ( KÄYTTÖ | KAIKKI [ ETUOIKEUDET ] ) VERKKOKOHTEESSA verkkotunnus[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ APUVAIHTOEHTO ] ( KÄYTTÖ | KAIKKI [ ETUOIKEUDET ] ) ULKOMAAN TIETOKÄÄREILLE vieras_data_kääreen_nimi[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ MYÖNTÄVAIHTOEHTO ] ( KÄYTTÖ | KAIKKI [ ETUOIKEUDET ] ) ULKOMAISELLA PALVELIMELLE palvelimen nimi[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ MYÖNTÄVAIHTOEHTO ] ( SUORITA | KAIKKI [ ETUOIKEUDET ] ) PÄÄLLÄ ( TOIMINTA ) funktion_nimi ([ [ argumenttitila ] [ argumentin_nimi ] argumentin_tyyppi[, ...] ]) [, ...] | KAIKKI TOIMINNOT SCHEMASSA skeeman_nimi[, ...] ) FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ APUVAIHTOEHTO ] ( KÄYTTÖ | KAIKKI [ ETUoikeudet ] ) KIELEELLE kielen_nimi[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ MYÖNTÄVAIHTOEHTO ] ( ( VALITSE | PÄIVITYS ) [, ...] | KAIKKI [ ETUOIKEUDET ] ) SUUREN OBJEKTIIN oid_BO[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ APUVAIHTOEHTO ] ( ( LUO | KÄYTTÖ ) [, ...] | KAIKKI [ ETUOIKEUDET ] ) JÄRJESTELMÄSTÄ skeeman_nimi[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ MYÖNNETTÄVÄ VAIHTOEHTO ] ( LUO | KAIKKI [ ETUOIKEUDET ] ) TABLESSPACEssa pöytätilaa[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA ] PERUUTA [ APUVAIHTOEHTO ] ( KÄYTTÖ | KAIKKI [ ETUOIKEUDET ] ) TYYPILLÄ tyypin_nimi[, ...] FROM ( [ RYHMÄ ] roolinimi| JULKINEN ) [, ...] [ CASCADE | RAJOITTAA] PERUUTA [ JÄRJESTELMÄNVALVOJAN VAIHTOEHTO ] roolinimi[, ...] LÄHETTÄJÄ roolinimi[, ...] [ CASCADE | RAJOITTAA]

Kuvaus

REVOKE-komento kumoaa yhden tai useamman roolin aiemmin myönnetyistä oikeuksista. PUBLIC-avainsana tarkoittaa implisiittisesti määriteltyä ryhmää kaikista rooleista.

Huomaa, että mikä tahansa tietty rooli saa summan sille suoraan annetuista oikeuksista, mille tahansa roolille annetuista oikeuksista ja PUBLIC-ryhmälle annetuista oikeuksista. Siksi esimerkiksi SELECT-oikeuden PUBLIC-oikeuden peruuttaminen ei välttämättä tarkoita, että kaikki roolit menettäisivät SELECT-oikeuden tämä esine: se säilytetään niitä rooleja varten, joille se on annettu suoraan tai välillisesti toisen roolin kautta. Vastaavasti SELECT-oikeuden poistaminen käyttäjältä ei välttämättä vaikuta käyttäjän kykyyn käyttää SELECT-oikeutta, jos tämä oikeus myönnetään JULKINEN-ryhmälle tai muulle roolille, johon he kuuluvat.

Jos GRANT OPTION FOR on määritetty, vain oikeus myöntää oikeus peruutetaan, ei itse oikeutta. Ilman tätä ohjetta sekä oikeus että määräysoikeus siitä menetetään.

Jos käyttäjällä on siirrettävä oikeus ja hän on antanut sen muille käyttäjille, viimeinen oikeus katsotaan riippuvaiseksi. Kun ensimmäinen käyttäjä menettää oikeuden itse tai siirto-oikeuden ja on riippuvaisia ​​oikeuksia, myös nämä riippuvat oikeudet peruutetaan, jos CASCADE on lisäksi määritelty; muuten toiminta epäonnistuu. Tämä rekursiivinen kumoaminen vaikuttaa vain käyttäjäketjun kautta hankittuihin oikeuksiin, jotka voidaan jäljittää takaisin REVOKE-komennon kohteena olevaan käyttäjään. Näin ollen käyttäjät voivat säilyttää tämän oikeuden, jos se on hankittu myös muiden käyttäjien kautta.

Kun taulukon käyttöoikeus peruutetaan, taulukon kunkin sarakkeen vastaavat oikeudet (jos sellaisia ​​on asetettu) peruutetaan automaattisesti sen mukana. Toisaalta, jos roolille on myönnetty oikeudet taulukkoon, samojen oikeuksien roolin peruuttamisella yksittäisen sarakkeen tasolla ei ole vaikutusta.

Kun käyttäjä poistetaan roolista, GRANT OPTION muuttuu muotoon JÄRJESTELMÄNVALVOJA, muuten komennon käyttäytyminen on samanlainen. Huomaa myös, että tämä komennon muoto ei hyväksy redundanttia sanaa GROUP.

Huomautukset

Voit tarkastella olemassa oleville taulukoille ja sarakkeille määritettyjä käyttöoikeuksia käyttämällä \dp-komentoa psql. Sen tulostusmuotoa käsitellään GRANT:n kuvauksessa. Muille ei-taulukkoobjekteille tarjotaan muita \d-komentoja, jotka voivat näyttää muun muassa niille annetut oikeudet.

Käyttäjä voi peruuttaa vain ne oikeudet, jotka hän on suoraan antanut toiselle. Jos esimerkiksi käyttäjä A on myöntänyt siirrettävän oikeuden käyttäjälle B ja käyttäjä B puolestaan ​​on myöntänyt tämän oikeuden käyttäjälle C, niin käyttäjä A ei voi peruuttaa tätä oikeutta suoraan C:lle. Sen sijaan käyttäjä A voi peruuttaa siirrettävän oikeuden käyttäjä B ja käytä CASCADE-parametria, jotta käyttäjä C menettää tämän oikeuden ketjussa. Tai esimerkiksi jos sekä A että B ovat myöntäneet saman oikeuden C:lle, niin A voi peruuttaa antamansa oikeuden, mutta ei käyttäjä B, joten C:llä on edelleen tämä oikeus.

Jos joku muu kuin objektin omistaja yrittää peruuttaa objektin käyttöoikeuden (käyttäen REVOKE-komentoa), komento epäonnistuu, jos käyttäjällä ei ole oikeuksia objektiin. Jos käyttäjällä on joitain oikeuksia, komento suoritetaan, mutta käyttäjä voi peruuttaa vain ne oikeudet, jotka hänelle on annettu määräysoikeudella. REVOKE ALL PRIVILEGES -lomakkeet antavat varoituksen, jos käyttäjällä ei ole tällaisia ​​oikeuksia ollenkaan, kun taas muut lomakkeet antavat varoituksen, jos käyttäjällä ei ole oikeutta hallita täsmälleen komennossa määritettyjä oikeuksia. (Periaatteessa nämä lausunnot koskevat myös kohteen omistajaa, mutta hänellä on oikeus määrätä kaikista oikeuksistaan, joten tällaiset tilanteet ovat mahdottomia.)

Jos pääkäyttäjä on antanut GRANT- tai REVOKE-komennon, komento suoritetaan ikään kuin se olisi kohteena olevan objektin omistaja. Koska kaikki oikeudet tulevat lopulta kohteen omistajalta (ehkä epäsuorasti ketjun kautta tai oikeuden kautta), pääkäyttäjä voi peruuttaa kaikki oikeudet, mutta tämä voi edellyttää CASCADE-tilan käyttöä, kuten edellä on kuvattu.

REVOKE-toiminnon voi suorittaa myös rooli, joka ei ole tietyn kohteen omistaja, mutta on omistajaroolin jäsen tai roolin jäsen, jolla on WITH GRANT OPTION -oikeudet kyseiseen objektiin. Tässä tapauksessa komento suoritetaan ikään kuin sen sisältävä rooli, joka todella omistaa objektin tai jolla on WITH GRANT OPTION -oikeudet, suorittaa sen. Esimerkiksi, jos taulukon t1 omistaa rooli g1, jonka jäsen rooli u1 on, niin u1 voi peruuttaa oikeudet käyttää t1:tä, jotka on kirjoitettu roolin g1 antamina. Tämä voi sisältää roolin u1 sekä muiden roolin g1 jäsenten myöntämät oikeudet.

Jos REVOKE-komentoa suorittava rooli on saanut määritetyt oikeudet epäsuorasti useamman kuin yhden roolin jäsenyyspolun kautta, mikä rooli valitaan komennon suorittamiseen. Tällaisissa tapauksissa on suositeltavaa käyttää SET ROLE -komentoa ja vaihtaa rooliin, jonka haluat nähdä REVOKE-suorittimena. Jos näin ei tehdä, oikeuksia ei voida peruuttaa suunnitellusti tai oikeuksia ei peruuteta ollenkaan.

Esimerkkejä

Oikeus lisätä tietoja elokuvataulukkoon julkiselta ryhmältä evätään:

REVOKE INSERT ON elokuvia FROM PUBLIC;

Peruuta käyttöoppaasta kaikki lajinäkymän oikeudet:

PERUUTA KAIKKI ERIOIKEUDET manuelista;

Huomaa, mitä tämä oikeastaan ​​tarkoittaa « ottaa pois kaikki antamani oikeudet» .

Sulje pois käyttäjän joen järjestelmänvalvojan roolin jäsenet:

REVOKE järjestelmänvalvojat FROM joe;

Yhteensopivuus

GRANT-komennolla annetut yhteensopivuusohjeet koskevat myös REVOKE -toimintoa. Standardi edellyttää RESTRICT- tai CASCADE-avainsanan määrittämistä, mutta PostgreSQL tarkoittaa oletuksena RESTRICT.

DCL-komentoja käytetään tietokantojen suojaamiseen ympäristössä, jossa on useita käyttäjätietokantoja. Kaksi DCL-komentotyyppiä ovat myöntäminen ja peruuttaminen. Vain tietokannan ylläpitäjä tai tietokantaobjektin omistaja voi myöntää/poistaa tietokantaobjektin oikeuksia.

SQL GRANT -komento

SQL GRANT on komento, jota käytetään tietokantaobjektien käyttöoikeuksien tai oikeuksien myöntämiseen käyttäjille.

GRANT-komennon syntaksi on:

GRANT käyttöoikeuden_nimi
PÄÄLLÄ objektin_nimi
TO (käyttäjänimi |JULKINEN |roolin_nimi)
;

  • PRIVILEGE_NAME tämä käyttöoikeus tai etuoikeus myönnetään käyttäjälle. Jotkut käyttöoikeuksista ovat ALL, EXECUTE ja SELECT.
  • objektin_nimi on tietokantaobjektin, kuten taulukon, näkymän ja SEQUENCE-tallennettu toimintosarjan nimi.
  • käyttäjätunnus
  • käyttäjätunnus tämä on käyttäjätunnus, johon pääsyoikeus pidetään itsestäänselvyytenä.
  • JULKINEN käytetään käyttöoikeuksien myöntämiseen kaikille käyttäjille.
  • ROOLIT ovat joukko etuoikeuksia, jotka on ryhmitelty yhteen.
  • APUVAIHTOEHDOLLA - Antaa käyttäjän myöntää käyttöoikeudet muille käyttäjille.

Esimerkiksi: TYÖNTEKIJÄAPURAHA VALITSEMAAN käyttäjälle1; Tämä komento antaa SELECT-oikeudet työntekijätaulukossa käyttäjälle1. Sinun tulee käyttää sitä GRANT-vaihtoehdon kanssa huolellisesti, koska esimerkiksi jos myönnät SELECT-oikeudet työntekijätaulukossa käyttäjälle1 käyttämällä WITH GRANT -vaihtoehtoa, käyttäjä1 voi myöntää SELECT-oikeuden. pöydällä työntekijä toiselle käyttäjälle, kuten käyttäjä2 jne. Myöhemmin, jos peruutat työntekijän SELECT-oikeudet käyttäjältä1, käyttäjä2:lla on edelleen SELECT-oikeus työntekijätaulukossa.

SQL REVOKE -komento:

REVOKE-komento poistaa käyttäjien käyttöoikeudet tai oikeudet tietokantaobjekteista.

REVOKE-komennon syntaksi on:

REVOKE etuoikeus_nimi
PÄÄLLÄ objektin_nimi
FROM (käyttäjänimi |JULKINEN |roolin_nimi)

Esimerkiksi: KEWOKE SELECT ON työntekijän käyttäjä1; Tämä komento peruuttaa työntekijän taulukon SELECT-oikeuden käyttäjältä 1. Kun REVOKE SELECT käyttäjältä taulukon oikeudet, käyttäjä ei voi enää valita tietoja kyseisestä taulukosta. Jos käyttäjälle on kuitenkin myönnetty SELECT-oikeudet kyseiseen taulukkoon useammalta kuin yhdeltä käyttäjältä, hän voi valita kyseisestä taulukosta, kunnes kaikki luvan saaneet peruuttavat sen. Et voi peruuttaa oikeuksia, jos et ole alun perin myöntänyt niitä.

Etuoikeudet ja roolit:

Oikeudet: Käyttöoikeudet määrittelevät käyttäjälle tietokantaobjektiin myönnetyt käyttöoikeudet. Etuoikeuksia on kahdenlaisia.

oikeudet 1) Järjestelmä- Sen avulla käyttäjä voi luoda, muokata tai poistaa tietokantaobjekteja.
2) Objektin oikeudet- Tämän avulla käyttäjä voi SUORITA, VALITSE, LISÄÄ, PÄIVITTÄ tai POISTA tietoja tietokantaobjekteista, joita oikeudet koskevat.

Harvat järjestelmän luontioikeudet on lueteltu alla:

Järjestelmän oikeudet Kuvaus
LUO objekti avulla käyttäjät voivat luoda määritetyn objektin omassa skeemassaan.
LUO MITÄ tahansa esinettä avulla käyttäjät voivat luoda määritetyn objektin missä tahansa skeemassa.

Yllä olevat säännöt koskevat myös Altera- ja DROP-järjestelmäoikeuksia.

Muutama objektin käyttöoikeuksista on lueteltu alla:

Objektin oikeudet Kuvaus
LISÄÄ avulla käyttäjät voivat lisätä rivejä taulukkoon.
VALITSE avulla käyttäjät voivat valita tietoja tietokantaobjektista.
PÄIVITTÄÄ mahdollistaa taulukon tietojen päivittämisen.
SUORITTAA sallii käyttäjän suorittaa tallennetun toiminnon tai toiminnon.

Roolit: Roolit ovat joukko oikeuksia tai käyttöoikeuksia. Kun tietokannassa on useita käyttäjiä, on vaikea myöntää tai peruuttaa käyttäjille oikeuksia. Siksi, jos olet määrittänyt rooleja, voit myöntää tai peruuttaa oikeuksia käyttäjille ja myöntää tai peruuttaa oikeudet automaattisesti. Voit joko luoda rooleja tai käyttää ennalta määritettyjä Oracle-järjestelmän rooleja.

Jotkut järjestelmärooleille myönnetyistä oikeuksista ovat seuraavat:

Järjestelmän rooli Roolille myönnetyt oikeudet
KYTKEÄ LUO TAULUKKO, LUO NÄKYMÄ, LUO SYNONYMI, LUO SEKVENSSI, LUO SESSIO jne.
RESURSSI LUO MENETTELY, LUO SEKVENSSI, LUO TAULUKKO, LUO TRIGGER jne. RESOURCE-roolin ensisijainen käyttötarkoitus on rajoittaa pääsyä tietokantaobjekteihin.
DBA KAIKKI JÄRJESTELMÄN OIKEUDET

Luo roolit:

Roolin luomisen syntaksi on:

CREATE ROLE roolin_nimi
;

Esimerkiksi: Jos haluat luoda roolin nimeltä "developer" ja salasana "PWD", koodi olisi seuraava

LUO ROLE-testaus
;

On helpompaa myöntää tai peruuttaa oikeuksia käyttäjille roolien kautta sen sijaan, että määrittäisit oikeudet suoraan kullekin käyttäjälle. Jos rooli tunnistetaan salasanalla, kun myönnät tai peruutat roolille oikeuksia, sinun on varmistettava, että tunnistat sen salasanalla.

Voimme myöntää tai peruuttaa roolin käyttöoikeuden alla kuvatulla tavalla.

Esimerkiksi: Voit myöntää CREATE TABLE -oikeuden käyttäjälle luomalla testiroolin seuraavasti:

Luo ensin testausrooli

LUO ROLE-testaus

Toiseksi, anna CREATE TABLE -oikeudet testataksesi roolia. Voit lisätä tähän rooliin lisäoikeuksia.

MYÖNTÄ LUO TAULUKKO testaukseen;

Kolmanneksi, anna käyttäjälle rooli.

GRANT testaus käyttäjälle1;

Voit peruuttaa CREATE TABLE -oikeuden ROLEn testaamisesta kirjoittamalla:

PERUUTA LUO TAULUKKO testauksesta;

Syntaksi roolin pudottamiseksi tietokannasta on seuraava:

DROP ROLE roolin_nimi;

Esimerkiksi: Voit poistaa roolin nimeltä kehittäjä kirjoittamalla.

Alusta SQL Server käyttää REVOKE-komentoa tapana ohittaa määritetyt käyttöoikeusasetukset annettu käyttäjä. Tämä kohta on tärkeä, koska SQL Server tukee valinnaista DENY-käskyä, joka nimenomaisesti estää käyttäjän pääsyn määritettyyn resurssiin. SQL Serverissä REVOKE-käskyllä ​​voidaan peruuttaa käyttäjälle GRANT-käskyllä ​​myönnetyt oikeudet. Jos haluat nimenomaisesti peruuttaa käyttäjän oikeudet, sinun tulee käyttää DENY-käskyä.

SQL Server -alusta ei tue ANSI HIERARCHY OPTION- ja ADMIN OPTION -lauseita. Vaikka ADMIN OPTION -lausetta ei tueta, REVOKE-komennon SQL Server -versiolla on kaksi järjestelmänvalvojan oikeutta (CREATE ja BACKUP). Ohjeen syntaksi on seuraava.

REVOKE ([object_privilege] [, …] | [system_privilege]) [(sarake [, …])]]| (TO | LÄHETTÄJÄ) (vastaanottajan_nimi [, …] | rooli [, …] | JULKINEN | VIERAS) ]

APUVAIHTOEHTOJA

Käyttäjä menettää oikeuden antaa tiettyjä oikeuksia muille käyttäjille.

esineen etuoikeus

Eri ohjeiden käyttöoikeudet peruutetaan, ja niitä voidaan yhdistää missä järjestyksessä tahansa.

KAIKKI

Kaikki määritetyille käyttäjille ja/tai määritetyille tietokantaobjekteille tällä hetkellä myönnetyt oikeudet peruutetaan. Tämän lauseen käyttöä ei suositella, koska se edistää ohjelmoinnin sumeutta.

(VALITSE | LISÄÄ POISTA PÄIVITYS)

Määritetyltä käyttäjältä peruutetaan määritetyn objektin (esimerkiksi taulukon tai näkymän) määritetty käyttöoikeus. Voit peruuttaa saraketason oikeudet käyttämällä suluissa olevaa sarakeluetteloa.

VIITTEET

Oikeus luoda ja poistaa tyypin " ulkoinen avain', jotka viittaavat tietokantaobjektiin pääobjektina.

Käyttäjän oikeus luoda tai poistaa sääntö taulukossa tai näkymässä peruutetaan.

Oikeus suorittaa tallennettua toimintosarjaa, käyttäjän määrittämää toimintoa tai laajennettua tallennettua toimintosarjaa peruutetaan.

järjestelmän etuoikeus

Oikeus suorittaa seuraavat käskyt peruutetaan: CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, BACKUP DATABASE ja BACKUP LOG.

PÄÄLLÄ [objekti] [(sarake [, ...])]

Käyttäjän käyttöoikeus määritettyyn kohteeseen peruutetaan. Jos objekti on taulukko tai näkymä, voit peruuttaa yksittäisten sarakkeiden käyttöoikeudet. Voit peruuttaa taulukon tai näkymän SELECT-, INSERT-, UPDATE-, DELETE- ja REFERENCES-oikeudet. Taulukon tai näkymän sarakkeissa voit peruuttaa vain SELECT- ja UPDATE-oikeudet. Voit peruuttaa tallennetun toimintosarjan, käyttäjän määrittämän toiminnon tai laajennetun tallennetun toimintosarjan SUORITA-oikeudet.

[TO | FROM] vastaanottajan nimi | rooli | JULKINEN | VIERAS

Määrittää käyttäjät tai roolit, jotka menettävät määritetyn käyttöoikeuden. Voit peruuttaa PUBLIC-roolille (mikä tarkoittaa kaikkia käyttäjiä) määritetyt oikeudet avainsana JULKINEN. Voit luetella useita vastaanottajia erottamalla heidän nimensä pilkuilla. Tuettu myös SQL Serverissä Tili GUEST, jota käyttävät kaikki käyttäjät, joilla ei ole merkintää tietokantaan.

Niiden käyttäjien oikeudet, joille on myönnetty oikeudet WITH GRANT OPTION -lausekkeen kautta, poistetaan. Tämä lauseke vaaditaan käytettäessä GRANT OPTION FOR -lauseketta.

AS (ryhmän nimi roolin_nimi)

Määrittää oikeudet, joilla etuoikeus peruutetaan. Joissakin tapauksissa käyttäjä saattaa tarvita tilapäisesti käyttöoikeuksia tietty ryhmä peruuttaaksesi määritetyt oikeudet. Tässä tapauksessa voit käyttää AS-lauseketta tällaisten oikeuksien hankkimiseen.

REVOKE-käskyn kaksi muotoa, REVOKE-objektin käyttöoikeus ja REVOKE system_privilege, ovat toisensa poissulkevia. Älä yritä suorittaa molempia operaatioita samassa lauseessa. Tärkein syntaktinen ero näiden kahden välillä on, että sinun ei pitäisi käyttää ON-lausetta poistaessasi järjestelmän oikeuksia. Voit esimerkiksi poistaa järjestelmän käyttöoikeuden käyttämällä seuraavaa komentoa.

PERUUTA LUO TIETOKANTA, VARMUUSTIETOKANTA dylanilta, katie

Jos oikeudet myönnettiin käyttäjälle WITH GRANT OPTION -lausekkeen avulla, nämä oikeudet on peruutettava käyttämällä sekä WITH GRANT OPTION- että CASCADE-lauseita samanaikaisesti. Esimerkiksi:

PERUUTA CASCADE GO -nimikkeiden VALITSEMIS-, LISÄÄMIS-, PÄIVITYS-, POISTAMISAPUVAIHTOEHTO

REVOKE-komentoa voidaan käyttää vain nykyisessä tietokannassa. Näin ollen ANSI-standardivaihtoehdot CURRENTJJSER ja CURRENTROLE oletetaan aina implisiittisesti. REVOKE-käskyä käytetään myös peruuttamaan kaikki DENY-vaihtoehdot.

SQL Server -alusta tukee myös valinnaista DENY-lausetta. DENY-käskyn syntaksi on sama kuin REVOKE-käskyn syntaksi. Pohjimmiltaan ne eroavat kuitenkin siinä, että REVOKE neutraloi käyttäjän oikeudet, kun taas DENY kieltää ne. Käytä DENY-käskyä estääksesi käyttäjää tai roolia käyttämästä oikeuksia, vaikka käyttöoikeus myönnettäisiin nimenomaisesti tai roolimäärityksen kautta.

REVOKE-käskyä on käytettävä aiemmin myönnettyjen tai evättyjen (DENY) oikeuksien poistamiseen. Esimerkiksi käyttäjä kelly jäi pidennetylle vanhempainvapaalle. Tällä hetkellä hänen pääsy työntekijäpöytään evättiin. Hän palasi ja otimme oikeudet uudelleen käyttöön.

KIELTÄ KAIKKI työntekijän Kelly GO:lta

PERUUTA KAIKKI Kelly GO:n työntekijä

Tässä esimerkissä REVOKE-komento ei poista hänen oikeuksiaan, se kumoaa DENY-komennon vaikutuksen.

Käyttäjän luominen yksinään ei anna hänelle oikeuksia käyttää tietokantaobjekteja.

Käyttöoikeudet myönnetään GRANT-komennolla. Muista, että GRANT-komennon antava käyttäjä voi siirtää tai halutessasi siirtää muille käyttäjille vain ne oikeudet, jotka hänellä itsellään on.

GRANT myöntää tietokantaobjektien käyttöoikeudet käyttäjille, rooleille tai muille tietokantaobjekteille. Kun objekti luodaan, vain sen luojalla on siihen oikeudet, ja vain hän voi myöntää oikeuksia muille käyttäjille tai objekteille.

Käyttääkseen taulukkoa tai näkymää käyttäjä tai objekti tarvitsee SELECT-, INSERT-, UPDATE-, DELETE- tai REFERENCES-oikeudet. Kaikki oikeudet voidaan antaa KAIKKI-vaihtoehdolla.

Proseduurin kutsumiseksi sovelluksessa käyttäjällä on oltava EXECUTE-oikeudet.

Käyttäjät voivat saada luvan myöntää oikeuksia muille käyttäjille määrittämällä oikeudet luettelon kautta , joka on määritetty WITH GRANT OPTION -vaihtoehdossa. Käyttäjä voi myöntää muille vain ne oikeudet, jotka hänellä itsellään on.

Oikeudet voidaan antaa kaikille käyttäjille JULKINEN-vaihtoehdolla käyttäjätunnusluettelon tilalla. JULKINEN-asetuksen määrittäminen koskee vain käyttäjiä, ei tietokantaobjekteja.

Luettelo oikeuksista on taulukossa. 8.5

Taulukko 8.5. Luettelo oikeuksista

Oikeudet voi peruuttaa käyttäjä, joka on myöntänyt ne REVOKE-komennolla. Jos oikeudet myönnettäisiin KAIKKI, niin ne voidaan likvidoida vain KAIKKI-tilassa, jos oikeudet on myönnetty käyttämällä PUBLIC, niin ne voidaan likvidoida vain PUBLIC-tilassa.

Syntaksi:

GRANT (kaikki /PRIVILEGES] / LJST_ ) PÖYDÄLLÄ ]

(taulukon nimi/näkymänimi)

TO( /lista_ /RYHMÄ UNIX_ryhmä^

/SUORITA MENETTELYN KÄYTTÖÖN procname TO

(LISTA_ LISTA_ (APUVAIHTOEHDON KANSSA./)

ILJST_rolename TO (JULKINEN

/lista_ (ADKIN-VAIHTOEHDOLLA] );

;;= VALITSE / POISTA / LISÄÄ / PÄIVITYS [ (LIST_col) ] j VIITTEET LIST_col) ]

; . = MENETTELY prosessin nimi j TRIGGER trigname j NÄYTÄ näkymän nimi / JULKINEN

;:= käyttäjätunnus I roolinimi

:;= käyttäjätunnus

Taulukko 8.6. Kuvaus GRANT-komennon syntaksielementeistä

Perustelu Kuvaus
etuoikeus Myönnetyn oikeuden nimi. Kelvolliset arvot: SELECT, DELETE, INSERT, UPDATE, REFERENCES
Col Sen sarakkeen nimi, johon oikeudet myönnetään.
taulukon nimi Olemassa olevan taulukon nimi, johon oikeudet kuuluvat
näkymän nimi Olemassa olevan arvostelun nimi, johon oikeudet kuuluvat
Olemassa olevan tietokantaobjektin nimi (menettely, yleiskatsaus, triggeri), jota oikeudet koskevat
käyttäjätunnus Sen käyttäjän nimi, jolle oikeudet siirretään
APUVAIHTOEHDOLLA Siirtää oikeudet siirtää oikeuksia käyttäjille, jotka on lueteltu luettelossa LIST_
roolinimi CREATE ROLE -komennolla luodun olemassa olevan roolin nimi
Käyttäjä, jolle roolin oikeudet siirretään. Käyttäjäluettelo on määritettävä tiedostossa isc4.gdb (joka on luotu esimerkiksi IBConsole-apuohjelmalla)
GROUP unix_group UNIX-ryhmän nimi, joka on määritetty tiedostossa /etc/group

Seuraava komento siirtää SELECT- ja DELETE-oikeudet käyttäjälle. WITH GRANT OPTION -vaihtoehto antaa oikeudet niiden edelleen siirtoon.

Esimerkki 8.5

Ja tämä komento antaa oikeuden suorittaa toimenpide toiselle proseduurille ja käyttäjälle.

Esimerkki 8.6

MYÖNTÄ SUORITTAA MENETTELYN TEKIJÄN PBOOKAUTHOR, MISHA;

Tässä tapauksessa lupien myöntäminen tietokannassamme olevalle PBOOKAUTHOR-proseduurille on merkityksetöntä, koska se ei yksinkertaisesti käytä PAUTHOR-proseduuria, mutta se on syntaktisesti oikein.

Seuraava komento on sisällöltään samanlainen kuin esimerkki 8.5, mutta keskittyy sulautetun SQL:n käyttöön.

Esimerkki 8.7 EXEC SQL

MYÖNTÄ VALITSE, POISTA TBOOKISTA MISHALLE MYÖNNETTÄVÄN VAIHTOEHTOLLA;

Selvitysoikeus REVOKE-tiimi

REVOKE poistaa tietokantaobjektien käyttöoikeudet. Oikeudet ovat käyttäjälle sallittuja toimintoja objektin kanssa. SQL-oikeudet on kuvattu taulukossa. 8.7

Huomaa joitain rajoituksia käytettäessä REVOKE-komentoa. Oikeudet voi poistaa vain ne myöntänyt käyttäjä. Yhdelle käyttäjälle voi antaa samat oikeudet tietokantaobjektiin mikä tahansa määrä eri käyttäjiä. REVOKE-komento merkitsee tämän tietyn käyttäjän aiemmin myöntämien oikeuksien menettämistä. Kaikille käyttäjille JULKINEN-vaihtoehdolla myönnetyt oikeudet voidaan poistaa vain REVOKE-komennolla, jossa on PUBLIC-vaihtoehto. Syntaksi:

PERUUTA käyttäjätunnus / JULKINEN :;= /"USER7 käyttäjätunnus

Seuraava komento poistaa käyttäjän poistooikeudet taulukosta (katso esimerkki 8.5, jolloin hän säilyttää lukuoikeudet).

Esimerkki 8.8

PERUUTA POISTA MISHAN TWOOKISSA;

Ja tämä komento kumoaa oikeuden suorittaa proseduuri toiselta proseduurilta ja käyttäjältä (katso vastaavien oikeuksien allokointi esimerkissä 8.6)

PERUUTA .SUORITA MENETTELYN TEKIJÄLLE PROCEDURE PBOOKAUTHOR, MISHA;