国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

oracle 每個用戶 ip訪問限制 開發總結

2024-08-29 13:32:57
字體:
來源:轉載
供稿:網友

單純的設定允許的ip 和 禁止的IP
 以前有文檔說增加或修改PRotocol.ora文件,
在9i中真正起作用的是sqlnet.ora文件,我們修改sqlnet.ora其實是最好最快的方法。
 
在sqlnet.ora中增加如下部分
-----------------------------
#### 來自 protocol.ora 的屬性 ####
 
tcp.validnode_checking=yes 
 
#允許訪問的IP
tcp.invited_nodes=(ip1,ip2……) 
 
#禁止訪問的IP
tcp.excluded_nodes=(ip1,ip2……)
 
之后重新啟動監聽器即可
 
需要注意的地方:
1、tcp.invited_nodes與tcp.excluded_nodes都存在,以tcp.invited_nodes為主
2、一定要許可或不要禁止服務器本機的IP地址,否則通過lsnrctl將不能啟動或停止監聽,因為該過程監聽程序會通過本機的IP訪問監聽器,而該IP被禁止了,但是通過服務啟動或關閉則不影響。
3、修改之后,一定要重起監聽才能生效,而不需要重新啟動數據庫
4、任何平臺都可以,但是只適用于TCP/IP協議
但是,客戶需求:針對每一個用戶,都能指定相應的允許的IP地址.
設計思路
:建立表(用戶名,ip地址),觸發器 (AFTER LOGON ON DATABASE)
缺點:
不過AFTER LOGON ON DATABASE觸發器對有DBA權限的用戶不起作用,還好客戶說,數據庫中擁有DBA權限的用戶就幾個,并且密碼就一個人知道.
如果對DBA用戶也要限制IP地址,觸發器這種方法就無能威力了.
運行抓圖
Table,Trigger,Package源碼:

SQL> select * from iplimit;
LOGONUSER  IPBEGIN                 IPEND                    REASON     ADDTIME
----------               ---------------           ---------------              ----------       ----------
PUBLIC             202.94.155.37     202.94.155.101   實驗室         17-7月 -06
HYCW               202.94.155.67      202.94.155.67     sd                 17-7月 -06
KFKF                 222.158.124.129 222.158.124.129  開發            17-7月 -06
觸發器
CREATE OR REPLACE TRIGGER "LOGON_AUDIT" AFTER
LOGON ON DATABASE
DECLARE
RECORD_NUM NUMBER;
USERIP VARCHAR2(15);
ISFORBIDDEN BOOLEAN:=TRUE;
BEGIN
  USERIP:=SYS_CONTEXT ('USERENV','IP_ADDRESS');
  SELECT COUNT(*) INTO RECORD_NUM FROM ACME.IPLIMIT WHERE LOGONUSER=USER;
  IF(RECORD_NUM>0)THEN
    IF(ACME.SECURITY.ISLEGALIP(USERIP,USER)=FALSE)THEN
      RAISE_application_ERROR(-20003,'IP :'||USERIP||' is forbided');
    END IF;
   
  ELSE
    SELECT COUNT(*) INTO RECORD_NUM FROM ACME.IPLIMIT WHERE LOGONUSER='PUBLIC';
    IF(RECORD_NUM>0)THEN
      IF(ACME.SECURITY.ISLEGALIP(USERIP,'PUBLIC')=FALSE)THEN
        RAISE_APPLICATION_ERROR(-20003,'IP :'||USERIP||' is forbided');
      END IF;
    ELSE
      RAISE_APPLICATION_ERROR(-20003,'IP :'||USERIP||' is forbided');
    END IF;
  END IF;   
EXCEPTION
 WHEN NO_DATA_FOUND THEN
  RAISE;
 WHEN VALUE_ERROR THEN
  SYS.Dbms_Output.PUT_LINE('EXCEPTION HANDED');
 WHEN OTHERS THEN
  RAISE;
END LOGON_AUDIT;
/
程序包
CREATE OR REPLACE PACKAGE "SECURITY" IS
  FUNCTION ISLEGALIP(USERIP IN VARCHAR2,USERNAME IN VARCHAR2) RETURN BOOLEAN;
 FUNCTION Chartonumcompare(Char1 IN VARCHAR2,Char2 IN VARCHAR2) RETURN NUMBER ;
 FUNCTION Ipcompare(Ip1 IN VARCHAR2,Ip2 IN VARCHAR2) RETURN NUMBER ;
 END Security;
/
程序包體就不提供了
就是關于上面3個函數的
 
轉自:煙臺大蘋果


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长宁县| 怀安县| 松江区| 疏勒县| 双桥区| 凤翔县| 绥滨县| 宜良县| 焦作市| 旬邑县| 绵竹市| 石首市| 长武县| 昌平区| 淮北市| 平昌县| 大悟县| 双江| 伊金霍洛旗| 临潭县| 德格县| 新昌县| 冀州市| 连城县| 罗城| 阆中市| 景德镇市| 浮山县| 江陵县| 潼关县| 北川| 长治市| 吴桥县| 辽源市| 柳江县| 蕲春县| 永安市| 安康市| 湖南省| 河西区| 长兴县|