Применить ограничение DML и DDL - PullRequest
0 голосов
/ 06 июля 2018
SELECT 
     D.OS_USERNAME
    ,D.terminal AS MACHINE
    ,D.OBJ_NAME
    ,D.ACTION_NAME
    ,D.timestamp
    ,D.Sql_Text 
FROM DBA_AUDIT_TRAIL D 
WHERE D.OWNER = 'HRADMIN' 
  AND D.ACTION_NAME LIKE '%INSERT%' 
  AND D.OS_USERNAME NOT IN ('MuhammadJav','zeeshankh1');    

этот запрос даст мне запись

Я хочу применить ограничение или ограничение, чтобы только D.OS_USERNAME ('MuhammadJav','zeeshankh1','Alikh1') мог выполнять операции вставки, обновления, удаления, изменения операторов, но другой пользователь не может вставлять, обновлять, удалять, изменять данные.

1 Ответ

0 голосов
/ 06 июля 2018

В Oracle права на вставку, обновление или удаление управляются на уровне пользователя или роли. Эти пользователи являются пользователями базы данных, как и ваши HRADMIN.

Если пользователи операционных систем, такие как MuhammadJav, zeeshankh1, Alikh1, используют одну и ту же учетную запись Oracle, все становится намного сложнее.

Операторы DML, такие как «ALTER» или «CREATE», обрабатываются совершенно по-разному. Пользователь, подобный «HRADMIN», может делать то, что он / она хочет, с таблицами и другими объектами в своей собственной схеме. Это возможно, но очень трудно предотвратить это.

Итак, традиционное решение - предоставить MuhammadJav, zeeshankh1, Alikh1 их собственные учетные записи Oracle и предоставить им привилегии, которые вы хотите использовать как пользователь HRADMIN:

GRANT INSERT,UPDATE,DELETE ON HRADMIN.your_table_name TO MUHAMMADJAV;
GRANT INSERT,UPDATE,DELETE ON HRADMIN.your_table_name TO ZEESHANKH1; 
etc
...