TM 11 (Keamanan Database Oracle Fix)
By: Arif Basofii Keamanan Database Oracle
Topik
- Menerapkan keutamaan tentang hak akses
- Mengatur user yang ada
- Menerapkan fungsi keamanan standard password
- Mengaudit aktivitas database
Industry Security Requirements
Security industri Oracle menerapkan:
- Legal: (dukungan lembaga luar)
- – Sarbanes-Oxley Act (SOX)
- – Health Information Portability and Accountability Act (HIPAA)
- – California Breach Law
- – UK Data Protection Act
- Auditing
Menerapkan auditing dengan membedakan antara user biasa dan admin. (mana yg berhak/mana yg tidak)
Separation of Responsibilities
- User dengan privilege DBA harus terpercaya
- – Tidak boleh adanya penyalahgunaan kepercayaan
- – Adanya audit trails untuk mengecek hasil auditnya
- Tanggung jawab DBA harus di share (tidak terpusat pd 1 orang, tp beberapa DBA)
- Accounts tidak pernah di share.
DBA dan system administrator harus orang yang berbeda.
- Memisahkan antara tanggung jawab operator dan DBA.
Database Security
Ada 3 hal dalam keamana Database Oracle:
1. Membatasi akses ke data dan servis
2. Otentikasi users
3. Monitoring aktivitas yang mencurigakan
Artinya: setiap orang jangan diberikan privilege yg berlebihan, tp diberikan privilege secukupnya.
(1) Membatasi akses ke data dan servis: Principle of Least Privilege
Tindakan Prosedur:
- Install software yang dibutuhkan saja
- Aktifkan servis-servis yg dibutuhkan saja
- Berikan akses database dan OS pada orang-orang yg berhak
- Batasi akses ke account root atau administrator
- Batasi akses untuk penggunaan account SYSDBA dan SYSOPER
- Batasi akses user ke database objek tertentu yg berhubungan dgn pekerjaanya, jd jangan biarkan user dpt mengakses pada seluruh objek.
(1) Membatasi akses ke data dan servis:
Applying the Principle of Least Privilege 2) Proteksi data dictionary:O7_DICTIONARY_ACCESSIBILITY=FALSE
- – Bentuk data dictionary: table &view
- – Yg bisa lihat table: sys (krn yg punya)
- – Bagaimana jika sys memberikan hak agar dpt di-select org lain? (boleh tidak? Ex: privilege : select any table)
- – Maka, perlu di proteksi by parameter.
3) Mencabut privileges yg tidak diperlukan dari PUBLIC:
REVOKE EXECUTE ON UTL_SMTP, UTL_TCP, UTL_HTTP,
UTL_FILE FROM PUBLIC;4) Membatasi akses direktori oleh users.
- – Jika memiliki objek direktori jangan sembarang memberikan grant read/write.
(1) Membatasi akses ke data dan servis: Applying the Principle of Least Privilege (con’t) 5) Membatasi user dgn privilege administrative.
- – Otentifikasi ada 3: password, external, global
- – Yang harus dipikir: external
- – Agar user tidak bisa login by external, maka diset parameter. keluar di ujian, apa artinya : False? / True?
REMOTE_OS_AUTHENT=FALSE TRUE : berarti tanpa password, Why?
Krn diwakili saat login OS.
(BAHAYA!)
(2) Otentikasi Users:
Monitoring aktivitas yang Mencurigakan (Suspicious Activity)
- Otentikasi user menggunakan: global bagus.
- Monitoring atau auditing aktivitas user yang mencurigakan
dengan melakukan:
1) Mandatory auditing
- – paling ringan, jarang digunakan
2) Standard database auditing
- – Pada level database
3) Value-based auditing
- – menggunakan trigger PL/SQL
4) Fine-grained auditing (FGA)
- – menggunakan package
5) DBA auditing bagaimana kita mengaudit DBA,
terutama sysdba dan sysoper, yg bisa bekerja saat sistemnya / instance shutdown.
Standard Database Auditing
(kadang disebut juga standar auditing)
Standard Database Auditing (kadang disebut juga standar auditing) – con’t
- Untuk mengaktifkan standar database auditing, sudah disediakan oleh sistem Oracle.
Dengan cara pengaktifkan melalui setting parameter pada file: audit_trail.
- 1
- – Di versi 1, audit trail ada 3 demand (permintaan): none, OS, DB.
- – Di versi 2, audit trail ada tambahan: XML, dll.
- Audit_trail adalah tempat penyimpanan hasil audit.
- Tempat penyimpanannya, bisa di:OS, di dlm DB atau di file XML.
Standard Database Auditing
(kadang disebut juga standar auditing)- – con’t
Apa saja yang harus di audit, dapat di setting pada audit
optionnya, lalu sistem akan melacak dalam server process.
- 2
ingat saat user terkoneksi user dibuatkan server process)
(
!
- Jadi, ketika ada user yg melakukan aktivitas mencurigakan , maka langsung di audit, dan hasilnya pasti disimpan dalam audit_trail (penyimpanannya: OS, XML, DB)
pada data dictionary : Tabel aslinya: AUD$
- – Jadi, siapa saja yg menghapus data didalam AUD$, akan selalu diaudit.
- – Meskipun data dlm AUD$ dihapus, nama pelaku akan tetap muncul/tercatat.
3
- Setelah itu DBA dapat melihat hasil informasi auditnya.
- Dan tindakan selanjutnya me-maintain audit trail.
4
Enabling Auditing
ALTER SYSTEM SET audit_trail=“XML” SCOPE=SPFILE;
- Untuk meng-enable: set di parameter file.
- Cari audit_trail dan set nilai.
- Restart database setelah modifikasi static initialization parameter.
Uniform Audit Trails
Gunakan AUDIT_TRAIL untuk meng-enable database auditing
- Dari beberapa jenis audit, masing2 hasil audit akan di simpan pada audit_trail.
- Jenis audit FGA, yg paling kompleks: entry id, nomor instance, bahkan text perintah SQL-nya.
Lalu untuk melihat audit trail-nya melalui DBA_AUDIT_TRAIL (table asli: aud$).
- Sedang yg FGA, dilihat melalui DBA_FGA_AUDIT_TRAIL.
- Bisa juga melihat pada DBA_COMMON_AUDIT_TRAIL.
Enterprise Manager Audit Page
- Setelah meng-enable auditing melalui parameter
- Selanjutnya audit option dibuat (apa yg harus diaudit)
Specifying Audit Options
Akan audit spt: Di audit selama 1 session, 1) SQL statement auditing: create table, alter sampai logout table
AUDIT table;
2) System-privilege auditing (nonfocused and focused): AUDIT select any table, create any trigger; AUDIT select any table BY hr BY SESSION;
3) Object-privilege auditing (nonfocused and focused): AUDIT ALL on hr.employees; AUDIT UPDATE,DELETE on hr.employees BY ACCESS;
Setiap di akses selalu diaudit
Using and Maintaining Audit Information Disable audit options if you are not using them.
Value-Based Auditing Menggunakan trigger
- Kelebihan trigger bisa mendapatkan: data sebelum dan sesudah berubah.
- berubah spt apa. Artinya: ketika melakukan auditing, kita bisa mendapatkan data sebelum berubah spt apa & data setelah
- Trigger akan dijalankan scr otomatis pd table. (misal. User melakukan perubahan table (update/delete) mk
- trigger akan jalan dan data dlm table data lama akan diambil bahkan dpt mengambil data baru) Didalam trigger ada recreate AS NEW & ALL (ALL utk ambil data lama/original, NEW mengambil data baru)
- Lalu disimpan dlm audit_trail (bukan pd db audit_trail), tp dibuat sendiri.
- Informasi apa yg disimpan? Tergantung programmer/yg buat trigger. >digunakan. Bahkan dgn trigger bisa mendapatkan: data sebelum & setelah berubah, IP address, terminal, s/w apa yg
Fine-Grained Auditing
- Memonitor akses data
- Biasanya meng-audit ketika user melakukan operasi DML (SELECT, INSERT, UPDATE, DELETE, and MERGE)
- 2 Bisa di-link utk audit table, view or per-masing kolom.
- Bisa menjalankan procedure
- Utk menjalankannya menggunakan paket DBMS_FGA, disini memakai disebut policy (sbg nama auditnya).
FGA Policy
- Menentukan dahulu:
- – Audit criteria
- – Audit action
- Dibentuk dgn membuat:
Ke-duanya harus terpenuhi Select * from employees; Di-audit tidak?
- ADD_POLICY adalah procedure.
- Objek skema: HR (yg diaudit), …dst.
- Handle skema & module: menyatakan lokasi procedure
- procedurenya: “log_emps_salary”, adanya didlm skema “secure”
- Statement_type yg akan diaudit, bisa lebih dari 1 tp tanpa koma (,).
Audited DML Statement: Considerations
- Meng-audit perintah DML
- Me-Records yg ada didlm kolom dan kondisi.
- DELETE akan diaudit berdasar kolom
MERGE diaudit dlm hubungannya dgn INSERT dan
UPDATE .
FGA Guidelines (wajib dibaca)
- Untuk audit semua statement, gunakan kondisi null.
- Nama policy harus unik
- Table/view yg diaudit harus sudah ada ketika membuat policy.
- Jika kondisi audit tdk valid muncul error ORA-28112.
- Jika kolom yg diaudit tdk ada, maka tdk ada baris yg diaudit.
- Jika event handler tdk ada, mk tdk ada error yg dikembalikan dan audit record tetap dibuat.
DBA Auditing
- DBA Auditing: sebenarnya meng-audit user SYSDBA atau
SYSOPER yg bekerja ketika instance-nya down, dan bisa
koneksi saat database closed. - Untuk Audit_trail harus disimpan diluar database (minimal OS/XML).
- Utk mengaktifkan auditing SYSDBA or SYSOPER, gunakan
audit_sys_operations dengan men-set parameter menjadi: TRUE.
- Hasil audit trail, jk disimpan dlm OS (diluar db) file disimpan dlm audit_file_dest.
Maintaining the Audit Trail Audit trail harus dimaintain, karena makin lama makin besar.
Berikut cara terbaik:
2
Review dan simpan record yg lama.- Mencegah problem storage.
- Menghindari kehilangan record data.
Applying Security Patches
- Use the Critical Patch Update process.
- Apply all security patches and workarounds.
- Contact the Oracle security products team.
Ringkasan
Pada bab ini, Anda seharusnya telah mempelajari bagaimana cara untuk:
- Menerapkan prinsip-prinsip hak akses
- Manajemen user account default
- Menerapkan standard keamanan standard
- Mengaudit aktivitas database
Latihan 1
Tugas :
- Mencegah penggunaan password yang sederhana
- Kemampuan account untuk mengunci dalam waktu 10 menit ketika terjadi kesalahan login
- Membebaskan aplikasi login server dari perubahan password
- Kegagalan audit untuk koneksi ke database
Latihan 2
Tugas :
- Audit SELECT pada kolom SALARY pada tabel EMPLOYEES
- Audit perubahan pada kolom SALARY dari tabel EMPLOYEES:
- – Nilai lama
- – Nilai baru
- – User yang membuat perubahan
- – Lokasi mana yang telah diubah dari yang dibuat