最初由 fresh_man 发布
[B]请问如何将 每个用户下的 user_db_links 表内的password字段的内容加密,或是不让用户进行查询?
因为通过 数据库链路,就可以知道其他数据库用户的密码! [/B]
这个问题有趣,也是不少DBA担心的一个问题。
起初这个权限出现在select any table上,即如果用户有这个系统权限,他即可查sys.link$,所有dblink的pass都知道了。这个问题直到9.2.0.6 Oracle才修补上。
再就是你说的这个问题,其实你的问题很好解决。你只需把user_db_links这个视图重建一下就可以了。
user_db_links的创建脚本为:
[php]
create or replace view user_db_links
(db_link, username, password, host, created)
as
select l.name, l.userid, l.password, l.host, l.ctime
from sys.link$ l
where l.owner# = userenv('SCHEMAID')
[/php]
以sys用户登陆,把如上的脚本改成
[php]
create or replace view user_db_links
(db_link, username, host, created)
as
select l.name, l.userid,l.host, l.ctime
from sys.link$ l
where l.owner# = userenv('SCHEMAID')
[/php]
即把其它的password这一列去掉,放心用吧,我这儿这么做几年了
|