Melindungi Data PostgreSQL

10 Tip untuk Melindungi Data Anda dalam PostgreSQL

Written by Sushant Pawar

| Aug 19, 2020

6 MIN READ

Kehidupan seharian kita telah berubah dari biasa sejak kita memerangi Covid-19. Begitu juga dengan perniagaan. Kebanyakan perniagaan meminta pekerja mereka untuk bekerja dari rumah (WFH) bagi memastikan perniagaan masih berjalan dengan lancar. Sementara bekerja dari rumah adalah satu-satunya pilihan terbaik yang ada kini, kebimbangan perusahaan pula meningkat mengenai keselamatan data mereka. Kebanyakan organisasi yang sebelum ini yakin dengan keselamatan data mereka yang berada di pusat-pusat data tanpa boleh diakses oleh dunia luar, kini telah mula panik untuk membenarkan pekerja bekerja secara jarak jauh. Ini kerana ia boleh mendedahkan pangkalan data dan aplikasi mereka kepada pelbagai ancaman keselamatan. Oleh itu, adalah penting untuk bersedia menghadapi kemungkinan ancaman yang tidak dijangka. Kami sering menekankan kepada pelanggan kami akan amalan-amalan keselamatan yang terbaik. Adalah baik untuk melaksanakan keselamatan di peringkat pangkalan data dan aplikasi berbanding hanya bergantung kepada langkah-langkah keselamatan di peringkat infrastruktur sahaja seperti firewall, antivirus dan sebagainya. Ia memberi perlindungan tambahan daripada serangan siber dan kecurian data.
Postgres sebagai pangkalan data telah mendapat penerimaan yang meluas di dalam industri kerana keselamatannya. Ianya mematuhi kebanyakan standard keselamatan dan mempunyai sijil keselamatan kerajaan AS. Pangkalan data ini sendiri mempunyai beberapa keupayaan keselamatan yang terbina di dalamnya, dan di sini saya akan menjelaskan beberapa tip untuk melindungi data anda di dalam PostgreSQL dengan lebih baik:

1. Jangan biarkan sambungan pangkalan data terbuka bagi serangan orang tengah

Bagi melindungi akses pangkalan data Postgres, anda harus menghadkan akses hanya dari alamat IP server aplikasi menggunakan aplikasi pengguna pangkalan data khusus bagi server pangkalan data khusus kepada aplikasi berkenaan. Ini boleh dikawal menggunakan fail pg_hba.conf. Entri dalam fail pg_hba.conf adalah dalam format berikut:
connection type database user Client IP address authentication method.
# local DATABASE USER METHOD [OPTIONS]
# host DATABASE USER ADDRESS METHOD [OPTIONS]
# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
Dengan menggunakan jenis sambungan, anda boleh mengkhususkan samada server pangkalan data akan menerima sambungan setempat atau sambungan jarak jauh dan samada sambungan berkenaan adalah sambungan SSL atau sambungan teks biasa. Adalah penting bahawa trafik data di antara server aplikasi dan pangkalan data sentiasa dalam saluran tersulit dilindungi bagi mencegah serangan orang tengah. Postgres menyokong sambungan SSL yang memastikan komunikasi di antara klien dan pangkalan data adalah dalam saluran tersulit yang mana menyukarkan sambungan sniffing.

2. Elak menyatakan nama pengguna pangkalan data dalam fail config pg_hba

Walaupun ini nampak seperti langkah keselamatan kecil, tetapi apabila dilaksanakan, ia melindungi pangkalan data anda dari ancaman keselamatan dalam/luar. Server pangkalan data mungkin menjadi hos bagi beberapa pangkalan data yang melayan beberapa aplikasi, jadi adalah penting untuk akses pengguna aplikasi dihadkan hanya kepada pangkalan data aplikasi khusus. Dengan menggunakan nama pangkalan data spesifik dalam entri pg_hba, akses pengguna aplikasi adalah dihadkan kepada hanya pangkalan data aplikasi khusus.
Disebabkan entri dalam pg_hba.conf adalah dalam format teks biasa, DBA harus mengadakan kumpulan pengguna pangkalan data di peringkat pangkalan data dan menyatakan nama kumpulan dalam fail pg_hba, bukannya nama pengguna pangkalan data secara individu. Ini menjadikan entri pg_hba lebih selamat. Ini akan berfungsi sebagai lapisan perlindungan tambahan.
blog img1
Seperti yang anda boleh lihat dalam gambar skrin di atas, app_user, appuser1 adalah sebahagian daripada kumpulan app_group yang mempunyai akses ke pangkalan data db_test. Kini dalam fail pg_hba.conf, kita oleh nyatakan nama kumpulan berkenaan dan tidak perlu menyatakan semua individu pengguna yang harus mempunyai akses ke pangkalan data db_test.
blog img2
Entri ini akan membenarkan akses hanya kepada pengguna pangkalan data yang dibenarkan dan menjadikannya sukar untuk mengenalpasti pengguna berbeza mana yang ada dalam pangkalan data atau dibenarkan akses kepada aplikasi, hanya dengan melihat entri dalam config pg_hba. Jika seseorang mencuba untuk menyambung dengan pengguna test ke pangkalan data db_test, ia akan gagal kerana user test bukan sebahagian daripada app_group.
blog img3

3. Pilih algoritma penyulitan untuk kata laluan

Selain menggunakan md5, anda harus menggunakan kaedah pengesahan SCRAM yang lebih selamat kerana ia menyimpan tanda pagar kata laluan dalam utility “createuser” yang akan memaparkan kata laluan dalam format tersulit dalam log fail dan menyelamatkan anda dari pendedahan kata laluan yang tidak diingini.
Juga, apabila tiba masa untuk menyatakan kata laluan pengguna, anda harus menggunakan polisi kata laluan pengguna EnterpriseDB yang membolehkan anda menguatkan kata laluan tersebut.

4. Tetapkan akses berdasarkan Peranan untuk pengguna

Di peringkat pangkalan data, peranan dinyatakan terlebih dahulu dengan kebenaran yang sesuai menyediakan peringkat keselamatan tambahan kerana pengguna aplikasi atau admin hanya mempunyai keistimewaan yang diperlukan.
Peranan menjadikannya mudah untuk memberi atau membatalkan keistimewaan pada peringkat peranan daripada menguruskannya pada peringkat pengguna individu. Buat peranan berasingan untuk DBA dan pengguna aplikasi. Peringkat peranan aplikasi boleh disekat untuk hanya menguruskan akses tersebut bagi objek skema dan peranan DBA boleh mempunyai akses pentadbiran yang lebih terperinci. Peranan menjadikannya lebih mudah untuk mengesan akses yang diberi tanpa kebenaran kepada pengguna individu.

5. Jangan biarkan log pangkalan data mendedahkan maklumat berlebihan

Apabila ingin melindungi persekitaran anda, adalah sentiasa penting untuk anda mengikuti amalan-amalan standard bagi pentadbiran pangkalan data. Sebagai contoh, ianya adalah amalan biasa untuk mencipta pengguna pangkalan data menggunakan arahan PSQL “create user” seperti yang ditunjukkan di bawah. Jika log kenyataan telah diupayakan pada server pangkalan data, ini akan mengakibatkan kata laluan dipaparkan di dalam fail log. Anda boleh menetapkan standard proses membuat pengguna menggunakan pilihan lain, utiliti arahan OS “createuser” yang akan memaparkan kata laluan dalam format terlindung di dalam fail log dan ini menyelamatkan anda dari pendedahan kata laluan yang tidak diingini.
sushant blog img4

6. Menangani cabaran pg_crypto

Kerana Postgres telah menjadi pilihan pangkalan data bagi aplikasi kewangan kritikal, adalah penting untuk ianya menyediakan ciri-ciri penyulitan yang akan menyimpan maklumat sensitif dalam format tersulit. Di sini, fungsi pgcrypto menjadi penyelamat. Modul Pgcrypto menyediakan banyak fungsi untuk menyulitkan kata laluan anda atau untuk menyulitkan maklumat sensitif seperti # kad kredit atau # sosial sekuriti. Ia menyediakan fungsi penyulitan pgp yang selanjutnya menyediakan fungsi penyulitan simetrik dan asimetrik.
Kunci penyulitan disimpan dalam bahagian utama fungsi dan sesiapa yang mempunyai kebenaran untuk melaksanakannya boleh melihat kunci yang di simpan dalam fungsi berkenaan. Apabila ianya penting untuk melindungi logic perniagaan, fungsi perlindungan EDB* akan membantu kerana ia akan menyimpan bahagian utama fungsi dalam format mengelirukan dan melindungi fungsi dari ancaman dalaman.
sushant blog img6

7. Kekalkan aliran perniagaan yang mudah dan guna data yang dikurangkan untuk menyembunyi maklumat sensitif

Dalam beberapa kes tertentu, di sebalik menyulitkan data, adalah lebih penting untuk menghadkan pendedahan maklumat sensitif dalam table data. Ciri-ciri pengurangan data EnterpriseDB berfungsi baik bagi keperluan ini. Fungsi pengurangan data akan mengurangkan nilai lajur untuk pengguna berdasarkan pada polisi pengurangan seperti yang ditunjukkan dalam contoh di bawah.
sushant blog img7

8. Kawal akses ke baris table menggunakan keselamatan peringkat baris tanpa menggunakan logik penyulitan yang remeh

Jika niatnya adalah untuk mengawal pengguna mana yang boleh mempunyai akses ke baris yang mana di dalam table, anda harus menggunakan pakej EnterpriseDB dbms_rls untuk menjelaskan polisi keselamatan peringkat baris (RLS). Sebaik sahaja polisi RLS telah dinyatakan, semua transaksi DML yang seterusnya akan mematuhi polisi ini. Ciri ini sama dengan pangkalan data peribadi Virtual dan polisi boleh dinyatakan untuk mengawal pengguna mana yang mempunyai akses bagi baris di dalam table.

9. Perlindungan dari serangan suntikan SQL

Adalah penting untuk melindungi pangkalan data anda dari serangan suntikan SQL di mana penyerang akan mendapat akses ke data anda. Kadang-kadang penyerang akan cuba untuk menyuntik permintaan yang mungkin akan berkompromi dengan kesediaan server atau melakukan penafian serangan perkhidmatan. Untuk melindungi pangkalan data dari serangan seperti ini, EnterpriseDB Postgres menyediakan ciri perlindungan SQL yang melindungi pangkalan data menggunakan peranan yang dilindungi. Perlindungan SQL berfungsi dalam 3 peringkat perlindungan.
a) Dalam mod Pembelajaran, ia akan menjejak dan merekod semua aktiviti dengan peranan yang dilindungi dan hubungan yang diakses oleh peranan tersebut.
b) Jika ditetapkan dalam mod pasif, ia akan mula memantau kenyataan-kenyataan SQL dan akan menjana amaran jika terdapat perlaksanaan kenyataan-kenyataan SQL yang melanggar peraturan yang ditetapkan tetapi ia tidak akan menghentikan perlaksanaan kenyataan SQL tersebut. Ini boleh membantu dengan segera mengenalpasti sebarang perlaksanaan akses hubungan atau permintaan tanpa kebenaran.
c) Mod akhir sekali iaitu mod AKTIF tidak sama sekali akan membenarkan perlaksanaan permintaan tanpa kebenaran. Mod aktif akan melindungi pangkalan data dari serangan suntikan SQL.

10. Penyulitan tidak aktif

Penyulitan tidak aktif ialah satu tempat di mana komuniti Postgres berusaha untuk membangunkan keupayaan terbina buat masa ini, tetapi ini tidak seharusnya menghalang anda untuk mencuba atau menerokai alatan pihak ketiga untuk melindungi data anda. Terdapat banyak alatan pihak ketiga yang tersedia, masing-masing dengan kelebihan dan kekurangannya sendiri – agar anda boleh menganalisa dan melihat sendiri apa yang terbaik untuk anda.
Secara kesimpulannya, mengguna pelbagai teknik dan pilihan ini akan memastikan perlindungan yang lebih baik bagi kedudukan Porstgres anda. Saya telah cuba merangkumi ciri-ciri terbina yang tersedia sebagai sebahagian dari PostgreSQL dan EnterpriseDB Postgres. Anda tidak perlu merasa bimbang kerana terdapat banyak cara untuk anda melindungi data anda dalam PostgreSQL. Pakar kami pasti suka untuk membantu anda jika anda menghubungi kami di success@ashnik.com


Go to Top