Klientam ir vajadzība, tabula ar vairāk nekā 150 laukiem, klientam ir nepieciešami tikai daži lauki, lai skenēšanas uzņēmuma cilvēki redzētu, šo prasību var viegli realizēt ar skatu, klients arī pieprasa, šos laukus, skenēšanas uzņēmums var modificēt tikai atsevišķus laukus, es tiešām iepriekš neesmu saskāries ar šādu vajadzību pēc atļauju kontroles kolonnu līmenī, es veicu eksperimentu, es jūtos ļoti interesanti, ierakstiet to
Klientam ir tādsPieprasījums, tabulā ar vairāk nekā 150 laukiem, klients lūdza parādīt tikai dažus laukus personām, kas skenēja uzņēmumu, tasPieprasījumsTo var viegli īstenot ar skatu, un klients pieprasa, lai šie lauki, skenēšanas uzņēmums var modificēt tikai atsevišķus laukus, es tiešām iepriekš neesmu saskāries ar šādu nepieciešamību pēc atļauju kontroles kolonnu līmenī, es veicu eksperimentu, es jūtos ļoti interesanti, ierakstiet toTestsprocess. 1. Izveidojiet testa tabulu un ievietojiet punktu testa datus: Sāls> izveidot tabulu test( ID numurs,table_name varchar2(50), īpašnieks varchar2(50),TABLESPACE_NAME varchar2(50)); Izveidota tabula. SQL> ievietojiet testā izvēlieties rownum,table_name,īpašnieks, TABLESPACE_NAME no dba_tables; Izveidotas 5490 rindas. SQL> apņemas; Apņemšanās pabeigta. 2. Izveidojiet testa lietotāju un piešķiriet pamata atļaujas: SQL> CONN / AS SYSDBA Savienots. SQL> izveidot lietotāju plūsmu, ko identificē straumes noklusējuma tabulas lietotāji; Izveidots lietotājs. SQL> piešķirt savienojumu, resursu straumei; Grantam izdevās. 3. Testa lietotājiem slejas līmeņa atļauju piešķiršana. SQL> conn auth/auth Savienots. SQL> piešķirt atjauninājumu (id) testa laikā, lai straumētu; Grantam izdevās. SQL> dotācijas ievietojums (table_name) testa laikā, lai straumētu; Grantam izdevās. SQL> SQL> piešķirt atlasi testa laikā, lai straumētu; Grantam izdevās. 4. Vaicājuma informācija par kolonnas līmeņa atļauju iestatīšanu: SQL> atlasiet GRANTEE,OWNER,TABLE_NAME,COLUMN_NAME,GRANTOR,PRIVILEGE, PIEŠĶIRAMS no user_col_privs; GRANTA ĪPAŠNIEKS TABLE_NAME COLUMN_NAME PIEŠĶĪRĒJA PRIVILĒĢIJA GRA ------- ----- ---------- ----------- ------- --------- --- STRAUMES AUTENTIFIKĀCIJAS PĀRBAUDE TABLE_NAME AUTENTIFIKĀCIJAS IEVIETOŠANA NĒ AUT AUTH TEST ID AUTH INSERT NO AUT AUTH TEST ID AUTENTIFIKĀCIJAS ATJAUNINĀJUMS NĒ STRAUMES AUTENTIFIKĀCIJAS TESTA ID AUTENTIFIKĀCIJAS ATJAUNINĀJUMS NĒ 5. Pieteikšanās testa lietotājs pārbauda SELECT atļauju: SQL> conn straume/straume Savienots. SQL> atlasiet * no(atlasiet * no autentifikācijas.testa secība ar 1), kur rindas numurs< =10; ID TABLE_NAME ĪPAŠNIEKA TABULAS VIETA ---------- -------------------- ---------- ---------- 1 ICOL$ SYS SISTĒMA 2 IND$ SYS SISTĒMA 3 COL$ SYS SISTĒMA 4 CLU$ SYS SISTĒMA 5 TAB$ SYS SISTĒMA 6 LOB$ SYS SISTĒMA 7 COLTYPE$ SYS SISTĒMA 8 SUBCOLTYPE$ SYS SISTĒMA 9 NTAB$ SYS SISTĒMA 10 REFCON$ SYS SISTĒMA Atlasītas 10 rindas. 6. Pārbaudiet kolonnas līmeņa UPDATE atļauju vadīklu: SQL> atjaunināt auth.test set owner='STREAM', kur id =1; atjaunināt auth.test set owner='STREAM', kur id =1 * KĻŪDA 1. rindā: ORA-01031: insufficient privileges Var redzēt, ka testa tabulas lauka OWNER vērtību nav atļauts modificēt, ziņojums ORA-01031: Nepietiekama atļauja, jo iepriekš minētais dod testa lietotājam atļauju modificēt testa tabulas ID lauku, ir iespējams modificēt ID lauku. SQL> atjaunināt auth.test kopu id=10, kur id=1; Atjaunināta 1 rinda. SQL> atcelšana; Atcelšana pabeigta. 7. Pārbaudiet kolonnas līmeņa INSERT atļauju vadīklu: SQL> ievietojiet auth.test vērtības(1,'straume','straume','lietotāji'); Ievietojiet Auth.test vērtības(1;'straume','straume','lietotāji') * KĻŪDA 1. rindā: ORA-01031: insufficient privileges Tā kā iepriekš minētais testa lietotājam dod ievietošanas atļauju modificēt testa tabulas TABLE_NAME lauku, ir iespējams ievietot TABLE_NAME lauku, bet tikai tad, ja pārējiem laukiem nav DAŽU ierobežojumu. SQL> ievietojiet auth.test(table_name) vērtības ('straume'); Izveidota 1 rinda. SQL> atcelšana; Atcelšana pabeigta.
|