觸發器限制指定IP訪問oracle資料庫
-
觸發器限制指定IP訪問oracle資料庫
-
---------------------來自德哥的BLOG,覺著很有用,記錄一下-------------------
-
-
最近有個專案需要限制某些資料庫使用者的訪問來源IP,在PG中比較好實現,但是ORACLE沒有比較簡便的操作。
-
如果不管使用者的話,僅僅限制來源IP對監聽的訪問是比較容易實現的,透過配置資料庫伺服器的sqlnet.ora檔案或者修改資料庫伺服器的IPTABLES等手段實現。
-
sqlnet.ora範例:
-
tcp.validnode_checking=yes
-
tcp.invited_nodes=(172.16.33.11,172.16.34.89)
-
-
iptables範例:
-
[root@kefu ~]# cat /etc/sysconfig/iptables
-
# Firewall configuration written by system-config-securitylevel
-
# Manual customization of this file is not recommended.
-
*filter
-
:INPUT ACCEPT [0:0]
-
:FORWARD ACCEPT [0:0]
-
:OUTPUT ACCEPT [0:0]
-
:RH-Firewall-1-INPUT - [0:0]
-
-A INPUT -j RH-Firewall-1-INPUT
-
-A FORWARD -j RH-Firewall-1-INPUT
-
# 允許訪問1521的伺服器
-
-A RH-Firewall-1-INPUT -s 172.16.3.68/32 -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
-
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
-
COMMIT
-
-
下面來看看如何限制特定使用者和特定IP:
-
-
1. 建立ACL表 (本例將ACL表建立在dsm使用者下,隨便建哪裡都可以)
-
create table dsm.tbl_iplimit (logonuser varchar2(32),ip_address varchar2(15),remark varchar2(64),create_time date default sysdate);
-
insert into dsm.tbl_iplimit values ('DSM','172.16.18.81','digoal''s host.',sysdate);
-
insert into dsm.tbl_iplimit values ('DSM','local','本地',sysdate);
-
commit;
-
這裡限制了DSM使用者只能從172.16.18.81和ORACLE所在伺服器登入.其他使用者不受限制.
-
-
2. 建立觸發器
-
conn / as sysdba
-
create or replace trigger "logon_audit" after
-
logon on database
-
declare
-
record_num number;
-
userip varchar2(15);
-
isforbidden boolean:=true;
-
begin
-
userip:=nvl(sys_context ('userenv','ip_address'),'local');
-
select count(*) into record_num from dsm.tbl_iplimit where logonuser=user;
-
if (record_num>0) then
-
select count(*) into record_num from dsm.tbl_iplimit where logonuser=user and ip_address=userip;
-
if (record_num=0) then
-
raise_application_error(-20003,'ip :'||userip||' is forbided');
-
end if;
-
end if;
-
exception
-
when value_error then
-
sys.dbms_output.put_line('exception handed');
-
when others then
-
raise;
-
end logon_audit;
- /
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2133909/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫限制訪問IPOracle資料庫
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- 限制特定IP訪問資料庫資料庫
- Windows限制訪問指定IPWindows
- 設定oracle資料庫IP訪問限制(IP白名單黑名單)Oracle資料庫
- 使用Oracle Net實現限制特定IP訪問資料庫Oracle資料庫
- 資料庫限制/允許某些IP訪問資料庫
- Oracle資料庫DDL審計觸發器觸發的bug問題Oracle資料庫觸發器
- 【方法】如何限定IP訪問Oracle資料庫Oracle資料庫
- 如何限定IP訪問Oracle資料庫-轉Oracle資料庫
- 禁止某個IP訪問Oracle資料庫Oracle資料庫
- Oracle資料庫訪問限制繞過漏洞 解決Oracle資料庫
- Oracle 觸發器 限制DDL操作Oracle觸發器
- 利用淘寶ip庫限制地區訪問
- Sqlserver限制賬戶在哪些ip下才可以訪問資料庫SQLServer資料庫
- .htaccess IP訪問限制
- oracle更改預設埠號,監聽器加密,限制ip訪問Oracle加密
- nginx限制ip訪問(轉)Nginx
- 限制訪問Oracle客戶端IP方法總結Oracle客戶端
- Oracle透明閘道器訪問SQLServer資料庫OracleSQLServer資料庫
- Oracle透明閘道器訪問MySQL資料庫OracleMySql資料庫
- Oracle配置sqlnet.ora限制ip訪問[Oracle基礎]OracleSQL
- 3.2.4 開啟資料庫到限制訪問模式資料庫模式
- Oracle資料庫訪問控制Oracle資料庫
- oracle巧用觸發器提高資料庫安全級別Oracle觸發器資料庫
- [zhuan]linux限制IP訪問sshLinux
- 資料庫開發---常用物件-觸發器資料庫物件觸發器
- SqlServer服務中利用觸發器對指定賬戶進行登入ip限制提升安全性SQLServer觸發器
- 資料庫觸發器,禁止DDL操作資料庫觸發器
- SQL資料庫觸發器例項SQL資料庫觸發器
- 資料庫的觸發器的使用資料庫觸發器
- 資料庫檢視,索引,觸發器資料庫索引觸發器
- oracle 觸發器實現禁止在資料庫中建立dblink ---透過觸發器實現Oracle觸發器資料庫
- Oracle資料庫訪問效能優化Oracle資料庫優化
- ORACLE 11g sqlnet.ora 設定限制IP 訪問OracleSQL
- 【磐維資料庫】Oracle(透明閘道器)訪問磐維資料庫(PanWeiDB)資料庫Oracle
- 求助:資料庫併發訪問問題資料庫
- oracle 限定ip訪問Oracle