Oracle-11g
如何限制對特定 IP 地址和使用者的架構訪問?
我想鎖定對特定模式的訪問。當從特定 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; /
請記住以下幾點。
- 觸發器必須使用 ON DATABASE,因為使其特定於模式會阻止 RAISE_APPLICATION_ERROR 阻止登錄。
- 觸發器將針對所有連接嘗試觸發,因此請確保仔細限制它影響的使用者以減少成本。