Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 13251|Відповідь: 0

[Джерело] Керування дозволами на рівні стовпців бази даних Oracle

[Копіювати посилання]
Опубліковано 11.12.2015 23:47:14 | | |
У клієнта є потреба, таблиця з понад 150 полів, клієнту потрібні лише деякі поля, щоб їх бачили працівники скануючої компанії, цю вимогу легко реалізувати за допомогою перегляду, клієнт також запитує, ці поля компанія може змінювати лише окремі поля, я раніше не стикався з такою потребою в контролі дозволу на рівні стовпців, я провів експеримент, мені дуже цікаво, запишіть це

У клієнта є одинПопит, на столі з понад 150 полями, клієнт попросив показати лише деякі поля тим, хто сканував компанію, цеПопитЦе легко реалізувати за допомогою view, і клієнт просить, щоб ці поля могли змінювати лише окремі поля, я раніше не стикався з такою потребою в контролі дозволу на рівні стовпців, я провів експеримент, мені дуже цікаво, запишіть цеТестпроцес.

1. Створіть тестову таблицю та вставте точкові тестові дані:

  SQL> створити тест таблиці (ідентифікаційний номер,table_name varchar2(50),

власник Варчар2(50),TABLESPACE_NAME Варчар2(50));

Таблиця створена.

SQL> вставити у вибір тесту rownum,table_name,owner,

TABLESPACE_NAME з dba_tables;

Створено 5490 рядків.

SQL> комміт;

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

2. Створіть тестового користувача та надайте базові дозволи:

SQL> CONN / ЯК SYSDBA

Пов'язано.

SQL> створювати користувацький потік, ідентифікований за замовчуваними користувачами tablespace потоку;

Створено користувачем.

SQL> Grant Connect, ресурс до потоку;

Грант досяг успіху.

3. Надайте користувачам права на рівні стовпців:

SQL> CONN автентифікація/автентифікація

Пов'язано.

SQL> оновлення гранту (id) при тестуванні в поток;

Грант досяг успіху.

SQL> вставка гранту (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 ВСТАВИТИ АВТОРІЗАЦІЙНИЙ ТЕСТ NO

AUT AUTH TEST ID AUTH INSERT NO

AUT AUTH TEST ID АВТЕНТИФІКАЦІЯ ОНОВЛЕННЯ NO

ТРАНСЛЯЦІЯ AUTH TEST ID AUTH UPDATE AUTH NO

5. Користувач тесту входу перевіряє дозвіл SELECT:

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

Пов'язано.

SQL> вибрати * з(вибрати * з auth.test order by 1), де rownum< =10;

ID TABLE_NAME TABLE OWNER

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

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

2 IND$ SYS СИСТЕМИ

3 СИСТЕМНА СИСТЕМА COL$

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

5 TAB$ SYS СИСТЕМА

6 LOB$ СИСТЕМНА СИСТЕМА

7 СИСТЕМНА СИСТЕМА COLTYPE$

8 СИСТЕМНА СИСТЕМА SUBCOLTYPE$

9 NTAB$ СИСТЕМНА СИСТЕМА

10 СИСТЕМНА СИСТЕМА REFCON$

Вибрано 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;

Оновлено один рядок.

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