Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 13251|Отговор: 0

[Източник] Контрол на разрешения на ниво колона в база данни на Oracle

[Копирай линк]
Публикувано в 11.12.2015 г. 23:47:14 ч. | | |
Клиентът има нужда, таблица с над 150 полета, клиентът изисква само някои полета, които да бъдат видяни от хората на сканиращата компания, това изискване може лесно да се реализира с изглед, клиентът също заявява, тези полета, сканиращата компания може да променя само отделни полета, наистина не съм срещал такава нужда от контрол на разрешения на ниво колони досега, направих експеримент, чувствам се много интересен, запиши го

Клиентът има такъвТърсене, маса с повече от 150 полета, клиентът поиска да покаже само някои от полетата на хората, които сканираха компанията, товаТърсенеМоже лесно да се реализира с изглед, а клиентът иска тези полета, компанията за сканиране може да променя само отделни полета, наистина не съм срещал такава нужда от контрол на разрешения на ниво колони досега, направих експеримент, чувствам се много интересен, запиши гоТестпроцес.

1. Създайте тестова таблица и вмъкнете точки от тестови данни:

  SQL> създам тест на таблица (ID номер,table_name varchar2(50),

собственик Varchar2(50),TABLESPACE_NAME Varchar2(50));

Таблицата е създадена.

SQL> вмъкни в тест избор rownum,table_name,owner,

TABLESPACE_NAME от dba_tables;

Създадени са 5490 реда.

SQL> commit;

Коммитът е завършен.

2. Създайте тестов потребител и дайте основни права:

SQL> CONN / AS SYSDBA

Свързани.

SQL> създава потребителски поток, идентифициран от потребителите по подразбиране на таблицното пространство на потока;

Създадено от потребителя.

SQL> grant connect, ресурс към поток;

Грант успя.

3. Дайте на тестовите потребители права на ниво колони:

SQL> Conn auth/auth

Свързани.

SQL> актуализация на гранта (id) при тест към поток;

Грант успя.

SQL> grant insert (table_name) при тест за стрийм;

Грант успя.

SQL>

SQL> избор на грант при тест за стрийминг;

Грант успя.

4. Запитване на информация за задаване на разрешения на ниво колона:

SQL> изберете GRANTEE, OWNER,TABLE_NAME,COLUMN_NAME,GRANTOR,PRIVILEGE,

GRANTABLE от user_col_privs;

ПРИТЕЖАТЕЛЯТ TABLE_NAME COLUMN_NAME ПРИВИЛЕГИЯ НА ГРАНТОПОЛУЧАТЕЛЯ GRA

------- ----- ---------- ----------- ------- --------- ---

СТРИЙМ АУТЕНТИЧНИЯ ТЕСТ TABLE_NAME АВТОРИЗАЦИЯ ВМЪКНЕТЕ НЕ

AUT AUTH TEST ID AUTH INSERT NO

AUT AUTH TEST ID AUTH UPDATE NO

СТРИЙМ АУТЕНТИКАЦИЯ ТЕСТ ID АВТЕНТИКАЦИЯ АКТУАЛИЗАЦИЯ NO

5. Потребителят за тест за вход проверява SELECT разрешение:

SQL> конн поток/поток

Свързани.

SQL> select * from(select * от auth.test order by 1), където rownum< =10;

ID TABLE_NAME СОБСТВЕНИК ПРОСТРАНСТВО

---------- -------------------- ---------- ----------

1 ICOL$ СИСТЕМНА СИСТЕМА

2 IND$ SYS СИСТЕМА

3 COL$ SYS СИСТЕМА

4 CLU$ СИСТЕМНА СИСТЕМА

5 TAB$ СИСТЕМНА СИСТЕМА

6 LOB$ SYS СИСТЕМА

7 COLTYPE$ SYS СИСТЕМА

8 SUBCOLTYPE$ SYS СИСТЕМА

9 NTAB$ СИСТЕМА

10 REFCON$ SYS СИСТЕМА

Избрани са 10 реда.

6. Проверете контрола на разрешения за UPDATE на ниво колона:

SQL> обнови auth.test set owner='STREAM', където id =1;

актуализирай auth.test set owner='STREAM', където id =1

  *

ГРЕШКА на ред 1:

  ORA-01031: insufficient privileges

Вижда се, че стойността на полето OWNER в тестовата таблица не може да се променя, докладвайте ORA-01031: Недостатъчно разрешение, тъй като горното дава на тестовия потребител разрешение да променя ID полето на тестовата таблица, възможно е да се модифицира полето ID.

SQL> обнови auth.test set id=10, където id=1;

1 ред е обновен.

SQL> връщане назад;

Връщането назад е завършено.

7. Проверете контрола за разрешение на INSERT на ниво колона:

SQL> вмъкнете в auth.test стойностите (1,'stream','stream','users');

Вмъкнете в стойностите на auth.test (1,'stream','stream','users')

  *

ГРЕШКА на ред 1:

  ORA-01031: insufficient privileges

Тъй като горното дава на тестовия потребител разрешение за вмъкване да модифицира TABLE_NAME полето на тестовата таблица, е възможно да се вмъкне TABLE_NAME поле, но само ако другите полета нямат НЕ НЯКОИ ограничения.

SQL> вмъкнете в auth.test(table_name) стойности ("поток");

Създаден е 1 ред.

SQL> връщане назад;

Връщането назад е завършено.






Предишен:Подробен инструкции стъпка по стъпка за инсталация на Oracle 10G
Следващ:След като Tencent Analytics е активиран, системата е заета, моля, опитайте отново по-късно
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com