Stranka potrebuje tabelo z več kot 150 polji, stranka potrebuje le nekatera polja, ki jih vidijo ljudje iz podjetja za skeniranje, to zahtevo je mogoče enostavno uresničiti z ogledom, stranka prav tako zahteva, ta polja, podjetje za skeniranje lahko spreminja le posamezna polja. Res še nisem naletel na takšno potrebo po nadzoru dovoljenj na ravni stolpcev, naredil sem eksperiment, počutim se zelo zanimivo, posnetek
Stranka ga imapovpraševanje, tabeli z več kot 150 polji, stranka je zahtevala, da pokaže le nekaj polj tistim, ki so skenirali podjetje, to jepovpraševanjeTo se lahko enostavno implementira z pogledom, in stranka zahteva, da ta polja, podjetje za skeniranje lahko spreminja le posamezna polja. Res še nisem naletel na takšno potrebo po nadzoru dovoljenj na ravni stolpcev, naredil sem eksperiment, počutim se zelo zanimivo, posnemi to.PreizkusProces. 1. Ustvarite testno tabelo in vstavite točkovne testne podatke: SQL> ustvari test tabele (id številka,table_name varchar2(50), lastnik varchar2(50),TABLESPACE_NAME varchar2(50)); Miza ustvarjena. SQL> vstavi v test select rownum,table_name,owner, TABLESPACE_NAME iz dba_tables; Ustvarjenih 5490 vrstic. SQL> commit; Zaveza zaključena. 2. Ustvarite testnega uporabnika in dodelite osnovna dovoljenja: SQL> CONN / AS SYSDBA Povezano. SQL> ustvarjanje uporabniškega toka, ki ga identificirajo uporabniki privzetega tabelnega prostora v toku; Uporabniško ustvarjeno. SQL> grant connect, resource to stream; Grant je uspel. 3. Podeli testnim uporabnikom dovoljenja na ravni stolpcev: SQL> conn avtentikacija/avtentikacija Povezano. SQL> grant update (id) pri testu za stream; Grant je uspel. SQL> odobri vstavitev (table_name) pri testu za pretok; Grant je uspel. SQL> SQL> omogoči izbiro na testu za pretakanje; Grant je uspel. 4. Poizvedba po podatkih o nastavitvah dovoljenj na ravni stolpcev: SQL> Izberite PREJEMNIKA, LASTNIKA, TABLE_NAME, COLUMN_NAME, DAJALCA, PRIVILEGIJA, ODOBRENO od user_col_privs; LASTNIK GRANTA TABLE_NAME COLUMN_NAME PRIVILEGIJ GRANTORJA GRA ------- ----- ---------- ----------- ------- --------- --- TEST AVTENTIKACIJE V TOKU TABLE_NAME VSTAVI AVTENTIKACIJO ŠT. AUT AVTENTIC TEST ID AVTENTIKACIJA VSTAVI ŠTEVILKO AVT AVTENTIKACIJA TEST ID AVTENTIKACIJA POSODOBITEV NE PREVERJANJE AVTENTIKACIJE TOKA ID POSODOBITEV AVTENTIKACIJE 5. Prijavni testni uporabnik preveri dovoljenje SELECT: SQL> conn stream/stream Povezano. SQL> izberite * from(select * from auth.test order by 1), kjer je rownum< =10; ID TABLE_NAME LASTNIŠKI MIZNI PROSTOR ---------- -------------------- ---------- ---------- 1 ICOL$ SYS SISTEM 2 IND$ SYS SISTEM 3 COL$ SYS SISTEM 4 CLU$ SYS SISTEM 5 TAB$ SYS SISTEM 6 LOB$ SYS SISTEM 7 COLTYPE$ SYS SISTEM 8 PODCOLTYPE$ SYS SISTEM 9 NTAB$ SYS SISTEM 10 REFCON$ SYS SISTEM Izbranih 10 vrstic. 6. Preverite nadzor dovoljenj UPDATE na ravni stolpcev: SQL> posodobi auth.test set owner='STREAM', kjer id =1; update auth.test set owner='STREAM', kjer id =1 * NAPAKA na vrstici 1: ORA-01031: insufficient privileges Vidimo lahko, da vrednost polja OWNER testne tabele ni dovoljena za spreminjanje, poročaj ORA-01031: Nezadostno dovoljenje, ker zgoraj navedeno daje testnemu uporabniku dovoljenje za spreminjanje polja ID tabele, je mogoče polje ID spremeniti. SQL> update auth.test set id=10 kjer id=1; 1 vrstica posodobljena. SQL> rollback; Razveljavitev zaključena. 7. Preverite nadzor dovoljenj na ravni stolpca INSERT: SQL> vstavite v auth.test vrednosti (1,'tok', 'tok', 'uporabniki'); Vstavi v avtentikacijo.test vrednosti (1,'tok', 'tok', 'uporabniki') * NAPAKA na vrstici 1: ORA-01031: insufficient privileges Ker zgoraj navedeno daje testnemu uporabniku dovoljenje za vstavljanje TABLE_NAME polja testne tabele, je mogoče vstaviti TABLE_NAME polje, vendar le, če druga polja nimajo NEKATERIH omejitev. SQL> vstavi vrednosti v auth.test(table_name) ('stream'); Ustvarjena je bila 1 vrstica. SQL> rollback; Razveljavitev zaključena.
|