熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Logon Trigger Example 登陸例子

2013-11-13 16:07:08  來源: Oracle 

  EXAMPLE
  
  有時候我們不希望使用者利用ODBC來連接上資料庫利用ACCESS或者EXCEL來抓資料庫資料在道德勸說無效下就直接擋下來!
  
  BEGIN
  FOR rec in (select usernameprogramSYS_CONTEXT(USERENVIP_ADDRESS) ip from v$session
  where audsid = userenv(sessionid)) loop
  IF recIP = ? AND recUSERNAME = HR AND upper(recprogram) in
  (MSACCESSEXESQLPLUSWEXEJREWEXEMSEXCELEXE
  THEN
  EXIT
  ELSIF upper(recprogram) in (MSACCESSEXESQLPLUSWEXEJREWEXEMSEXCELEXE) THEN
  raise_application_error(Access Deny
  END IF
  END LOOP
  END
  
  只有HR並且由指定的IP 才能使用ACCESS或者SQL*PLUS或者EXCEL連上來其他的使用者皆無法連線
  
  但是擁有DBA OR SYSDBA ROLE的權限帳號是不會受到此限制
  
  EXAMPLE
  
  很多時候我們需要寫一個logon trigger來進行帳號登入的控管在Three tier 架構下大部分的程式可能都是由一個固定的帳號授與適當的權限經由AP Server連接到後端的Oracle資料庫來進行一般操作 這個帳號的權限可能很大而你並不希望programer利用這個帳號進入資料庫做一些測試動作因為這樣就達不到有效權限控管的要求可是這個AP專用的帳號及密碼可能是半公開的你如何防止這樣的情況發生呢? 寫一個logon trigger 也許是不錯的主意
  
  CREATE OR REPLACE TRIGGER LOGON_DB_TRIGGER
  AFTER LOGON ON DATABASE
  DECLARE
  IP VARCHAR
  UNAME VARCHAR
  BEGIN
  SELECT SYS_CONTEXT (USERENVIP_ADDRESSUSERNAME INTO IPUNAME FROM V$SESSION
  WHERE AUDSID=USERENV(SESSIONID
  IF IP != ? AND
  UNAME = APPLE THEN
  RAISE_APPLICATION_ERROR(CONNECTIION REFUSED
  END IF
  END
  
  寫好這個Trigger只要使用者帳號為apple且來源IP不是都會被拒絕連線掉喔!!這樣是不是多了些安全管控呢?特別注意一點如果欲受限制的帳號權限為DBA or SYSDBA者將不受此Trigger管制
From:http://tw.wingwit.com/Article/program/Oracle/201311/17838.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.