夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          限制訪問Oracle客戶端IP方法總結
          在itpub上有一個帖子討論了一個話題,就是關于限定訪問Oracle客戶端IP的方法問題的討論,我印象中似乎這樣的問題在論壇上已經討論了比較多了,今天就總結一下。

          http://www.itpub.net/743725,1.html

            這里討論的在Oracle數據庫層面上限制IP的方法,當然還有可以在網絡層面上限制IP,例如防火墻軟件等方式。應用層,例如:WebLogic設置訪問數據庫的IP。

            在Oracle數據庫中由于版本的差異,可以通過不同的方式來解決這些問題。

          有幾種方式來實現這樣的功能:

          1、 修改SQLNET.ora文件限制訪問數據庫的IP。
          2、 使用觸發器實現。

          sqlnet.ora文件的功能:

          1. Specify the client domain to append to unqualified names

          2. Prioritize naming methods

          3. Enable logging and tracing features

          4. Route connections through specific processes

          5. Configure parameters for external naming

          6. Configure Oracle Advanced Security

          7. Use protocol-specific parameters to restrict access to the database


          這里使用的就是sqlnet.ora文件的第七項功能限制訪問數據庫的連接。

          適用版本:oracle 9i以上版本
          在9i提供了幾個參數:
          TCP.EXCLUDED_NODES
          設置禁止訪問數據庫的IP地址列表。
          TCP.INVITED_NODES
          設置允許訪問數據庫的IP地址列表,當這個參數和TCP.EXCLUDED_NODES設置的地址相同的時候將覆蓋TCP.EXCLUDED_NODES設置。
          TCP.VALIDNODE_CHECKING
          檢測上述參數的設置。

          例如:
           
          tcp.validnode_checking=yes #允許訪問的ip tcp.invited_nodes =(ip1,ip2,……) #不允許訪問的ip tcp.excluded_nodes=(ip1,ip2,……)
           


          通過這樣的設置就可以根據自己的需要更改,

          需要注意的問題:
          1、 需要設置參數為YES,這樣才能激活。
          2、 建議設置允許訪問的IP,因為IP地址有可能被隨意修改,就不能起到自己的目的。
          3、 TCP當參數TCP.INVITED_NODES和TCP.EXCLUDED_NODES設置的地址相同的時候將覆蓋TCP.EXCLUDED_NODES設置。
          4、 需要重啟監聽器才能生效。
          5、 這個方式只是適合TCP協議。
          6、 這個配置適用于9i以上版本。在9i之前的版本使用文件protocol.ora。
          7、 在服務器上直接連接數據庫不受影響。
          8、 這種限制方式事通過監聽器來限制的。 
           9、 這個限制只是針對IP檢測,對于用戶名檢測事不支持的。
          10、使用觸發器

           
          create or replace trigger stop_52_connect after logon on scott2.schema declare ipinfo VARCHAR2(30); begin select sys_context('userenv','ip_address') into ipinfo from dual; if ipinfo='172.16.0.52' then raise_application_error('-20001','you can not logon by scott2'); end if; end stop_52_connect;
          posted on 2010-07-19 18:13 HUIKK 閱讀(2539) 評論(0)  編輯  收藏 所屬分類: DataBase
          主站蜘蛛池模板: 玉屏| 司法| 北安市| 伊宁县| 建阳市| 牙克石市| 五家渠市| 龙山县| 沂源县| 扎囊县| 沧州市| 越西县| 西吉县| 调兵山市| 星子县| 灵宝市| 昭觉县| 西昌市| 拉孜县| 郁南县| 元阳县| 荔波县| 青川县| 德安县| 松江区| 大宁县| 同心县| 上犹县| 托里县| 淮阳县| 敖汉旗| 邛崃市| 内丘县| 罗定市| 女性| 武夷山市| 普宁市| 格尔木市| 曲阜市| 永昌县| 依安县|