Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan pgAudit untuk membuat log aktivitas basis data
Lembaga keuangan, lembaga pemerintah, dan banyak industri perlu menyimpan log audit untuk memenuhi persyaratan peraturan. Dengan menggunakan ekstensi PostgreSQL Audit (pgAudit) dengan klastier DB Aurora PostgreSQL, Anda dapat menangkap catatan terperinci yang biasanya dibutuhkan oleh auditor atau untuk memenuhi persyaratan peraturan. Misalnya, Anda dapat mengatur ekstensi pgAudit untuk melacak perubahan yang dibuat pada basis data dan tabel tertentu, untuk merekam pengguna yang membuat perubahan, dan banyak detail lainnya.
Ekstensi pgAudit dibangun di atas fungsionalitas infrastruktur pencatatan log PostgreSQL asli dengan memperluas pesan log dengan lebih detail. Dengan kata lain, Anda menggunakan pendekatan yang sama untuk melihat log audit Anda seperti yang Anda lakukan untuk melihat pesan log apa pun. Untuk informasi selengkapnya tentang pencatatan log PostgreSQL, lihat File log basis data Aurora PostgreSQL.
Ekstensi pgAudit menyunting data sensitif seperti kata sandi cleartext dari log. Jika klaster DB Aurora PostgreSQL Anda dikonfigurasi untuk mencatat pernyataan bahasa manipulasi data (DHTML) seperti yang dijelaskan dalam Mengaktifkan pencatatan log kueri untuk klaster DB Aurora PostgreSQL, Anda dapat menghindari masalah kata sandi cleartext dengan menggunakan ekstensi PostgreSQL Audit.
Anda dapat mengonfigurasi audit pada basis data instans Anda dengan tingkat kekhususan yang tinggi. Anda dapat mengaudit semua basis data dan semua pengguna. Atau, Anda dapat memilih untuk mengaudit hanya basis data tertentu, pengguna, dan objek lainnya. Anda juga dapat secara eksplisit mengecualikan pengguna dan basis data tertentu agar tidak diaudit. Untuk informasi selengkapnya, lihat Mengecualikan pengguna atau basis data dari pencatatan log audit.
Mengingat jumlah detail yang dapat ditangkap, kami menyarankan jika Anda menggunakan pgAudit, Anda memantau konsumsi penyimpanan Anda.
Ekstensi pgAudit didukung pada semua versi Aurora PostgreSQL yang tersedia. Untuk daftar versi pgAudit yang didukung oleh versi Aurora PostgreSQL, lihat versi ekstensi untuk Amazon Aurora PostgreSQL di Release Notes for Aurora PostgreSQL.
Topik
Menyiapkan ekstensi pgAdit
Untuk menyiapkan ekstensi pgAudit pada klaster DB Aurora PostgreSQL, Anda terlebih dahulu menambahkan pgAudit ke pustaka bersama pada grup parameter klaster DB khusus untuk klaster DB Aurora PostgreSQL Anda. Untuk informasi cara membuat grup grup parameter klaster DB, lihat Menggunakan grup parameter. Selanjutnya, Anda menginstal ekstensi pgAudit. Terakhir, Anda menentukan basis data dan objek yang ingin Anda audit. Prosedur di bagian ini menunjukkan caranya kepada Anda. Anda dapat menggunakan AWS Management Console atau AWS CLI.
Anda harus memiliki izin sebagai peran rds_superuser
untuk melakukan semua tugas ini.
Langkah-langkah berikut mengasumsikan bahwa klaster DB Aurora PostgreSQL Anda dikaitkan dengan grup parameter kluster DB khusus.
Mengatur ekstensi pgAudit
Masuk ke AWS Management Console lalu buka konsol Amazon RDS di https://console.aws.amazon.com/rds/
. -
Di panel navigasi, pilih Instans penulis klaster DB Aurora PostgreSQL Anda.
-
Buka tab Konfigurasi untuk instans penulis klaster DB Aurora PostgreSQL. Di antara detail Instans, temukan tautan Grup parameter.
-
Pilih tautan untuk membuka parameter kustom yang terkait dengan klaster DB Aurora PostgreSQL.
-
Di kolom pencarian Parameter, ketik
shared_pre
untuk menemukan parametershared_preload_libraries
. -
Pilih Edit parameter untuk mengakses nilai properti.
-
Tambahkan
pgaudit
ke daftar di kolom Nilai. Gunakan koma untuk memisahkan item dalam daftar nilai. Boot ulang instans penulis klaster DB Aurora PostgreSQL Anda sehingga perubahan Anda pada parameter
shared_preload_libraries
berlaku.Ketika instans tersedia, verifikasi bahwa pgAudit yang telah diinisialisasi. Gunakan
psql
untuk terhubung ke instans penulis klaster DB Aurora PostgreSQL, kemudian jalankan perintah berikut.SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
Dengan pgAudit yang diinisialisasi, Anda sekarang dapat membuat ekstensi. Anda perlu membuat ekstensi setelah menginisialisasi pustaka karena ekstensi
pgaudit
menginstal pemicu peristiwa untuk mengaudit pernyataan bahasa definisi data (DDL).CREATE EXTENSION pgaudit;
Tutup sesi
psql
.labdb=>
\q
Masuk ke AWS Management Console lalu buka konsol Amazon RDS di https://console.aws.amazon.com/rds/
. Temukan parameter
pgaudit.log
dalam daftar lalu atur ke nilai yang sesuai untuk kasus penggunaan Anda. Misalnya, menyetel parameterpgaudit.log
kewrite
seperti yang ditunjukkan pada gambar berikut menangkap sisipan, pembaruan, penghapusan, dan beberapa jenis lainnya yang berubah pada log.Anda juga dapat memilih salah satu nilai berikut untuk parameter
pgaudit.log
.none – Ini adalah default. Tidak ada perubahan basis data yang dibuat log.
semua – Semua dibuat log (baca, tulis, fungsi, peran, ddl, lain-lain).
ddl – Membuat log semua pernyataan bahasa definisi data (DDL) yang tidak disertakan dalam kelas
ROLE
.fungsi – Membuat log panggilan fungsi dan blok
DO
.lain-lain – Membuat log berbagai perintah, seperti
DISCARD
,FETCH
,CHECKPOINT
,VACUUM
, danSET
.baca – Membuat log
SELECT
danCOPY
saat sumbernya adalah relasi (seperti tabel) atau kueri.peran – Membuat log pernyataan yang terkait dengan peran dan hak istimewa, seperti
GRANT
,REVOKE
,CREATE ROLE
,ALTER ROLE
, danDROP ROLE
.write – Membuat log
INSERT
,UPDATE
,DELETE
,TRUNCATE
, danCOPY
ketika tujuan adalah relasi (tabel).
Pilih Simpan perubahan
Buka konsol Amazon RDS di https://console.aws.amazon.com/rds/
. Pilih instans penulis klaster DB Aurora PostgreSQL dari daftar Basis Data untuk memilihnya, lalu pilih Boot ulang dari menu Tindakan.
Menyiapkan pgAudit
Untuk mengatur PGAudit menggunakanAWS CLI, Anda memanggil modify-db-parameter-groupoperasi untuk mengubah parameter log audit di grup parameter kustom Anda, seperti yang ditunjukkan dalam prosedur berikut.
Gunakan perintah AWS CLI berikut untuk menambah
pgaudit
ke parametershared_preload_libraries
.aws rds modify-db-parameter-group \ --db-parameter-group-name
custom-param-group-name
\ --parameters "ParameterName=shared_preload_libraries,ParameterValue=pgaudit,ApplyMethod=pending-reboot" \ --regionaws-region
-
Gunakan perintah AWS CLI berikut untuk melakukan boot ulang instans penulis klaster DB Aurora PostgreSQL sehingga pustaka pgaudit dapat diinisialisasi.
aws rds reboot-db-instance \ --db-instance-identifier
writer-instance
\ --regionaws-region
Ketika instans tersedia, Anda dapat memverifikasi bahwa
pgaudit
telah diinisialisasi. Gunakanpsql
untuk terhubung ke instans penulis klaster DB Aurora PostgreSQL, kemudian jalankan perintah berikut.SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
Dengan pgAudit yang diinisialisasi, Anda sekarang dapat membuat ekstensi.
CREATE EXTENSION pgaudit;
Tutup sesi
psql
sehingga Anda dapat menggunakan AWS CLI.labdb=>
\q
Gunakan perintah AWS CLI berikut untuk menentukan kelas pernyataan yang ingin dibuat log oleh sesi audit pencatatan log. Contoh menetapkan parameter
pgaudit.log
kewrite
, yang menangkap sisipan, pembaruan, dan penghapusan ke log.aws rds modify-db-parameter-group \ --db-parameter-group-name
custom-param-group-name
\ --parameters "ParameterName=pgaudit.log,ParameterValue=write
,ApplyMethod=pending-reboot" \ --regionaws-region
Anda juga dapat memilih salah satu nilai berikut untuk parameter
pgaudit.log
.none – Ini adalah default. Tidak ada perubahan basis data yang dibuat log.
semua – Semua dibuat log (baca, tulis, fungsi, peran, ddl, lain-lain).
ddl – Membuat log semua pernyataan bahasa definisi data (DDL) yang tidak disertakan dalam kelas
ROLE
.fungsi – Membuat log panggilan fungsi dan blok
DO
.lain-lain – Membuat log berbagai perintah, seperti
DISCARD
,FETCH
,CHECKPOINT
,VACUUM
, danSET
.baca – Membuat log
SELECT
danCOPY
saat sumbernya adalah relasi (seperti tabel) atau kueri.peran – Membuat log pernyataan yang terkait dengan peran dan hak istimewa, seperti
GRANT
,REVOKE
,CREATE ROLE
,ALTER ROLE
, danDROP ROLE
.write – Membuat log
INSERT
,UPDATE
,DELETE
,TRUNCATE
, danCOPY
ketika tujuan adalah relasi (tabel).
Boot ulang instans penulis Aurora PostgreSQL DB klaster instans PostgreSQL DB menggunakan perintah berikut. AWS CLI
aws rds reboot-db-instance \ --db-instance-identifier
writer-instance
\ --regionaws-region
Audit objek basis data
Dengan pgAudit yang telah disiapkan di klaster DB Aurora PostgreSQL Anda dan dikonfigurasi untuk kebutuhan Anda, informasi lebih detail akan ditangkap dalam pembuatan log PostgreSQL. Misalnya, sementara konfigurasi pencatatan log PostgreSQL default mengidentifikasi tanggal dan waktu perubahan dibuat dalam tabel basis data, dengan ekstensi pgAudit entri log yang dapat menyertakan skema, pengguna yang membuat perubahan, dan detail lainnya tergantung pada bagaimana parameter ekstensi dikonfigurasi. Anda dapat menyiapkan audit untuk melacak perubahan dengan cara berikut ini.
Untuk setiap sesi, oleh pengguna. Untuk tingkat sesi, Anda dapat menangkap teks perintah yang sepenuhnya memenuhi syarat.
Untuk setiap objek, oleh pengguna dan basis data.
Kemampuan audit objek diaktifkan saat Anda membuat peran rds_pgaudit
pada sistem Anda lalu akan menambahkan peran ini ke parameter pgaudit.role
dalam grup parameter parameter khusus Anda. Secara default, parameter pgaudit.role
tidak disetel dan satu-satunya nilai yang diizinkan adalah rds_pgaudit
. Langkah-langkah berikut mengasumsikan bahwa pgaudit
telah diinisialisasi dan bahwa Anda telah membuat ekstensi pgaudit
dengan mengikuti prosedur di Menyiapkan ekstensi pgAdit.
![Gambar file log PostgreSQL setelah mengatur pgAudit.](images/pgaudit-log-example.png)
Seperti yang ditunjukkan dalam contoh ini, baris "LOG: AUDIT: SESSION" memberikan informasi tabel dan skemanya, di antara detail lainnya.
Menyiapkan audit objek
Gunakan
psql
untuk terhubung ke instans penulis klaster DB Aurora PostgreSQL.psql --host=
your-instance-name
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres
postgres --password --dbname=labdb
-
Buat peran basis data yang dinamai
rds_pgaudit
dengan menggunakan perintah berikut.labdb=>
CREATE ROLE rds_pgaudit;
CREATE ROLE
labdb=>
Tutup sesi
psql
.labdb=>
\q
Dalam beberapa langkah berikutnya, gunakan AWS CLI untuk memodifikasi parameter log audit di grup parameter khusus Anda.
-
Gunakan perintah AWS CLI berikut untuk mengatur parameter
pgaudit.role
kerds_pgaudit
. Secara default, parameter ini kosong, danrds_pgaudit
merupakan satu-satunya nilai yang diizinkan.aws rds modify-db-parameter-group \ --db-parameter-group-name
custom-param-group-name
\ --parameters "ParameterName=pgaudit.role,ParameterValue=rds_pgaudit,ApplyMethod=pending-reboot" \ --regionaws-region
-
Gunakan perintah AWS CLI berikut untuk melakukan boot ulang instans penulis klaster DB Aurora PostgreSQL sehingga perubahan Anda pada parameter berlaku.
aws rds reboot-db-instance \ --db-instance-identifier
writer-instance
\ --regionaws-region
Jalankan perintah berikut untuk mengonfirmasi bahwa
pgaudit.role
diatur kerds_pgaudit
.SHOW pgaudit.role;
pgaudit.role ------------------ rds_pgaudit
Untuk menguji pencatatan log pgAudit, Anda dapat menjalankan beberapa contoh perintah yang ingin Anda audit. Misalnya, Anda dapat menjalankan perintah berikut.
CREATE TABLE t1 (id int); GRANT SELECT ON t1 TO rds_pgaudit; SELECT * FROM t1;
id ---- (0 rows)
Log basis data harus berisi entri yang serupa dengan entri berikut.
...
2017-06-12 19:09:49 UTC:...:rds_test@postgres:[11701]:LOG: AUDIT:
OBJECT,1,1,READ,SELECT,TABLE,public.t1,select * from t1;
...
Untuk informasi tentang melihat log, lihat Memantau file log Amazon Aurora.
Untuk mempelajari lebih lanjut tentang ekstensi PGAudit, lihat PGAudit
Mengecualikan pengguna atau basis data dari pencatatan log audit
Seperti dibahas dalam File log basis data Aurora PostgreSQL, log PostgreSQL menghabiskan ruang penyimpanan. Menggunakan ekstensi pgAudit dapat menambah volume data yang dikumpulkan di log Anda ke berbagai tingkat, tergantung pada perubahan yang Anda lacak. Anda mungkin tidak perlu mengaudit setiap pengguna atau basis data di klaster DB Aurora PostgreSQL Anda.
Untuk meminimalkan dampak pada penyimpanan Anda dan untuk menghindari pengambilan catatan audit yang tidak perlu, Anda dapat mengecualikan pengguna dan basis data agar tidak diaudit. Anda juga dapat mengubah pencatatan log dalam sesi tertentu. Contoh berikut menunjukkan caranya kepada Anda.
catatan
Pengaturan parameter pada tingkat sesi lebih diutamakan daripada pengaturan dalam grup parameter klaster DB khusus untuk instans penulis klaster DB Aurora PostgreSQL. Jika Anda tidak ingin pengguna basis data melewati pengaturan konfigurasi pencatatan audit Anda, pastikan untuk mengubah izin mereka.
Misalkan klaster DB Aurora PostgreSQL Anda dikonfigurasi untuk mengaudit tingkat aktivitas yang sama untuk semua pengguna dan basis data. Anda kemudian memutuskan bahwa Anda tidak ingin mengaudit pengguna myuser
. Anda dapat mematikan audit myuser
dengan perintah SQL berikut.
ALTER USER myuser SET pgaudit.log TO 'NONE';
Kemudian, Anda dapat menggunakan kueri berikut untuk memeriksa kolom user_specific_settings
untuk pgaudit.log
agar mengonfirmasi bahwa parameter diatur ke NONE
.
SELECT usename AS user_name, useconfig AS user_specific_settings FROM pg_user WHERE usename = 'myuser';
Anda akan melihat output seperti berikut ini.
user_name | user_specific_settings
-----------+------------------------
myuser | {pgaudit.log=NONE}
(1 row)
Anda dapat mematikan pencatatan log untuk pengguna tertentu di tengah-tengah sesi mereka dengan basis data menggunakan perintah berikut.
ALTER USER myuser IN DATABASE mydatabase SET pgaudit.log TO 'none';
Gunakan kueri berikut untuk memeriksa kolom pengaturan untuk pgaudit.log untuk kombinasi pengguna dan basis data tertentu.
SELECT usename AS "user_name", datname AS "database_name", pg_catalog.array_to_string(setconfig, E'\n') AS "settings" FROM pg_catalog.pg_db_role_setting s LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase LEFT JOIN pg_catalog.pg_user r ON r.usesysid = setrole WHERE usename = 'myuser' AND datname = 'mydatabase' ORDER BY 1, 2;
Anda akan melihat output yang mirip dengan berikut ini.
user_name | database_name | settings
-----------+---------------+------------------
myuser | mydatabase | pgaudit.log=none
(1 row)
Setelah menonaktifkan audit myuser
, Anda memutuskan bahwa Anda tidak ingin melacak perubahan ke mydatabase
. Anda mematikan audit untuk basis data spesifik tersebut menggunakan perintah berikut.
ALTER DATABASE mydatabase SET pgaudit.log to 'NONE';
Kemudian, gunakan kueri berikut untuk memeriksa kolom database_specific_settings untuk mengonfirmasi bahwa pgaudit.log disetel ke NONE.
SELECT a.datname AS database_name, b.setconfig AS database_specific_settings FROM pg_database a FULL JOIN pg_db_role_setting b ON a.oid = b.setdatabase WHERE a.datname = 'mydatabase';
Anda akan melihat output seperti berikut ini.
database_name | database_specific_settings
---------------+----------------------------
mydatabase | {pgaudit.log=NONE}
(1 row)
Untuk mengembalikan pengaturan ke pengaturan default untuk myuser, gunakan perintah berikut:
ALTER USER myuser RESET pgaudit.log;
Untuk mengembalikan pengaturan ke pengaturan default untuk basis data, gunakan perintah berikut ini.
ALTER DATABASE mydatabase RESET pgaudit.log;
Untuk mengatur ulang pengguna dan basis data ke pengaturan default, gunakan perintah berikut.
ALTER USER myuser IN DATABASE mydatabase RESET pgaudit.log;
Anda juga dapat menangkap peristiwa tertentu ke log dengan menyetel pgaudit.log
ke salah satu nilai lain yang diizinkan untuk parameter pgaudit.log
. Untuk informasi selengkapnya, lihat Daftar pengaturan yang diizinkan untuk parameter pgaudit.log.
ALTER USER myuser SET pgaudit.log TO 'read'; ALTER DATABASE mydatabase SET pgaudit.log TO 'function'; ALTER USER myuser IN DATABASE mydatabase SET pgaudit.log TO 'read,function'
Referensi untuk ekstensi pgAudit
Anda dapat menentukan tingkat detail yang Anda inginkan untuk log audit Anda dengan mengubah satu atau beberapa parameter yang tercantum di bagian ini.
Mengatur perilaku pgAudit
Anda dapat mengontrol pencatatan audit dengan mengubah satu atau beberapa parameter yang tercantum dalam tabel berikut.
Parameter | Deskripsi |
---|---|
| Menentukan kelas pernyataan yang akan dicatat oleh sesi audit pencatatan log. Nilai yang diizinkan termasuk ddl, fungsi, misc, baca, peran, tulis, tidak ada, semua. Untuk informasi selengkapnya, lihat Daftar pengaturan yang diizinkan untuk parameter pgaudit.log. |
|
Saat diaktifkan (disetel ke 1), tambahkan pernyataan ke jejak audit jika semua relasi dalam pernyataan ada di pg_catalog. |
|
Menentukan tingkat log untuk digunakan untuk entri log. Nilai yang diizinkan: debug5, debug4, debug3, debug2, debug1, info, notifikasi, peringatan, log |
|
Ketika diaktifkan (diatur ke 1), parameter yang diteruskan dengan pernyataan ditangkap dalam log audit. |
|
Saat diaktifkan (disetel ke 1), log audit untuk sesi membuat entri log terpisah untuk setiap relasi (TABEL, TAMPILAN, dan sebagainya) yang direferensikan dalam pernyataan SELECT atau DML. |
|
Menentukan apakah pencatatan log akan mencakup teks pernyataan dan parameter dengan entri log pertama untuk kombinasi pernyataan/subpernyataan atau dengan setiap entri. |
|
Menentukan peran utama yang akan digunakan untuk pencatatan log audit objek. Satu-satunya entri yang diizinkan adalah |
Daftar pengaturan yang diizinkan untuk parameter pgaudit.log
Nilai | Deskripsi |
---|---|
tidak ada | Ini adalah default. Tidak ada perubahan basis data yang dibuat log. |
semua | Semuanya dibuat log (baca, tulis, fungsi, peran, ddl, misc). |
ddl | Membuat log semua pernyataan bahasa definisi data (DDL) yang tidak disertakan dalam kelas |
fungsi | Log berfungsi panggilan dan blok |
misc | Log berbagai perintah, seperti |
baca | Log |
peran | Log pernyataan yang terkait dengan peran dan hak istimewa, seperti |
tulis | Log |
Untuk mencatat beberapa jenis peristiwa dengan audit sesi, gunakan daftar yang dipisahkan koma. Untuk membuat log semua jenis acara, atur pgaudit.log
ke ALL
. Boot ulang instans DB Anda untuk menerapkan perubahan.
Dengan objek audit, Anda dapat memperbaiki pencatatan log audit untuk bekerja dengan relasi spesifik. Misalnya, Anda dapat menentukan bahwa Anda ingin pencatatan log audit untuk operasi READ
di satu tabel atau beberapa.