问:我想撤消alter USER X IDENTIFIED BY Y文件的权限。虽然这一权限没有明确授予,我知道它已连接。即使我授权用户如创建会话、创建表格、创建类型等等,我发现用户x被授予更改密码的权限。作为用户,我同意他更改密码,但是当许多用户都在修改密码时,我该怎样阻止其中一个用户修改密码呢? 答:Oracle默许用户更改密码。
你也没有被授予取消用户修改密码的权力。因此,你不得不从另一个角度来解决这个问题。在Oracle8i或以上版本中,你能在DDL语句(如alter)中创建触发器,还能利用这一特征创建触发器阻止用户修改帐号。以下是在Oracle10g以及其他版本……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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
作者
翻译
相关推荐
-
甲骨文针对Java 7发布零天漏洞更新
甲骨文公司昨日发布了两个针对Java零天(zero day)漏洞的带外(out-of-band)安全更新,其中漏洞CVE-2013-0422在发现当天就已被攻击。
-
OpenWorld案例分享:Oracle透明数据加密技术
在本次Oracle OpenWorld 2010会议上,来自Robert Morris 大学(RMU)的信息安全主管向我们分享了一个Oracle高级安全的应用案例。
-
如何对Oracle中的PL/SQL源码进行加密
为了保护PL/SQL源代码,防止PL/SQL代码被非法使用。DBA可以使用wrap工具或者DBMS_DDL子程序对PL/SQL源码进行加密。
-
Oralce安全之身份管理器
考虑到简化管理,降低风险和更易于集成这三个驱动因素,OIM被添加到了Oracle身份管理产品套件。