Scroll untuk baca artikel
DatabaseOracle

Block User Production Via Tools Toad, SQL Developer, SQLPlus dll

169
×

Block User Production Via Tools Toad, SQL Developer, SQLPlus dll

Sebarkan artikel ini
oracle database plsql
oracle database plsql

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 🙂

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

Verified by MonsterInsights