Zákazník má potrebu, tabuľku s viac ako 150 poľami, zákazník potrebuje, aby ľudia zo skenovacej spoločnosti videli len niektoré polia, túto požiadavku sa dá ľahko realizovať pohľadom, zákazník tiež žiada, tieto polia, skenovacia firma môže upravovať len jednotlivé polia, naozaj som sa s takou potrebou kontroly povolení na úrovni stĺpcov ešte nestretol, urobil som experiment, cítim sa veľmi zaujímavo, zaznamenám to
Zákazník ho máDopyt, tabuľke s viac ako 150 poliami, zákazník požiadal, aby ukázal len niektoré polia tým, ktorí spoločnosť skenovali, totoDopytDá sa to jednoducho implementovať pomocou pohľadu, a zákazník žiada, aby tieto polia mohla skenovacia spoločnosť upravovať len jednotlivé polia, naozaj som sa s takou potrebou kontroly oprávnení na úrovni stĺpcov ešte nestretol, urobil som experiment, cítim sa veľmi zaujímavo, zaznamenať toTestProces. 1. Vytvorte testovaciu tabuľku a vložte bodové testovacie údaje: SQL> Create table test (id number,table_name varchar2(50), vlastník varchar2(50),TABLESPACE_NAME varchar2(50)); Stôl vytvorený. SQL> vložiť do testu vybrať rownum,table_name,owner, TABLESPACE_NAME z roku dba_tables; Vytvorených 5490 riadkov. SQL> commit; Záväzok dokončený. 2. Vytvoriť testovacieho používateľa a dať základné oprávnenia: SQL> CONN / AS SYSDBA Prepojený. SQL> vytváranie používateľského prúdu identifikovaného predvolenými používateľmi stolového priestoru prúdu; Vytvorený používateľom. SQL> grant connect, resource to stream; Grant uspel. 3. Udeľte testovacím používateľom oprávnenia na úrovni stĺpca: SQL> conn auth/auth Prepojený. SQL> grant update (id) pri testovaní na stream; Grant uspel. SQL> grant insert (table_name) na test to stream; Grant uspel. SQL> SQL> udeliť výber pri testovaní na streamovanie; Grant uspel. 4. Vyhľadajte informácie o nastaveniach na úrovni stĺpca: SQL> Vyberte PRÍJEMCU, VLASTNÍKA, TABLE_NAME, COLUMN_NAME, GRANTOR, PRIVILEGE, UDELENÉ od user_col_privs; VLASTNÍK GRANTU TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRA ------- ----- ---------- ----------- ------- --------- --- TEST AUTENTIFIKÁCIE V PRÚDE TABLE_NAME VLOŽIŤ ČÍSLO AUTENTIFIKÁCIE AUT AUTH TEST ID AUTH VLOŽIŤ ČÍSLO AUT AUTH TEST ID AKTUALIZÁCIA AUTENTIFIKÁCIE NIE TEST AUTENTIFIKÁCIE STREAMU ID AKTUALIZÁCIA AUTENTIFIKÁCIE NIE 5. Používateľ testuje prihlásenie overuje oprávnenie SELECT: SQL> conn stream/stream Prepojený. SQL> vyberte * z(vyberte * z auth.test order by 1), kde Rownum< =10; ID TABLE_NAME VLASTNÍK STOLOVÉHO PRIESTORU ---------- -------------------- ---------- ---------- 1 ICOL$ SYS SYSTÉM 2 IND$ SYS SYSTÉM 3 COL$ SYS SYSTÉM 4 CLU$ SYS SYSTÉM 5 TAB$ SYS SYSTÉM 6 LOB$ SYS SYSTÉM 7 COLTYPE$ SYS SYSTÉM 8 SUBCOLTYPE$ SYS SYSTÉM 9 NTAB$ SYS SYSTÉM 10 REFCON$ SYS SYSTÉM Vybraných 10 riadkov. 6. Overiť kontrolu oprávnení UPDATE na úrovni stĺpca: SQL> aktualizovať auth.test set owner='STREAM', kde id =1; update auth.test set owner='STREAM', kde id =1 * CHYBA na riadku 1: ORA-01031: insufficient privileges Je zrejmé, že hodnota poľa VLASTNÍK testovacej tabuľky nie je povolená na zmenu, report ORA-01031: Nedostatočné oprávnenie, keďže vyššie uvedené dáva používateľovi povolenie meniť pole ID v testovacej tabuľke, je možné pole ID upraviť. SQL> aktualizovať auth.test set id=10 kde id=1; 1 riadok aktualizovaný. SQL> rollback; Návrat späť dokončený. 7. Overiť kontrolu oprávnení INSERT na úrovni stĺpca: SQL> vložiť do auth.test values (1,'stream', 'stream', 'users'); vložiť do auth.test hodnôt (1,'stream', 'stream', 'users') * CHYBA na riadku 1: ORA-01031: insufficient privileges Keďže vyššie uvedené dáva používateľovi oprávnenie na vloženie TABLE_NAME poľa testovacej tabuľky, je možné vložiť TABLE_NAME pole, ale len ak ostatné polia nemajú ŽIADNE obmedzenia. SQL> vložiť do auth.test(table_name) hodnôt ('stream'); Vytvorený 1 riadok. SQL> rollback; Návrat späť dokončený.
|