如何限定IP訪問Oracle資料庫-轉
在Oracle中,有3種辦法可以限定特定IP訪問資料庫。第一種是利用登入觸發器,如下:
CREATE OR REPLACE TRIGGER CHK_IP_LHR
AFTER LOGON ON DATABASE
DECLARE
V_IPADDR VARCHAR2(30);
V_LOGONUSER VARCHAR2(60);
BEGIN
SELECT SYS_CONTEXT('USERENV', 'IP_ADDRESS'),
SYS_CONTEXT('USERENV', 'SESSION_USER')
INTO V_IPADDR, V_LOGONUSER
FROM DUAL;
IF V_IPADDR LIKE ('192.168.59.%') THEN
RAISE_APPLICATION_ERROR('-20001', 'User '||V_LOGONUSER||' is not allowed to connect from '||V_IPADDR);
END IF;
END;
/
|
需要注意的問題:
① 觸發的物件型別可以為DATABASE,也可以為“使用者名稱.SCHEMA”,如:
AFTER LOGON ON DATABASE
AFTER LOGON ON SCOTT.SCHEMA
|
②
當觸發的物件型別為DATABASE的時候,登入使用者不能擁有“ADMINISTER DATABASE
TRIGGER”的系統許可權;當觸發的物件型別為“使用者名稱.SCHEMA”的時候,登入使用者不能擁有“ALTER ANY
TIGGER”的系統許可權。否則,這些使用者還是會正常登入到資料庫,只是將相應的報錯資訊寫入到告警日誌中。所以,擁有IMP_FULL_DATABASE和DBA角色的使用者以及SYS和EXFSYS使用者將不能透過這種方式限制登入。
③
隱含引數“_SYSTEM_TRIG_ENABLED”的預設值是TRUE,即允許DDL和系統觸發器。當設定隱含引數“_SYSTEM_TRIG_ENABLED”為FALSE的時候,將禁用DDL和系統觸發器。所以,當該值設定為FALSE的時候將不能透過這種方式限制登入。
第二種是修改$ORACLE_HOME/network/admin/sqlnet.ora檔案,增加如下內容:
TCP.VALIDNODE_CHECKING=YES #開啟IP限制功能
TCP.INVITED_NODES=(127.0.0.1,IP1,IP2,……) #允許訪問資料庫的IP地址列表,多個IP地址使用逗號分開
TCP.EXCLUDED_NODES=(IP1,IP2,……) #禁止訪問資料庫的IP地址列表,多個IP地址使用逗號分開
|
之後重新啟動監聽器即可。這樣客戶端在登入的時候會報“ORA-12537: TNS:connection closed”的錯誤。
需要注意的問題:
① 需要設定引數TCP.VALIDNODE_CHECKING為YES才能啟用該特性。
② 一定要許可或不要禁止資料庫伺服器本機的IP地址,否則透過lsnrctl將不能啟動或停止監聽,因為該過程監聽程式會透過本機的IP訪問監聽器,而該IP被禁止了,但是透過服務啟動或關閉則不影響。
③ 當引數TCP.INVITED_NODES和TCP.EXCLUDED_NODES設定的地址相同的時候以TCP.INVITED_NODES的配置為主。
④ 修改之後,一定要重起監聽才能生效,而不需要重新啟動資料庫。
⑤ 這個方式只是適合TCP/IP協議。
⑥ 這個配置適用於Oracle 9i以上版本。在Oracle 9i之前的版本使用檔案protocol.ora。
⑦ 在伺服器上直接連線資料庫不受影響。
⑧ 這種限制方式是透過監聽器來限制的。
⑨ 這個限制只是針對IP檢測,對於使用者名稱檢測是不支援的。
第3種是修改資料庫伺服器的IPTABLES(配置檔案:/etc/sysconfig/iptables)來限制某些IP登入資料庫伺服器。如下:
iptables -A INPUT -s 192.168.59.1/32 -i eth0 -p tcp --dport 1521 -j DROP
service iptables save
|
則,192.168.59.1這臺主機將不能透過1521埠連線到資料庫伺服器了,會報“ORA-12170: TNS:Connect timeout occurred”的錯誤。
轉至http://www.itpub.net/thread-2085377-1-1.html
轉至http://www.itpub.net/thread-2085377-1-1.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29551564/viewspace-2137569/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- Oracle資料庫限制訪問IPOracle資料庫
- Oracle透明閘道器訪問SQLServer資料庫OracleSQLServer資料庫
- Oracle透明閘道器訪問MySQL資料庫OracleMySql資料庫
- Oracle資料庫連結(DBLink)中如何訪問包含BLOB欄位的資料Oracle資料庫
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- 【磐維資料庫】Oracle(透明閘道器)訪問磐維資料庫(PanWeiDB)資料庫Oracle
- Oracle如何診斷遠端訪問資料庫慢/超時等問題小結Oracle資料庫
- JDBC資料庫訪問JDBC資料庫
- Oracle DBLink跨資料庫訪問SQL server資料同步 踩坑實錄Oracle資料庫SQLServer
- Sqlserver限制賬戶在哪些ip下才可以訪問資料庫SQLServer資料庫
- 如何從公網訪問內網MongoDB資料庫內網MongoDB資料庫
- 資料庫mysql如何訪問控制?有哪些階段?資料庫MySql
- 外網訪問MySQL資料庫MySql資料庫
- Serverless 解惑——函式計算如何訪問 Redis 資料庫Server函式Redis資料庫
- Serverless 解惑——函式計算如何訪問 Mongo 資料庫Server函式Go資料庫
- Serverless 解惑——函式計算如何訪問 MySQL 資料庫Server函式MySql資料庫
- Serverless 解惑——函式計算如何訪問 PostgreSQL 資料庫Server函式SQL資料庫
- 如何使用 Node.js 訪問 SAP HANA Cloud 資料庫裡的資料Node.jsCloud資料庫
- Oracle資料庫日期格式轉換操作Oracle資料庫
- Oracle DG資料庫狀態轉換Oracle資料庫
- 使用 @NoRepositoryBean 簡化資料庫訪問Bean資料庫
- jmeter 使用 ssh 方式訪問資料庫JMeter資料庫
- oracle 12C以上 版本資料庫訪問 ORA-28040 ORA-03134Oracle資料庫
- Oracle資料訪問元件ODAC的安裝方法Oracle元件
- 如何透過holer從外網訪問本地的資料庫?資料庫
- Serverless 解惑——函式計算如何訪問 SQL Server 資料庫Server函式SQL資料庫
- 【磐維資料庫】透過python訪問磐維資料庫資料庫Python
- 如何檢視Linux 當前訪問ipLinux
- ORACLE 資料庫管理員的職責(轉)Oracle資料庫
- Xamarin SQLite教程資料庫訪問與生成SQLite資料庫
- Python學習之旅:訪問MySQL資料庫PythonMySql資料庫
- 資料庫訪問幾種方式對比資料庫
- [開源] .Net ORM 訪問 Firebird 資料庫ORM資料庫
- 如何解決網站限制IP訪問的問題網站
- 在Linux中,如何統計ip訪問情況?分析 nginx 訪問日誌?如何找出訪問頁面數量在前十位的ip?LinuxNginx
- .htaccess IP訪問限制
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- Jtti:如何修復Oracle資料庫執行過程的問題JttiOracle資料庫