应用限制DML和DDL

时间:2018-07-06 08:00:31

标签: sql oracle permissions

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')可以运行insert,update,delete,alter语句,而其他用户不能插入,更新,delete,alter数据。

1 个答案:

答案 0 :(得分:1)

在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