【问题标题】:Apply restriction DML and DDL应用限制 DML 和 DDL
【发布时间】:2018-12-14 18:46:22
【问题描述】:
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') 可以运行插入、更新、删除、更改语句,而其他用户不能插入、更新、删除、更改数据。

【问题讨论】:

  • 你必须给予授权
  • 如何授予授权

标签: sql oracle permissions


【解决方案1】:

在 Oracle 中,插入、更新或删除的权限在用户或角色级别进行管理。这些用户是数据库用户,就像您的HRADMIN

如果 MuhammadJav、zeeshankh1、Alikh1 等操作系统用户使用相同的 oracle 帐户,事情就会变得更加困难。

像“ALTER”或“CREATE”这样的 DML 语句的处理方式完全不同。像“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

【讨论】:

  • 是的,在 GRANT 语句之后,用户 MUHAMMADJAV 等可以插入、更新和删除表 HRADMIN.your_table_name。
  • 先生,我的意思是如果用户不是 MUHAMMADJAV 等能够插入、更新和删除表或(表数据)
  • 只有那些Oracle用户才能插入到被授予权限的表中。所以,在上面的例子中,MUHAMMADJAV 和 ZEESHANKH1 可以插入,但 ALIKH1 不能插入(因为他的 username= 没有 GRANT 语句。
  • 因为一个用户有多个 OS_name 所以我想限制 OS_name 例如 OS-name(Ali,ali1) Ali 可以插入、更新和删除表或(表数据)但 ali1 可以t 并且都有相同的用户
  • 请查看ALL_TAB_PRIVSGRANTEE 是“被授予访问权限的用户或角色”。 Privs 在数据库内部,因此肯定适用于数据库级别。如果您想要操作系统级别,则将操作系统用户映射到角色是您的工作。这是可能的,但我自己肯定不会这样做。
猜你喜欢
  • 2011-02-04
  • 2021-06-26
  • 2022-01-16
  • 1970-01-01
  • 2019-05-06
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多