Ini adalah contoh Trigger untuk mencegah pengguna menggunakan alat tambahan (menggunakan Tools seperti Toad,SQL Depveloper ) untuk terkoneksi ke database production :
sqlplus / as sysdba
CREATE OR REPLACE TRIGGER block_tools_trigger AFTER LOGON ON PR_SOAINFRA.SCHEMA DECLARE v_prog sys.v_$session.program%TYPE; BEGIN SELECT program INTO v_prog FROM sys.v_$session WHERE audsid = USERENV(‘SESSIONID’) AND audsid != 0 — Don’t Check SYS Connections AND ROWNUM = 1; — Parallel processes will have the same AUDSID’s IF UPPER(v_prog) LIKE ‘%TOAD%’ OR UPPER(v_prog) LIKE ‘%T.O.A.D%’ OR — Toad UPPER(v_prog) LIKE ‘%SQLNAV%’ OR — SQL Navigator UPPER(v_prog) LIKE ‘%PLSQLDEV%’ OR — PLSQL Developer UPPER(v_prog) LIKE ‘%BUSOBJ%’ OR — Business Objects UPPER(v_prog) LIKE ‘%EXCEL%’ OR — MS-Excel plug-in UPPER(v_prog) LIKE ‘%SQLPLUS%’ — SQLPLUS THEN RAISE_APPLICATION_ERROR(-20000, 'User Production tidak boleh menggunakan Tools .'); END IF; END; /
Contoh user login menggunakan Tools Toad maka trigger otomatis jalan dan memberikan notifikasi atau memberikan pesan message “User Production tidak boleh menggunakan Tools .”
Catatan : Trigger ini tidak berjalan jika exe aplikasi di rename dengan nama lain.
Saran : Karena tidak mungkin untuk memblokir setiap executable dieksekusi atau
berganti nama yang menghubungkan ke database, Anda mungkin dapat mengizinkan beberapa program aplikasi untuk menghubungkan, misalnya dengan menambahkan script berikut :
IF program = xxxx OR (apa pun kondisi di sini misalnya SYS, SYSTEM, PERFSTAT or other admin users) THEN
… di ijinkan konek
ELSE
… tidak di ijinkan
END IF;
Contoh lain penggunaan security pada database oracle versi lebih lengkap
CREATE OR REPLACE TRIGGER SYS.BLOCK_TOOLS_FROM_PROD
AFTER LOGON
ON DATABASE
DECLARE
V_SID SYS.V_$SESSION.SID%TYPE;
V_SERIAL# SYS.V_$SESSION.SERIAL#%TYPE;
V_USERNAME SYS.V_$SESSION.USERNAME%TYPE;
V_MACHINE SYS.V_$SESSION.MACHINE%TYPE;
V_MODULE SYS.V_$SESSION.MODULE%TYPE;
V_PROGRAM SYS.V_$SESSION.PROGRAM%TYPE;
V_LOGON_TIME SYS.V_$SESSION.LOGON_TIME%TYPE;
V_COUNT INTEGER;
BEGIN
SELECT COUNT (SID)
INTO V_COUNT
FROM (SELECT SID,
SERIAL#,
USERNAME,
MACHINE,
MODULE,
PROGRAM,
LOGON_TIME
FROM V$SESSION
WHERE USERNAME IN (SELECT USERNAME
FROM DBA_USERS
WHERE PROFILE = 'APLIKASI_PROFILE')
AND ( ( ( UPPER (PROGRAM) LIKE '%W3WP%'
OR UPPER (PROGRAM) LIKE '%ORA%'
OR UPPER (PROGRAM) LIKE '%JDBC%'
OR UPPER (PROGRAM) LIKE '%HTTPD%'
OR UPPER (PROGRAM) LIKE '%PHP%'
OR UPPER (PROGRAM) LIKE '%APACHE%')
AND UPPER (MODULE) LIKE '%TOAD%')
OR ( ( UPPER (PROGRAM) LIKE '%W3WP%'
OR UPPER (PROGRAM) LIKE '%ORA%'
OR UPPER (PROGRAM) LIKE '%JDBC%'
OR UPPER (PROGRAM) LIKE '%HTTPD%'
OR UPPER (PROGRAM) LIKE '%PHP%'
OR UPPER (PROGRAM) LIKE '%APACHE%')
AND UPPER (MODULE) LIKE '%SQL%')
OR ( UPPER (PROGRAM) NOT LIKE '%W3WP%'
AND UPPER (PROGRAM) NOT LIKE '%ORA%'
AND UPPER (PROGRAM) NOT LIKE '%JDBC%'
AND UPPER (PROGRAM) NOT LIKE '%HTTPD%'
AND UPPER (PROGRAM) NOT LIKE '%PHP%'
AND UPPER (PROGRAM) NOT LIKE '%APACHE%'
OR MACHINE IN (SELECT DISTINCT MACHINE
FROM SYS.LOG_USER_APLIKASI))));
IF V_COUNT > 0
THEN
BEGIN
RAISE_APPLICATION_ERROR (
-20000,
'User Terminal Aplikasi Dilarang Login Menggunakan Development Tools !!!');
INSERT INTO SYS.LOG_LOGIN_USER_APLIKASI (SID,
SERIAL#,
USERNAME,
MACHINE,
MODULE,
PROGRAM,
LOGON_TIME)
VALUES (V_SID,
V_SERIAL#,
V_USERNAME,
V_MACHINE,
V_MODULE,
V_PROGRAM,
V_LOGON_TIME);
COMMIT;
END;
END IF;
END;
Sekian tutorial kali ini, semoga bermanfaat 🙂





