限制密码修改/撤销alter USER X IDENTIFIED BY Y的权限

日期: 2008-07-07 作者:Dan Norris翻译:April 来源:TechTarget中国 英文

问:我想撤消alter USER X IDENTIFIED BY Y文件的权限。虽然这一权限没有明确授予,我知道它已连接。即使我授权用户如创建会话、创建表格、创建类型等等,我发现用户x被授予更改密码的权限。作为用户,我同意他更改密码,但是当许多用户都在修改密码时,我该怎样阻止其中一个用户修改密码呢?   答:Oracle默许用户更改密码。

你也没有被授予取消用户修改密码的权力。因此,你不得不从另一个角度来解决这个问题。在Oracle8i或以上版本中,你能在DDL语句(如alter)中创建触发器,还能利用这一特征创建触发器阻止用户修改帐号。以下是在Oracle10g以及其他版本……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:我想撤消alter USER X IDENTIFIED BY Y文件的权限。虽然这一权限没有明确授予,我知道它已连接。即使我授权用户如创建会话、创建表格、创建类型等等,我发现用户x被授予更改密码的权限。作为用户,我同意他更改密码,但是当许多用户都在修改密码时,我该怎样阻止其中一个用户修改密码呢?

  答:Oracle默许用户更改密码。你也没有被授予取消用户修改密码的权力。因此,你不得不从另一个角度来解决这个问题。在Oracle8i或以上版本中,你能在DDL语句(如alter)中创建触发器,还能利用这一特征创建触发器阻止用户修改帐号。以下是在Oracle10g以及其他版本的中运行的示例:
  


create OR REPLACE TRIGGER no_alter_user
  BEFORE alter
  ON DATABASE
  BEGIN

  如果只有这一个触发器,我们没有必要检查ora_sysevent文件。

  激发alter语句:


IF (    ora_dict_obj_type =  ’USER’
      AND ora_dict_obj_name =  ora_login_user
      AND ora_login_user    != ’SYS’
      AND ora_login_user    != ’SYSTEM’
     ) THEN
    DBMS_OUTPUT.PUT_LINE(’altering the user: ’||ora_dict_obj_name);
    DBMS_OUTPUT.PUT_LINE(’I am logged in as: ’||ora_login_user);
    RAISE_APPLICATION_ERROR(-20000,’You are not allowed to alter yourself!’);
  END IF;
END NO_alter_USER;
/

  注意避开数据库管理员用户,因为他们可能想修改密码。密码纯粹是他们的一个起点,你将承担相关部署的一切责任。至于如何利用一个相近的触发器创建自定义审计跟踪,你可进一步查出MetaLink NOTE 199455.1

翻译

April
April

相关推荐