Oracle-11g

如何限制對特定 IP 地址和使用者的架構訪問?

  • November 13, 2017

我想鎖定對特定模式的訪問。當從特定 IP 地址建立連接時,限制對特定使用者的訪問。例如,僅訪問 USER1 和 USER2

AFTER LOGON 觸發器可用於此目的。

CREATE OR REPLACE TRIGGER system.check_ip_addresses 
AFTER LOGON 
ON DATABASE
BEGIN 
IF USER IN ('USER1', 'USER2') THEN
IF SYS_CONTEXT('USERENV', 'IP_ADDRESS') NOT IN 
('192.168.0.10','192.168.0.11') THEN
 RAISE_APPLICATION_ERROR(-20000, 'Can not log in from this IP address (' || 
l_ip_address || ')');
END IF;
END IF;
END; 
/

請記住以下幾點。

  1. 觸發器必須使用 ON DATABASE,因為使其特定於模式會阻止 RAISE_APPLICATION_ERROR 阻止登錄。
  2. 觸發器將針對所有連接嘗試觸發,因此請確保仔細限制它影響的使用者以減少成本。

引用自:https://dba.stackexchange.com/questions/190803