Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 13251|Ответ: 0

[Источник] Управление правами на уровне столбцов в базе данных Oracle

[Скопировать ссылку]
Опубликовано 11.12.2015 23:47:14 | | |
У клиента есть потребность, таблица из более чем 150 полей, клиенту нужно, чтобы видели только некоторые поля сотрудникам сканирующей компании, это требование легко реализовать с помощью просмотра, клиент также запрашивает эти поля, компания может изменять только отдельные поля, я раньше не сталкивался с такой необходимостью в контроле разрешений на уровне столбцов, я провёл эксперимент, мне очень интересно, запишите его.

У клиента есть такойСпрос, стол с более чем 150 полями, клиент попросил показать только некоторые поля тем, кто сканировал компанию, этоСпросЭто легко реализовать с просмотром, и клиент просит, чтобы эти поля могли менять только отдельные поля, я раньше не сталкивался с такой необходимостью в контроле разрешений на уровне столбцов, я провёл эксперимент, мне очень интересно, запишите этоТестпроцесс.

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

  SQL> создать table test (ID number,table_name varchar2(50),

владелец varchar2(50),TABLESPACE_NAME varchar2(50));

Таблица создана.

SQL> вставить в тест выбор rownum,table_name,owner,

TABLESPACE_NAME из dba_tables;

Создано 5490 строк.

SQL> коммит;

Коммит выполнен.

2. Создайте тестового пользователя и предоставите базовые права:

SQL> CONN / AS SYSDBA

Связаны.

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

Создано пользователем.

SQL> грант Connect, ресурс к потоку;

Гранту это удалось.

3. Предоставить пользователям права на уровне столбцов:

SQL> конн аутентификационно/аутентификация

Связаны.

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 GRANTOR PRIVILEGE GRA

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

СТРИМИТЬ АУТЕНТИФИКАЦИОННЫЙ ТЕСТ TABLE_NAME АВТОРИЗАЦИЯ ВСТАВИТЬ НЕТ

AUT AUTH TEST ID AUTH INSERT NO

AUT AUTH TEST ID AUTH UPDATE NO

СТРИМ: АУТЕНТИФИКАЦИОННЫЙ ТЕСТ ID АВТЕНТИФИКАЦИОННОГО ОБНОВЛЕНИЯ НЕТ

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

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

Связаны.

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

ID TABLE_NAME ВЛАДЕЛЕЦ TABLESPACE

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

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

2 IND$ SYS СИСТЕМЫ

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

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

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

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