有相关安全策略会要求部分 ip 禁止访问oracle数据库,那么如何实现对IP的白名单设置呢?又如何细分到对用户的限制访问呢?本文将介绍方法给大伙。
1、禁止IP访问数据库(修改sqlnet.ora方式实现)
vi $ORACLE_HOME/network/admin/sqlnet.ora
#开启ip限制功能
tcp.validnode_checking=yes
#允许访问数据库的IP地址列表,多个IP地址使用逗号分开
tcp.invited_nodes=(192.168.1.110)
#禁止访问数据库的IP地址列表,多个IP地址使用逗号分开
tcp.excluded_nodes=(172.17.15.90,172.17.15.76,192.168.116.102)
一般用第一个和第三个即可
修改完lsnrctl reload重启监听即可
2、限制某些IP访问特定用户(使用触发器方式实现)
CREATE OR REPLACE TRIGGER DISABLELOGIN
AFTER LOGON ON KINGDEE.SCHEMA
BEGIN
IF ORA_CLIENT_IP_ADDRESS IN ('172.17.15.90','172.17.15.76','192.168.116.102') THEN
RAISE_APPLICATION_ERROR(-20001,'USER '||ORA_LOGIN_USER||' IS NOT ALLOWED TO CONNECT FROM '||ORA_CLIENT_IP_ADDRESS);
END IF;
END;
/
如果想要禁止某个网段的话,把ORA_CLIENT_IP_ADDRESS IN换为ORA_CLIENT_IP_ADDRESS LIKE('10.10.10.%'),即可
查询创建的触发器
SELECT TABLE_OWNER,BASE_OBJECT_TYPE,TRIGGERING_EVENT FROM DBA_TRIGGERS WHERE trigger_name='DISABLELOGIN';