Topik ini menjelaskan pengauditan database Cloud SQL untuk MySQL dan Plugin Audit Cloud SQL untuk MySQL. Untuk menggunakan pengauditan database sekarang, lihat Menggunakan audit database MySQL.
Apa itu pengauditan database?
Pengauditan database memungkinkan Anda melacak tindakan pengguna tertentu dalam database, seperti update tabel, kueri yang telah baca, pemberian hak istimewa pengguna, dan lainnya. Pengauditan database berguna bagi organisasi yang memerlukan jejak aktivitas para penggunanya karena alasan keamanan atau untuk mematuhi berbagai peraturan keuangan, pemerintahan, dan ISO. Pengauditan database didukung untuk Cloud SQL untuk MySQL 5.7 dan 8.0.
Plugin Audit Cloud SQL untuk MySQL
Pengauditan database diaktifkan oleh Plugin Audit Cloud SQL untuk MySQL, atau
cloudsql_mysql_audit
. Plugin ini menggunakan
MySQL audit API
terbuka untuk memantau dan mencatat aktivitas di MySQL. Plugin mengirimkan log ke
log audit Akses Data Cloud Logging.
Log audit Akses Data dinonaktifkan secara default karena log audit dapat menjadi cukup
besar. Anda harus secara eksplisit mengaktifkan log
untuk menggunakan plugin.
Saat plugin aktif, aturan audit yang telah Anda buat akan diterapkan untuk membuat log audit untuk database. Saat plugin dinonaktifkan, tidak boleh ada log audit yang dibuat.
Untuk informasi selengkapnya tentang plugin MySQL, lihat Plugin MySQL Server.
Siapa yang menggunakan pengauditan database?
Ada tiga jenis pengguna yang terlibat dalam pengauditan database:
- Administrator - Pengguna yang mengelola database. Administrator adalah pengguna audit yang bertanggung jawab untuk mengaktifkan dan menonaktifkan pengauditan pada instance dan untuk membuat pengguna baru. Mereka juga memberikan izin pengauditan kepada auditor. Administrator juga dapat membuat, menghapus, dan memperbarui aturan audit.
- Auditors - Pengguna yang memiliki izin untuk membuat, menghapus, dan memperbarui aturan audit. Mereka diberikan akses oleh administrator.
- Clients - Pengguna yang aktivitasnya diaudit melalui aturan audit, tetapi tidak mengaudit pengguna dan tidak memiliki hak istimewa administratif atau pengauditan sendiri. Akses mereka diatur oleh administrator.
Administrator dan auditor juga disebut sebagai pengguna audit.
Aturan audit
Audit database menggunakan aturan audit untuk menentukan kombinasi pengguna, database, objek, operasi, dan status yang akan memicu pembuatan log audit. Aturan audit berisi informasi berikut:
- Id - ID aturan numerik otomatis. Setiap aturan audit memiliki ID audit yang otomatis ditetapkan saat aturan dibuat. ID audit tidak dapat diubah setelah dibuat.
- Nama pengguna - Daftar pengguna dan/atau pola karakter pengganti yang dipisahkan koma.
Anda dapat menggunakan tanda bintang (
*
) sebagai karakter pengganti untuk pengguna dan host. Gunakan tanda bintang sebagai akhiran, awalan, atau keduanya. Selain itu, pengguna dapat menggunakan karakter pengganti % hanya untuk host. Maksimumnya adalah 2048 karakter. - Dbname - Daftar nama database dan/atau pola karakter pengganti yang dipisahkan
koma. Anda dapat menggunakan tanda bintang (
*
) sebagai karakter pengganti untuk pengguna dan host. Gunakan tanda bintang sebagai akhiran, awalan, atau keduanya. Maksimum 2048 karakter. - Objek: Daftar yang dipisahkan koma berisi nama objek database (tabel, fungsi,
prosedur tersimpan, dll.) dan/atau pola karakter pengganti. Anda dapat menggunakan
tanda bintang (
*
) sebagai karakter pengganti untuk pengguna dan host. Gunakan tanda bintang sebagai akhiran, awalan, atau keduanya. Maksimum 2048 karakter. - Operasi - Daftar operasi database yang dipisahkan koma. Plugin ini
mendukung operasi grup (seperti DDL, DML, dll.), operasi tunggal (seperti
update, hapus, dll.), dan karakter pengganti (
*
) untuk semua operasi. Lihat Daftar lengkap operasi yang didukung. Plugin ini juga mendukung grup operasi yang dapat Anda gunakan untuk mengaudit sebuah grup operasi. Maksimum 2048 karakter. Op_result - Hasil operasi.
S
untuk mengaudit operasi yang berhasilU
untuk mengaudit operasi yang gagalB
untuk melacak operasi yang berhasil dan tidak berhasilE
untuk membuat aturan eksklusif
Jenis-jenis operasi
Jenis operasi merupakan beberapa jenis aktivitas atau operasi yang dapat Anda audit di database:
DQL
- Data yang telah dibaca dari database (yaitu, pernyataanSELECT
)DML
- Menambahkan, menghapus, atau mengubah dataDDL
- Membuat atau mengubah struktur objek database dalam databaseDCL
- Mengelola hak istimewa untuk pengguna di databaseShow
- Menjelaskan keberatan database atau memberikan status databaseCall
- Memanggil prosedur yang disimpan
Pertimbangan yang memengaruhi log audit
Cadangan
Ketika memulihkan instance dari cadangan atau pemulihan point-in-time (PITR), aturan audit juga melakukan roll back ke waktu pencadangan atau PITR. Hal ini terjadi karena aturan audit adalah bagian dari data yang disimpan dalam database, begitu juga target (pengguna dan objek) yang diaudit oleh aturan tersebut.
Replika baca
Aturan audit direplikasi secara otomatis dari instance utama ke replika bacanya. Pelanggan tidak dapat menambahkan, menghapus, atau mengubah aturan audit pada replika baca. Jika ingin mengubah aturan audit untuk replika, Anda perlu memperbarui aturan audit instance utama.
Jika memperbarui aturan log audit pada instance utama, Anda perlu memuat ulang aturan audit pada replika untuk memastikan aturan audit baru juga diperbarui pada replika baca. Perintah berikut memuat ulang aturan audit:
CALL mysql.cloudsql_reload_audit_rule(1)
Pengguna dapat mengaktifkan log audit pada replika secara terpisah dari instance utama. Setelah melakukan perubahan pada instance utama, Anda perlu menjalankan perintah memuat ulang atau memulai ulang instance replika agar aturan log audit menjadi efektif.
Ketersediaan database selama kegagalan log audit
Jika operasi audit gagal, Cloud SQL tidak akan menghentikan penyelesaian aktivitas database. Misalnya, saat instance kehabisan kapasitas disk dan Cloud SQL tidak dapat membuat log audit, database tetap memungkinkan pengguna menjalankan kueri baca, meskipun aktivitas ini biasanya akan menghasilkan log audit.
Instance hanya baca
Jika instance memiliki tanda read_only
yang ditetapkan ke true
, Anda tidak dapat menambahkan atau
memperbarui aturan audit karena aturan tersebut disimpan di tabel. Sebelum
membuat, memperbarui, atau menghapus aturan, Anda harus menghapus flag read_only
.
Batasan dan masalah umum
Menerapkan log biner
Plugin Audit Cloud SQL untuk MySQL tidak kompatibel dengan log biner pada instance.
Dalam kasus tertentu, jika Anda mencoba menerapkan log biner saat Plugin Audit Cloud SQL untuk MySQL diaktifkan, instance database dapat mengalami error.
Jika ingin menerapkan log biner menggunakan utilitas mysqlbinlog
, Anda harus
menonaktifkan pengauditan database terlebih dahulu dengan menetapkan cloudsql_mysql_audit=OFF
Kecepatan penyerapan log
Sebelum Cloud SQL mengirim log audit ke Cloud Logging, log audit tersebut akan ditulis sementara ke disk instance, menggunakan kapasitas disk. Log diupload ke Cloud Logging dan dihapus dari disk dengan kecepatan 4 MB per detik. Saat beban dari pembuatan log melebihi kecepatan upload, instance akan mengalami peningkatan penggunaan disk, yang dapat menyebabkan database Anda kehabisan disk dan error. Bahkan jika peningkatan penyimpanan disk otomatis diaktifkan, peningkatan penggunaan disk akan meningkatkan biaya.
Saat menggunakan fitur ini, sebaiknya Anda:
- Aktifkan peningkatan penyimpanan otomatis.
- Memantau penggunaan disk secara keseluruhan. Anda tidak dapat memantau muatan dari pembuatan log secara terpisah. Gunakan metrik cloudsql.googleapis.com/database/disk/utilization di Metrics explorer.
- Jika perlu, kurangi frekuensi pembuatan log dengan membatasi aktivitas database atau mengurangi audit.
Mengaudit operasi yang gagal
Jika aturan audit Anda menyertakan pengauditan untuk operasi yang gagal (op_result
di
ditetapkan ke U
untuk operasi yang gagal atau B
untuk operasi yang gagal dan
berhasil), beberapa pengguna mungkin dapat meningkatkan beban instance database Anda
yang berisi log audit dengan terus menjalankan operasi yang gagal. Jika
kecepatan pembuatan log melebihi kecepatan penyerapan log, penggunaan disk yang tidak diinginkan
dapat terjadi, sehingga ruang disk habis. Sebagai gantinya, ketika mengaudit operasi
yang gagal:
- Kontrol akses di tingkat instance.
- Siapkan sistem pemantauan atau pemberitahuan untuk peningkatan abnormal pada log operasi yang gagal.
Aturan audit
Anda tidak dapat membuat lebih dari total 1000 kombinasi aturan audit per instance
database. Kombinasi aturan audit adalah kumpulan unik dari pengguna, database, objek,
dan operasi. Misalnya, aturan audit mengaudit user1,user2
,
db1,db2
, table1,table2
,
select,delete
menghasilkan kombinasi 2 x 2 x 2 x 2 = 16.
Pembuatan atau pembaruan aturan audit akan gagal jika jumlah total kombinasi
aturan audit melebihi 1000.
Operasi yang tidak didukung
Saat ini operasi berikut tidak didukung.
Fungsi berikut tidak didukung, jika digunakan seperti yang dijelaskan:
- Dalam kueri
SELECT
denganUNION
,INTERSECT
, klausaWHERE
, kueri nested, subkueri, dll. - Dalam pernyataan
UPDATE
,DELETE
,INSERT
,REPLACE
.
Misalnya, jika Anda memiliki aturan audit untuk mengaudit objek
func1
, hal berikut tidak akan diaudit:SELECT func1() FROM table;
SELECT * FROM table WHERE a = func1();
SELECT func1() != 0;
SELECT func1() > 0;
SET @x = func1();
Fungsi yang dipanggil langsung oleh
SELECT
tanpa operator apa pun dan tanpa klausaWHERE
akan diaudit:SELECT func1();
SELECT db.func1();
- Dalam kueri
Pemfilteran menurut alamat IP tidak didukung untuk saat ini.
Langkah selanjutnya
- Pelajari cara menggunakan audit database MySQL.