Untuk alasan keamanan, pemakaian resource oleh user database perlu dibatasi. Selain itu, otorisasi (password) user juga perlu diperketat. Di database Oracle, pembatasan itu dilakukan oleh profile.
Berikut ini informasi profile (beserta parameter-patameternya) yang ada di database:
SQL> conn system SQL> SELECT * FROM DBA_PROFILES ORDER BY PROFILE,RESOURCE_TYPE; PROFILE RESOURCE_NAME RESOURCE LIMIT ---------- -------------------------------- -------- ---------- DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITED DEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED
Ketika kita membuat database, by default Oracle membuat profile dengan nama DEFAULT. Ketika kita membuat user tanpa menyebutkan profile-nya, maka user tersebut akan di-assign ke profile DEFAULT.
Membuat profile
Contoh membuat profile:
SQL> CREATE PROFILE profileku LIMIT SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL 3000 CONNECT_TIME 45 LOGICAL_READS_PER_SESSION DEFAULT LOGICAL_READS_PER_CALL 1000 PRIVATE_SGA 15K COMPOSITE_LIMIT 5000000;
Mengedit profile
Formatnya sama persis dengan CREATE profile, hanya ganti kata CREATE menjadi ALTER. Contoh:
SQL> ALTER PROFILE profileku LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10;
Assign profile ke user
Misalkan saya ingin melihat profile dari user TEST
SQL> select USERNAME,PROFILE from dba_users where USERNAME='TEST'; USERNAME PROFILE ------------------------------ ---------- TEST DEFAULT
Saya akan mengubah profile user TEST dari DEFAULT ke PROFILEKU
SQL> alter user test profile PROFILEKU;
Menghapus
Untuk menghapus profile PROFILEKU, gunakan perintah berikut:
SQL> drop profile PROFILEKU; ERROR at line 1: ORA-02382: profile PROFILEKU has users assigned, cannot drop without CASCADE
OO… Error. Profile PROFILEKU ada yang makai, yaitu user TEST. Kalau begitu tambahkan argument CASCADE:
SQL> drop profile PROFILEKU CASCADE;
Setelah profile dihapus, user yang di-assign ke profile tersebut akan dikembalikan ke profile DEFAULT.
Keterangan
Resource parameter:
- SESSIONS_PER_USER
Jumlah session paling banyak yang bisa digunakan secara bersamaan (concurrent).
- CPU_PER_SESSION
Maksimal CPU per session. Satuan: 10 ms (hundredth of seconds).
- CPU_PER_CALL
Maksimal CPU per call (parse, execute, atau fetch). Satuan: 10 ms (hundredths of seconds).
- CONNECT_TIME
Maksimal waktu untuk koneksi. Satuan: menit.
- IDLE_TIME
Maksimal waktu dalam status INACTIVE (idle). Satuan: menit.
- LOGICAL_READS_PER_SESSION
Maksimal block yang boleh dibaca per session, termasuk block dari memori dan disk. - LOGICAL_READS_PER_CALL
Maksimal block yang boleh dibaca per call (parse, execute, atau fetch). - PRIVATE_SGA
Maksimal memory untuk PRIVATE AREA. Hanya berlaku pada “shared server”. Satuan: bytes. - COMPOSITE_LIMIT
Total resource cost per session. Satuan: service. Dihitung dari jumlah CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, dan PRIVATE_SGA.Password Parameter:- FAILED_LOGIN_ATTEMPTS
Jumlah maksimal berapa kali salah login (password). Setelah mencapai FAILED_LOGIN_ATTEMPTS, user yang bersangkutan akan di-lock. - PASSWORD_LIFE_TIME
Umur password, dalam satuan hari. Password harus diganti sebelum mencapai PASSWORD_LIFE_TIME. - PASSWORD_GRACE_TIME (satuan: hari)
Bila setelah mencapai PASSWORD_LIFE_TIME, namun user masih belum mengubah passwordnya, maka user akan diberi peringatan selama PASSWORD_GRACE_TIME. Bila telah mencapai PASSWORD_GRACE_TIME namun user masih belum mengubah passwordnya, maka password akan expired dan tidak bisa digunakan untuk login. Bila PASSWORD_GRACE_TIME tidak disetting, maka nilainya UNLIMITED, artinya user akan tetap bisa login meskipun telah mencapai PASSWORD_LIFE_TIME. - PASSWORD_REUSE_TIME (satuan hari) dan PASSWORD_REUSE_MAX
Kedua parameter ini dipakai bersamaan. PASSWORD_REUSE_TIME menyatakan berapa hari (sejak password diganti) password boleh dipakai lagi. PASSWORD_REUSE_MAX menyatakan berapa kali password harus berubah (berganti) sebelum memakai password lama yang dulu pernah dipakai itu. - PASSWORD_LOCK_TIME (satuan hari)
Menyatakan berapa hari user akan di-lock setelah gagal login. - PASSWORD_VERIFY_FUNCTION
Refensi
- FAILED_LOGIN_ATTEMPTS
- Oracle® Database SQL Reference 10g Release 2 (10.2)
CREATE PROFILE
waaa,pembahasannya bagus banget, tapi aku cuma mudeng dikit2 aja…
gak begitu familiar dengan oracle seh, hehe..
lam kenal mas…
pak rohmat, saya mo tanya…. tutorial2 yang ada di sini… semuanay harus menggunakan login sebagai SYS ato SYSTEM ya pak??
Menggunakan user SYS bisa, SYSTEM bisa, user biasa yang punya privilege DBA juga bisa.
Halo. Saya cuma pengen ucapkan terima kasih kepada siapapun yang telah membangun web ini. Site ini adalah site terbaik yang membahas tentang oracle yang saya temukan. Sangat lengkap. Makasih banyak yaaa………
Info ini menarik untuk topik security database. thanks
pak bagaimana cara buat profil agar user anda hanya bisa login 3 kali,apabila lebih 3 kali maka pasword hrs di reset ulang ,,nok oracle
bantu menjawab mas menggunakan SESSIONS_PER_USER
create profile PR_Aku (nama profile) limit
SESSIONS_PER_USER 3;
tapi sebelum menggunakan profile kita harus pastikan Parameter Resource nya harus dalam keadaaan true
mengecek parameter resource
show parameter resource;
cara merubahnya
alter system set resource_limit = ‘true’ ;
setelah itu
alter user nama_user expire;
Pak Rohmat saya mau coba menawarkan pekerjaan mengenai security pada oracle
bisa hubungi email saya pak
major.ruft@gmail.com