Zákazník potřebuje tabulku s více než 150 poli, zákazník potřebuje, aby lidé skenovací firmy viděli jen některá pole, tento požadavek lze snadno realizovat pomocí pohledu, zákazník také žádá, tato pole může skenovací firma upravovat pouze jednotlivá pole, opravdu jsem se s takovou potřebou kontroly oprávnění na úrovni sloupců nikdy nesetkal, udělal jsem experiment, cítím se velmi zajímavě, zaznamenám to
Zákazník ji máPoptávka, tabulky s více než 150 poli, zákazník požádal, aby ukázal jen některá pole lidem, kteří firmu skenovali, a toPoptávkaLze to snadno implementovat pomocí pohledu a zákazník požaduje, aby tato pole mohla skenovat pouze jednotlivá pole, opravdu jsem se s takovou potřebou kontroly oprávnění na úrovni sloupců nikdy nesetkal, udělal jsem experiment, cítím se velmi zajímavě, zaznamenám toTestProces. 1. Vytvořte testovací tabulku a vložte bodová testovací data: SQL> vytvořit tabulku test(id číslo,table_name varchar2(50), vlastník varchar2(50),TABLESPACE_NAME varchar2(50)); Tabulka vytvořena. SQL> insert into test select rownum,table_name,owner, TABLESPACE_NAME z roku dba_tables; Vytvořeno 5490 řádků. SQL> commit; Závazek dokončen. 2. Vytvořte testovacího uživatele a zadejte základní oprávnění: SQL> CONN / AS SYSDBA Propojení. SQL> vytváření uživatelského proudu identifikovaného uživateli výchozího stolního prostoru streamu; Uživatel vytvořil. SQL> grant connect, resource to stream; Grant uspěl. 3. Udělit testovacím uživatelům oprávnění na úrovni sloupců: SQL> conn auth/auth Propojení. SQL> grant update (id) při testu na stream; Grant uspěl. SQL> grant insert (table_name) při testu pro stream; Grant uspěl. SQL> SQL> při testu vybrat pro stream; Grant uspěl. 4. Dotazujte se na informace o nastavení oprávnění na úrovni sloupců: SQL> vyberte PŘÍJEMCE, VLASTNÍKA, TABLE_NAME, COLUMN_NAME, GRANTOR, PRIVILEGE, UDĚLITELNÉ od user_col_privs; DRŽITEL GRANTU TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRA ------- ----- ---------- ----------- ------- --------- --- TEST AUTENTIZACE STREAMU TABLE_NAME VLOŽIT ČÍSLO AUTENTIFIKACE AUT AUTH TEST ID AUTENT VLOŽIT ČÍSLO AUT AUTH, TEST ID AUTENTIZACE AKTUALIZACE AUTENTIZACE OVĚŘENÍ STREAMU TEST ID AKTUALIZACE AUTENTIZACE NE 5. Uživatel testuje přihlášení ověřuje oprávnění SELECT: SQL> conn stream/stream Propojení. SQL> vyberte * from(select * from auth.test order by 1), kde rownum< =10; TABULKOVÝ PROSTOR PRO VLASTNÍKA ID TABLE_NAME ---------- -------------------- ---------- ---------- 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 řádků. 6. Ověřte řízení oprávnění UPDATE na úrovni sloupců: SQL> aktualizovat auth.test set owner='STREAM', kde id =1; update auth.test set owner='STREAM', kde id =1 * CHYBA na řádku 1: ORA-01031: insufficient privileges Je vidět, že hodnota pole OWNER testovací tabulky není povolena měnit, report ORA-01031: Nedostatečné oprávnění, protože výše uvedené dává uživateli oprávnění upravovat pole ID testovací tabulky, je možné pole ID upravit. SQL> update auth.test set id=10 kde id=1; Aktualizován 1 řádek. SQL> rollback; Návrat zpět dokončen. 7. Ověřte řízení oprávnění na úrovni sloupců INSERT: SQL> vložte do auth.test values (1,'stream', 'stream', 'users'); vložte do auth.test hodnot (1,'stream', 'stream', 'users') * CHYBA na řádku 1: ORA-01031: insufficient privileges Protože výše uvedené dává uživateli povolení k vložení TABLE_NAME pole testovací tabulky, je možné vložit TABLE_NAME pole, ale pouze pokud ostatní pole nemají ŽÁDNÁ omezení. SQL> vložit do auth.test(table_name) hodnot ('stream'); Vytvořen 1 řádek. SQL> rollback; Návrat zpět dokončen.
|