用oracle在进行多层分布式的时候.区县的oracle要访问市局的oracle实现数据共享。通过datalink来实现访问。但是有个问题是:datalink里面的用户名和口令都是明文保存的阿。这样市局的oracle的安全性就不好把握了。请问有没有什么方法可以解决既可以使用datalink有没有口令暴露的安全隐患?
各位大虾 帮帮小弟!

解决方案 »

  1.   

    建一个低权限的用户,只能访问有限的表、存储过程,区县的oracle要访问市局的oracle时,使用该用户创建datalink。
      

  2.   

    应该这样说吧
    既然给了你访问的权限,那么密码当然就是知道的。明不明文,就不重要了吧。
    要看到你的dblink的设置,也要你的用户密码哦
      

  3.   

    因为程序都是有市局统一开发.市局为了保障市局的其他局的数据不泄漏.但是又要求能够交互.所以才考虑用datalink. 但是 这个用户和密码又不能让区县局知道阿.
    大伙应该明白我的要求了吧.
    谢谢.哪位大虾帮一下!
      

  4.   

    如果区县局不知道用户和密码他怎么能登录到oracle呢,既然登录不到又怎么能看到你的datalink的内容呢?
      

  5.   

    好久没来了,总结发一下言吧,呵呵1、dblink本身并不是一个好的接口方式,只不过它实现起来相对轻松,有条件最好专门开发接口程序。将程序由两层的c/s结构改为三层。2、dblink是有安全性的问题的,不过设置得当还是可以把这种隐患降到最小的,主要有如下几个方面:
     a、在建用户和授权时不要授dba及select any table的权限,这样即使是明白,除dba外别人也查不到你dblink的用户名和口令的。
     b、你县局的dblink由你来建,勤劳一点也可以去除好多安全方面的问题。
     c、不要建立public dblink,将所有的public dblink都改为私有的。
     d、做到了如上的几点,你的dblink虽为明码,但它也是安全的。
      

  6.   

    我比较同意用低权限访问授权过的表来实现上述操作.当然喽,DBLINK 要私有不能公有哦.
    使用低权限用户操作,这样更保险,而且可以写密码效验过程,最好是单向的密码效验.
      

  7.   

    请问楼上诸位,你们是在哪里查到public型的DBLINK的用户名和口令的?我怎么只能在user_db_link中查私有的dblink的口令呢?
      

  8.   

    dba_db_links 或者 all_db_links
      

  9.   

    SQL> desc dba_db_links
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------
     OWNER                                     NOT NULL VARCHAR2(30)
     DB_LINK                                   NOT NULL VARCHAR2(128)
     USERNAME                                           VARCHAR2(30)
     HOST                                               VARCHAR2(2000)
     CREATED                                   NOT NULL DATE搞不明白哪个字段是口令???
      

  10.   

    可不可以,用webservice传输数据,在市局设置webservice的服务,不管b/s还是c/s 结构,总之都可以保证市局的数据库和库表结构不对外开放。在区县一级调用数据的时候,可以通过访问webservice的服务,得到某种形式的数据,他也不需要知道市局的库结构就得到他想要的数据了。当然,前提是基层单位的数据需求都类似,如果每个基层的数据都不一样,那么市局就要开发很多个不同的结构给基层,工作量就比较大了
      

  11.   

    to bobfang(匆匆过客),不好意思,回答的快了,没想就回答了。
    应该是 link$ 这个视图能得到密码。
      

  12.   

    link$只有DBA角色的用户才能查询,这个应该还是安全的吧。个人认为public的DBLINK比私有的更安全。因为私有的DBLINK在link$也存在,反之public的DBLINK在user_DB_LINK中是查不到的。
    请教楼上几位声称public的DBLINK不安全的理由是什么呢?