电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

Logon Trigger Example 登陆例子


发布日期:2021/7/10
 

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管制

上一篇:LILO提示信息

下一篇:bashprofile格式设置问题