Audit adalah persyaratan untuk banyak peraturan atau standar keamanan, seperti PCI - Industri Kartu Pembayaran, dan bahkan cara yang baik untuk menjaga data Anda seaman mungkin mengetahui apa yang terjadi di database Anda.
Dalam database PostgreSQL, pencatatan pernyataan dasar dapat disediakan oleh fasilitas pencatatan standar dengan log_statement =all. Ini dapat diterima untuk pemantauan dan penggunaan dasar lainnya tetapi tidak memberikan tingkat detail yang umumnya diperlukan untuk audit.
Di blog ini, kita akan melihat apa itu ekstensi pgAudit dan bagaimana menginstal dan menggunakannya di database PostgreSQL Anda menggunakan ClusterControl.
Apa itu pgAudit?
Ekstensi Audit PostgreSQL (pgAudit) menyediakan logging sesi dan objek audit yang mendetail melalui fasilitas logging PostgreSQL standar.
Tidak cukup hanya memiliki daftar semua operasi yang dilakukan terhadap database. Juga harus dimungkinkan untuk menemukan pernyataan tertentu yang menarik bagi auditor. Fasilitas logging standar menunjukkan apa yang diminta pengguna, sedangkan pgAudit berfokus pada detail tentang apa yang terjadi saat database memenuhi permintaan.
Mengaktifkan pgAudit dengan ClusterControl
Untuk contoh ini, kami akan menganggap Anda telah menginstal ClusterControl, dan ClusterControl mengelola database PostgreSQL Anda. Jika tidak, Anda dapat mengikuti posting blog ini untuk mengaktifkan dan menjalankannya dengan cara yang mudah, menggunakan ClusterControl.
UI ClusterControl
Dari versi ClusterControl 1.8.2, makan siang baru-baru ini, Anda dapat dengan mudah mengaktifkan plugin pgAudit dari UI ClusterControl. Untuk mengaktifkannya, buka ClusterControl -> Pilih Cluster PostgreSQL Anda -> Tab Keamanan -> Log Audit -> Aktifkan.
Anda harus menentukan peristiwa yang ingin Anda audit di PostgreSQL Anda gugus. PgAudit akan diaktifkan di semua node dan akan memerlukan layanan database restart untuk menginstalnya.
Acaranya bisa:
-
PERAN:Pernyataan terkait peran dan hak istimewa:HIBAH, cabut, BUAT/ALTER/DROP PERAN.
-
DDL:Semua DDL yang tidak termasuk dalam kelas ROLE.
-
MISC:Berbagai perintah, mis. BUANG, ANGKAT, CHECKPOINT, VAKUM, SET.
-
BACA:PILIH dan SALIN bila sumbernya adalah relasi atau kueri.
-
MENULIS:INSERT, UPDATE, DELETE, TRUNCATE, dan COPY bila tujuan adalah relasi.
-
FUNGSI:Panggilan fungsi dan blok DO.
-
SEMUA:Sertakan semua hal di atas.
Anda dapat memantau penginstalan pgAudit Anda di bagian Aktivitas ClusterControl.
Setelah selesai, Anda dapat memeriksa log pgAudit Anda di UI ClusterControl yang sama. Untuk ini, buka ClusterControl -> Pilih Cluster PostgreSQL Anda -> Tab Log -> Log Sistem.
Di sini, Anda akan menemukan semua informasi yang diperlukan untuk mengaudit database PostgreSQL Anda.
ClusterControl CLI
Daripada mengaktifkan pgAudit dari UI ClusterControl, opsi lain adalah menggunakan ClusterControl CLI untuk melakukan pekerjaan itu. Untuk ini, Anda dapat menjalankan perintah berikut dari server ClusterControl Anda:
$ s9s cluster --setup-audit-logging --cluster-id=ID
Di mana ID adalah id cluster PostgreSQL.
Saat sedang berjalan, Anda dapat memantau statusnya dengan memeriksa tugas ClusterControl. Pertama, Anda memerlukan id pekerjaan, yang bisa Anda dapatkan dari daftar pekerjaan:
$ s9s job --list
1600 48 RUNNING test_dba admins 18:49:36 90% Setup Audit Logging
Sekarang, periksa detail pekerjaan:
$ s9s job --log --job-id=1600
Using SSH credentials from cluster.
Cluster ID is 48.
The username is 'root'.]
10.10.10.139:5432: Configuring audit logging.
10.10.10.139:5432: Installing 'pgaudit15_13'.
10.10.10.139: Installing pgaudit15_13.
10.10.10.139:5432: Setting pgaudit.log to ROLE,DDL,MISC.
Writing file '10.10.10.139:/var/lib/pgsql/13/data/postgresql.conf'.
10.10.10.139:5432: Restarting PostgreSQL node.
10.10.10.139: waiting for server to shut down.... done
server stopped
waiting for server to start....2021-03-24 18:49:43.468 UTC [16098] LOG: pgaudit extension initialized
2021-03-24 18:49:43.505 UTC [16098] LOG: redirecting log output to logging collector process
2021-03-24 18:49:43.505 UTC [16098] HINT: Future log output will appear in directory "log".
done
server started
10.10.10.139:5432: Waiting for node to be accessible.
10.10.10.139:5432: pgaudit 1.5.0 is enabled.
Tindakan ini akan memerlukan restart layanan database yang akan dilakukan oleh ClusterControl dalam tugas yang sama. Setelah memulai ulang, ekstensi pgAudit diaktifkan dan siap digunakan:
postgres=# SELECT * FROM pg_available_extensions WHERE name LIKE '%audit%';
name | default_version | installed_version | comment
---------+-----------------+-------------------+---------------------------------
pgaudit | 1.5 | 1.5 | provides auditing functionality
(1 row)
Kesimpulan
Audit diperlukan untuk banyak peraturan keamanan. Ini digunakan untuk mengetahui apa yang terjadi pada database Anda, kapan itu terjadi, dan siapa yang bertanggung jawab atas hal itu.
Di blog ini, kami membahas tentang ekstensi PostgreSQL pgAudit sebagai cara yang baik untuk mengaudit database PostgreSQL Anda. Kami juga menunjukkan cara mengimplementasikannya dengan cepat dengan ClusterControl dari UI dan menggunakan ClusterControl CLI.
Perlu diingat bahwa, bergantung pada konfigurasinya, pgAudit dapat menghasilkan volume data yang sangat besar. Jadi, Anda harus berhati-hati dalam menentukan apa yang perlu diaudit dan untuk berapa lama.