Pengelogan audit di Azure Database for PostgreSQL - Server Fleksibel
BERLAKU UNTUK: Azure Database for PostgreSQL - Server Fleksibel
Pengelogan audit aktivitas database di server fleksibel Azure Database for PostgreSQL tersedia melalui ekstensi Audit PostgreSQL: pgAudit. pgAudit menyediakan sesi terperinci dan/atau pengelogan audit objek.
Jika Anda menginginkan log tingkat sumber daya Azure untuk operasi seperti komputasi dan penskalaan penyimpanan, lihat Log Aktivitas Azure.
Pertimbangan penggunaan
Secara default, pernyataan log pgAudit dikeluarkan bersama dengan pernyataan log reguler Anda menggunakan fasilitas pengelogan standar Postgres. Di server fleksibel Azure Database for PostgreSQL, Anda dapat mengonfigurasi semua log untuk dikirim ke penyimpanan Log Azure Monitor untuk analitik selanjutnya di Analitik Log. Jika Anda mengaktifkan pengelogan sumber daya Azure Monitor, log Anda akan dikirim secara otomatis (dalam format JSON) ke Azure Storage, Azure Event Hubs, dan/atau log Azure Monitor, bergantung pada pilihan Anda.
Untuk mempelajari cara menyiapkan pengelogan ke log Azure Storage, Azure Event Hubs, atau Azure Monitor, kunjungi bagian log sumber daya dari artikel log server.
Memasang pgAudit
Sebelum Anda dapat menginstal ekstensi pgAudit di server fleksibel Azure Database for PostgreSQL, Anda perlu mengizinkan-daftar ekstensi pgAudit untuk digunakan.
Menggunakan Portal Azure:
- Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
- Di bar samping, pilih Parameter Server.
- Cari parameter
azure.extensions
. - Pilih pgAudit sebagai ekstensi yang ingin Anda izinkan daftarnya.
Menggunakan Azure CLI:
Anda dapat menambahkan ekstensi ke daftar yang diizinkan melalui perintah set parameter CLI.
az postgres flexible-server parameter set --resource-group <your resource group> --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value pgAudit
Untuk memasang pgAudit, Anda perlu memasukkannya ke dalam pustaka bersama server yang dimuat sebelumnya. Perubahan pada parameter shared_preload_libraries
Postgres mengharuskan hidupkan ulang server berlaku. Anda dapat mengubah parameter menggunakan Portal Azure, Azure CLI, atau REST API.
Menggunakan Portal Azure:
Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
Di bar samping, pilih Parameter Server.
Cari parameter
shared_preload_libraries
.Pilih pgaudit.
Anda dapat memeriksa apakah pgaudit dimuat dalam shared_preload_libraries dengan menjalankan kueri berikut di psql:
show shared_preload_libraries;
Anda akan melihat pgaudit dalam hasil kueri yang akan mengembalikan shared_preload_libraries.
Koneksi ke server Anda menggunakan klien (seperti psql) dan aktifkan ekstensi pgAudit.
CREATE EXTENSION pgaudit;
Tip
Jika Anda melihat kesalahan, konfirmasikan bahwa Anda menghidupkan ulang server setelah menyimpan shared_preload_libraries
.
Pengaturan pgAudit
pgAudit memungkinkan Anda mengonfigurasi pengelogan audit sesi atau objek. Pengelogan audit sesi mengeluarkan log terperinci dari pernyataan yang dijalankan. Pengelogan audit objek adalah audit yang tercakup dalam relasi tertentu. Anda dapat memilih untuk menyiapkan satu atau kedua jenis pengelogan.
Setelah Anda mengaktifkan pgAudit, Anda dapat mengonfigurasi parameternya untuk memulai pencatatan. Untuk mengonfigurasikan pgAudit, Anda dapat mengikuti petunjuk di bawah ini. Menggunakan Portal Azure:
- Pilih server Azure Database for PostgreSQL Anda.
- Di bar samping, pilih Parameter Server.
- Cari parameter
pgaudit
. - Pilih parameter pengaturan yang sesuai untuk diedit. Misalnya untuk mulai mengatur pengelogan
pgaudit.log
keWRITE
- Klik tombol Simpan untuk menyimpan perubahan
Dokumentasi pgAudit memberikan definisi masing-masing parameter. Uji parameter terlebih dahulu dan konfirmasikan bahwa Anda mendapatkan perilaku yang diharapkan.
Catatan
Mengatur pgaudit.log_client
ke ON akan mengalihkan log ke proses klien (seperti psql) alih-alih ditulis ke file. Pengaturan ini umumnya harus dibiarkan nonaktif.
pgaudit.log_level
hanya diaktifkan ketika pgaudit.log_client
aktif.
Catatan
Di server pgaudit.log
fleksibel Azure Database for PostgreSQL tidak dapat diatur menggunakan pintasan tanda (minus) seperti yang -
dijelaskan dalam dokumentasi pgAudit. Semua kelas pernyataan yang diperlukan (READ, WRITE, dll) harus ditentukan secara individual.
Catatan
Jika Anda mengatur parameter log_statement ke DDL atau ALL, dan menjalankan perintah CREATE ROLE/USER ... WITH PASSWORD ... ;
atau ALTER ROLE/USER ... WITH PASSWORD ... ;
, maka PostgreSQL membuat entri di log PostgreSQL, tempat kata sandi dicatat dalam format teks yang jelas, yang dapat menyebabkan potensi risiko keamanan. Ini adalah perilaku yang diharapkan sesuai dengan desain mesin PostgreSQL. Namun, Anda dapat menggunakan ekstensi PGAudit dan mengatur parameter pgaudit.log='DDL'
di halaman parameter server, yang tidak merekam pernyataan CREATE/ALTER ROLE
apa pun di Log Postgres, tidak seperti pengaturan log_statement='DDL'
Postgres. Jika Anda perlu mencatat pernyataan ini, Anda dapat menambahkan pgaudit.log ='ROLE'
, yang mana saat pengelogan 'CREATE/ALTER ROLE'
akan mengedit kata sandi dari log.
Format log audit
Setiap entri audit ditunjukkan oleh AUDIT:
di dekat awal baris log. Format sisa entri dirinci dalam dokumentasi pgAudit.
Memulai
Untuk memulai dengan cepat, atur pgaudit.log
ke WRITE
, dan buka log Anda untuk meninjau output.
Melihat log audit
Cara mengakses log tergantung pada titik akhir yang Anda pilih. Untuk Azure Storage, lihat artikel akun penyimpanan log. Untuk Azure Event Hubs, lihat artikel mengalirkan log Azure.
Untuk Log Azure Monitor, log dikirim ke ruang kerja yang Anda pilih. Log Postgres menggunakan mode pengumpulan AzureDiagnostics, sehingga dapat dikueri dari tabel AzureDiagnostics. Bidang dalam tabel dijelaskan di bawah ini. Pelajari selengkapnya tentang kueri dan pemberitahuan dalam ringkasan Kueri Log Azure Monitor.
Anda dapat menggunakan kueri ini untuk memulai. Anda dapat mengonfigurasi peringatan berdasarkan kueri.
Cari semua entri pgAudit di log Postgres untuk server tertentu di hari terakhir
AzureDiagnostics
| where Resource =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"